diff --git a/britney.py b/britney.py index 90f1fae..a49852a 100644 --- a/britney.py +++ b/britney.py @@ -1,7 +1,7 @@ #!/usr/bin/env python2.4 # -*- coding: utf-8 -*- -# Copyright (C) 2001-2004 Anthony Towns +# Copyright (C) 2001-2008 Anthony Towns # Andreas Barth # Fabio Tranchitella @@ -254,10 +254,18 @@ class Britney: result = self.get_nuninst(arch, build=True) nuninst.update(result) self.__log("> Found %d non-installable packages" % len(nuninst[arch]), type="I") - self.write_nuninst(nuninst) + for p in sorted(nuninst[arch]): + pkg = self.binaries['testing'][arch][0][p] + print "%s %s %s (%s) uninstallable" % (pkg[SOURCE], pkg[SOURCEVER], p, arch) + if not self.options.check_out: + self.write_nuninst(nuninst) else: self.__log("Not building the list of not installable packages, as requested", type="I") + # if running in check_out.py mode, quit here + if self.options.check_out: + print ":".join(map(lambda x: '%s-%s' % (x, len(nuninst[x])), self.options.architectures)) + return # read the source and binary packages for the involved distributions self.sources = {'testing': self.read_sources(self.options.testing), @@ -314,10 +322,16 @@ class Britney: help="enable control files generation") self.parser.add_option("", "--nuninst-cache", action="store_true", dest="nuninst_cache", default=False, help="do not build the non-installability status, use the cache from file") + self.parser.add_option("", "--check-out", action="store_true", dest="check_out", default=False, + help="compatibility mode with check_out.py") (self.options, self.args) = self.parser.parse_args() - + + # integrity checks + if self.options.nuninst_cache and self.options.check_out: + exit.__log("nuninst_cache and check_out are mutually exclusive!", type="E") + sys.exit(1) # if the configuration file exists, than read it and set the additional options - if not os.path.isfile(self.options.config): + elif not os.path.isfile(self.options.config): self.__log("Unable to read the configuration file (%s), exiting!" % self.options.config, type="E") sys.exit(1) @@ -2695,8 +2709,11 @@ class Britney: This is the entry point for the class: it includes the list of calls for the member methods which will produce the output files. """ + # if running in check_out.py mode, quit + if self.options.check_out: + return # if no actions are provided, build the excuses and sort them - if not self.options.actions: + elif not self.options.actions: self.write_excuses() if not self.options.compatible: self.sort_actions()