X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;ds=sidebyside;f=dak%2Fgenerate_packages_sources.py;h=07a64b6e823ee02610be52fecd34e0a8114bc40e;hb=5695f314e1475062e890011149da48f87ff9751e;hp=08940c7858944992ebba36641fbb207ddb123e05;hpb=68300ce743acaae9fd3ea129d86ebe2b75cfb47a;p=dak.git diff --git a/dak/generate_packages_sources.py b/dak/generate_packages_sources.py index 08940c78..07a64b6e 100755 --- a/dak/generate_packages_sources.py +++ b/dak/generate_packages_sources.py @@ -31,7 +31,7 @@ import sys import apt_pkg from tempfile import mkstemp, mkdtemp import commands -from multiprocessing import Pool +from multiprocessing import Pool, TimeoutError from daklib import daklog from daklib.dbconn import * @@ -111,19 +111,34 @@ tree "dists/testing" SourceFileList "/srv/ftp-master.debian.org/database/dists/testing_$(SECTION)_source.list"; Sections "main contrib non-free"; Architectures "%(arch)s"; + BinOverride "override.wheezy.$(SECTION)"; + ExtraOverride "override.wheezy.extra.$(SECTION)"; + SrcOverride "override.wheezy.$(SECTION).src"; +}; +""" + + apt_trees["squeeze-updates"]=""" +tree "dists/squeeze-updates" +{ + FileList "/srv/ftp-master.debian.org/database/dists/squeeze-updates_$(SECTION)_binary-$(ARCH).list"; + SourceFileList "/srv/ftp-master.debian.org/database/dists/squeeze-updates_$(SECTION)_source.list"; + Sections "main contrib non-free"; + Architectures "%(arch)s"; BinOverride "override.squeeze.$(SECTION)"; ExtraOverride "override.squeeze.extra.$(SECTION)"; SrcOverride "override.squeeze.$(SECTION).src"; + Contents " "; }; """ + apt_trees["di"]["testing"]=""" tree "dists/testing/main" { FileList "/srv/ftp-master.debian.org/database/dists/testing_main_$(SECTION)_binary-$(ARCH).list"; Sections "debian-installer"; Architectures "%(arch)s"; - BinOverride "override.squeeze.main.$(SECTION)"; - SrcOverride "override.squeeze.main.src"; + BinOverride "override.wheezy.main.$(SECTION)"; + SrcOverride "override.wheezy.main.src"; BinCacheDB "packages-debian-installer-$(ARCH).db"; Packages::Extensions ".udeb"; %(contentsline)s @@ -134,8 +149,8 @@ tree "dists/testing/non-free" FileList "/srv/ftp-master.debian.org/database/dists/testing_non-free_$(SECTION)_binary-$(ARCH).list"; Sections "debian-installer"; Architectures "%(arch)s"; - BinOverride "override.squeeze.main.$(SECTION)"; - SrcOverride "override.squeeze.main.src"; + BinOverride "override.wheezy.main.$(SECTION)"; + SrcOverride "override.wheezy.main.src"; BinCacheDB "packages-debian-installer-$(ARCH).db"; Packages::Extensions ".udeb"; %(contentsline)s @@ -224,9 +239,9 @@ tree "dists/testing-proposed-updates" SourceFileList "/srv/ftp-master.debian.org/database/dists/testing-proposed-updates_$(SECTION)_source.list"; Sections "main contrib non-free"; Architectures "%(arch)s"; - BinOverride "override.squeeze.$(SECTION)"; - ExtraOverride "override.squeeze.extra.$(SECTION)"; - SrcOverride "override.squeeze.$(SECTION).src"; + BinOverride "override.wheezy.$(SECTION)"; + ExtraOverride "override.wheezy.extra.$(SECTION)"; + SrcOverride "override.wheezy.$(SECTION).src"; Contents " "; }; """ @@ -236,8 +251,8 @@ tree "dists/testing-proposed-updates/main" FileList "/srv/ftp-master.debian.org/database/dists/testing-proposed-updates_main_$(SECTION)_binary-$(ARCH).list"; Sections "debian-installer"; Architectures "%(arch)s"; - BinOverride "override.squeeze.main.$(SECTION)"; - SrcOverride "override.squeeze.main.src"; + BinOverride "override.wheezy.main.$(SECTION)"; + SrcOverride "override.wheezy.main.src"; BinCacheDB "packages-debian-installer-$(ARCH).db"; Packages::Extensions ".udeb"; Contents " "; @@ -251,9 +266,9 @@ tree "dists/proposed-updates" SourceFileList "/srv/ftp-master.debian.org/database/dists/proposed-updates_$(SECTION)_source.list"; Sections "main contrib non-free"; Architectures "%(arch)s"; - BinOverride "override.lenny.$(SECTION)"; - ExtraOverride "override.lenny.extra.$(SECTION)"; - SrcOverride "override.lenny.$(SECTION).src"; + BinOverride "override.squeeze.$(SECTION)"; + ExtraOverride "override.squeeze.extra.$(SECTION)"; + SrcOverride "override.squeeze.$(SECTION).src"; Contents " "; }; """ @@ -263,6 +278,32 @@ tree "dists/proposed-updates/main" FileList "/srv/ftp-master.debian.org/database/dists/proposed-updates_main_$(SECTION)_binary-$(ARCH).list"; Sections "debian-installer"; Architectures "%(arch)s"; + BinOverride "override.squeeze.main.$(SECTION)"; + SrcOverride "override.squeeze.main.src"; + BinCacheDB "packages-debian-installer-$(ARCH).db"; + Packages::Extensions ".udeb"; + Contents " "; +}; +""" + apt_trees["oldstable-proposed-updates"]=""" +tree "dists/oldstable-proposed-updates" +{ + FileList "/srv/ftp-master.debian.org/database/dists/oldstable-proposed-updates_$(SECTION)_binary-$(ARCH).list"; + SourceFileList "/srv/ftp-master.debian.org/database/dists/oldstable-proposed-updates_$(SECTION)_source.list"; + Sections "main contrib non-free"; + Architectures "%(arch)s"; + BinOverride "override.lenny.$(SECTION)"; + ExtraOverride "override.lenny.extra.$(SECTION)"; + SrcOverride "override.lenny.$(SECTION).src"; + Contents " "; +}; +""" + apt_trees["di"]["oldstable-proposed-updates"]=""" +tree "dists/oldstable-proposed-updates/main" +{ + FileList "/srv/ftp-master.debian.org/database/dists/oldstable-proposed-updates_main_$(SECTION)_binary-$(ARCH).list"; + Sections "debian-installer"; + Architectures "%(arch)s"; BinOverride "override.lenny.main.$(SECTION)"; SrcOverride "override.lenny.main.src"; BinCacheDB "packages-debian-installer-$(ARCH).db"; @@ -283,7 +324,7 @@ tree "dists/proposed-updates/main" if arch != 'source': if arch == 'hurd-i386' and suite == 'experimental': pass - else: + elif apt_trees["di"].has_key(suite): if arch == "amd64": os.write(ac_fd, apt_trees["di"][suite] % {'arch': arch, 'contentsline': 'Contents "$(DIST)/../Contents-udeb";'}) @@ -297,9 +338,10 @@ tree "dists/proposed-updates/main" # it has errormessages we like to see os.environ['GZIP'] = '--rsyncable' os.chdir(tmppath) - (result, output) = commands.getstatusoutput('apt-ftparchive generate %s' % os.path.basename(ac_name)) + (result, output) = commands.getstatusoutput('apt-ftparchive -o APT::FTPArchive::Contents=off generate %s' % os.path.basename(ac_name)) sn="a-f %s,%s: " % (suite, arch) print sn + output.replace('\n', '\n%s' % (sn)) + return result # Clean up any left behind files finally: @@ -360,6 +402,7 @@ def main (): startdir = os.getcwd() os.chdir(cnf["Dir::TempPath"]) + broken=[] # For each given suite, each architecture, run one apt-ftparchive for s in suites: # Setup a multiprocessing Pool. As many workers as we have CPU cores. @@ -367,17 +410,35 @@ def main (): arch_list=get_suite_architectures(s.suite_name, skipsrc=False, skipall=True, session=session) Logger.log(['generating output for Suite %s, Architectures %s' % (s.suite_name, map(sname, arch_list))]) for a in arch_list: - pool.apply_async(generate_packages_sources, (a.arch_string, s.suite_name, cnf["Dir::TempPath"])) + try: + result=pool.apply_async(generate_packages_sources, (a.arch_string, s.suite_name, cnf["Dir::TempPath"])) + # Get the result. Should it take too long (a-f hanging), break out. + r=result.get(timeout=3600) + except TimeoutError: + broken.append("Timeout: %s - %s" % (s.suite_name, a.arch_string)) + # Now try the next architecture + continue + + if r: + # As long as we get 0, we are fine. Otherwise we yell about it later. + broken.append("Breakage: %s - %s returned %s" % (s.suite_name, a.arch_string, r)) # No more work will be added to our pool, close it and then wait for all to finish pool.close() pool.join() + if len(broken) > 0: + Logger.log(['Trouble: %s' % (broken)]) + print "Trouble: %s" % (broken) + os.chdir(startdir) # this script doesn't change the database session.close() Logger.close() + if len(broken) > 0: + sys.exit(1) + ####################################################################################### if __name__ == '__main__':