Ticket #896: aptsource_rawurl.patch

File aptsource_rawurl.patch, 3.5 KB (added by Remi Broemeling <[email protected]…>, 13 years ago)

Initial implementation of <RawURL>...</RawURL> support for APTSource.

  • src/lib/Server/Plugins/Packages.py

     
    384384                 rawurl, blacklist, recommended): 
    385385        Source.__init__(self, basepath, url, version, arches, components, groups, 
    386386                        rawurl, blacklist, recommended) 
    387         self.cachefile = self.escape_url(self.url + '@' + version) + '.data' 
     387        if not self.rawurl: 
     388            self.cachefile = self.escape_url(self.url + '@' + self.version) + '.data' 
     389        else: 
     390            self.cachefile = self.escape_url(self.rawurl) + '.data' 
    388391        self.pkgnames = set() 
    389392 
    390393    def save_state(self): 
     
    398401        self.pkgnames, self.deps, self.provides = cPickle.load(data) 
    399402 
    400403    def get_urls(self): 
    401         return ["%sdists/%s/%s/binary-%s/Packages.gz" % \ 
    402                 (self.url, self.version, part, arch) for part in self.components \ 
    403                 for arch in self.arches] 
     404        if not self.rawurl: 
     405            return ["%sdists/%s/%s/binary-%s/Packages.gz" % \ 
     406                    (self.url, self.version, part, arch) for part in self.components \ 
     407                    for arch in self.arches] 
     408        else: 
     409            return ["%sPackages.gz" % (self.rawurl)] 
    404410    urls = property(get_urls) 
    405411 
    406     def get_aptsrc(self): 
    407         return ["deb %s %s %s" % (self.url, self.version, 
    408                                   " ".join(self.components)), 
    409                 "deb-src %s %s %s" % (self.url, self.version, 
    410                                       " ".join(self.components))] 
    411  
    412412    def read_files(self): 
    413413        bdeps = dict() 
    414414        bprov = dict() 
     
    417417        else: 
    418418            depfnames = ['Depends', 'Pre-Depends']             
    419419        for fname in self.files: 
    420             barch = [x for x in fname.split('@') if x.startswith('binary-')][0][7:] 
     420            if not self.rawurl: 
     421                barch = [x for x in fname.split('@') if x.startswith('binary-')][0][7:] 
     422            else: 
     423                # RawURL entries assume that they only have one <Arch></Arch> 
     424                # element and that it is the architecture of the source. 
     425                barch = self.arches[0] 
    421426            if barch not in bdeps: 
    422427                bdeps[barch] = dict() 
    423428                bprov[barch] = dict() 
  • doc/server/plugins/generators/packages.txt

     
    147147      </YUMSource> 
    148148    </Sources> 
    149149 
    150 .. note:: There is also a RawURL syntax for specifying sources that 
     150.. note:: There is also a RawURL syntax for specifying APT or YUM sources that 
    151151          don't follow the conventional layout: 
    152152 
    153153          .. code-block:: xml 
     
    171171                </YUMSource> 
    172172              </Sources> 
    173173 
     174          .. code-block:: xml 
    174175 
     176              <Sources> 
     177                <APTSource> 
     178                  <Group>ubuntu-lucid</Group> 
     179                  <RawURL>http://hudson-ci.org/debian/binary</RawURL> 
     180                  <Arch>amd64</Arch> 
     181                </APTSource> 
     182                <APTSource> 
     183                  <Group>ubuntu-lucid</Group> 
     184                  <RawURL>http://hudson-ci.org/debian/binary</RawURL> 
     185                  <Arch>i386</Arch> 
     186                </APTSource> 
     187              </Sources> 
     188 
    175189Configuration Updates 
    176190===================== 
    177191