X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=dak%2Fcheck_overrides.py;h=cdab644935f67a866408da210f087360235dd87c;hb=3a48d9bed2ff0984eee329153f4e158919a597ec;hp=282bce08a0159b8aa5276ad7a63614e112618db4;hpb=30413cf0ff7bc21b8d2b8b4346406357fe55dc19;p=dak.git diff --git a/dak/check_overrides.py b/dak/check_overrides.py old mode 100755 new mode 100644 index 282bce08..cdab6449 --- a/dak/check_overrides.py +++ b/dak/check_overrides.py @@ -1,9 +1,8 @@ #!/usr/bin/env python # Cruft checker and hole filler for overrides -# Copyright (C) 2000, 2001, 2002, 2004 James Troup +# Copyright (C) 2000, 2001, 2002, 2004, 2006 James Troup # Copyright (C) 2005 Jeroen van Wolffelaar -# $Id: cindy,v 1.14 2005-11-15 09:50:32 ajt Exp $ # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -22,17 +21,19 @@ ################################################################################ ###################################################################### -# NB: cindy is not a good idea with New Incoming as she doesn't take # -# into account accepted. You can minimize the impact of this by # -# running her immediately after kelly but that's still racy because # -# lisa doesn't lock with kelly. A better long term fix is the evil # -# plan for accepted to be in the DB. # +# NB: dak check-overrides is not a good idea with New Incoming as it # +# doesn't take into account accepted. You can minimize the impact # +# of this by running it immediately after dak process-accepted but # +# that's still racy because 'dak process-new' doesn't lock with 'dak # +# process-accepted'. A better long term fix is the evil plan for # +# accepted to be in the DB. # ###################################################################### -# cindy should now work fine being done during cron.daily, for example just -# before denise (after kelly and jenna). At that point, queue/accepted should -# be empty and installed, so... Cindy does now take into account suites -# sharing overrides +# dak check-overrides should now work fine being done during +# cron.daily, for example just before 'dak make-overrides' (after 'dak +# process-accepted' and 'dak make-suite-file-list'). At that point, +# queue/accepted should be empty and installed, so... dak +# check-overrides does now take into account suites sharing overrides # TODO: # * Only update out-of-sync overrides when corresponding versions are equal to @@ -48,8 +49,10 @@ ################################################################################ import pg, sys, os -import utils, db_access, logging import apt_pkg +import daklib.database as database +import daklib.logging as logging +import daklib.utils as utils ################################################################################ @@ -63,7 +66,7 @@ blacklist = {} ################################################################################ def usage (exit_code=0): - print """Usage: cindy + print """Usage: dak check-overrides Check for cruft in overrides. -n, --no-action don't do anything @@ -81,26 +84,25 @@ def gen_blacklist(dir): def process(osuite, affected_suites, originosuite, component, type): global Logger, Options, projectB, sections, priorities - osuite_id = db_access.get_suite_id(osuite) + osuite_id = database.get_suite_id(osuite) if osuite_id == -1: utils.fubar("Suite '%s' not recognised." % (osuite)) originosuite_id = None if originosuite: - originosuite_id = db_access.get_suite_id(originosuite) + originosuite_id = database.get_suite_id(originosuite) if originosuite_id == -1: utils.fubar("Suite '%s' not recognised." % (originosuite)) - component_id = db_access.get_component_id(component) + component_id = database.get_component_id(component) if component_id == -1: utils.fubar("Component '%s' not recognised." % (component)) - type_id = db_access.get_override_type_id(type) + type_id = database.get_override_type_id(type) if type_id == -1: utils.fubar("Type '%s' not recognised. (Valid types are deb, udeb and dsc)" % (type)) - dsc_type_id = db_access.get_override_type_id("dsc") - deb_type_id = db_access.get_override_type_id("deb") + dsc_type_id = database.get_override_type_id("dsc") - source_priority_id = db_access.get_priority_id("source") + source_priority_id = database.get_priority_id("source") if type == "deb" or type == "udeb": packages = {} @@ -109,7 +111,7 @@ SELECT b.package FROM binaries b, bin_associations ba, files f, location l, component c WHERE b.type = '%s' AND b.id = ba.bin AND f.id = b.file AND l.id = f.location AND c.id = l.component AND ba.suite IN (%s) AND c.id = %s -""" % (type, ",".join(map(str,affected_suites)), component_id)) +""" % (type, ",".join([ str(i) for i in affected_suites ]), component_id)) for i in q.getresult(): packages[i[0]] = 0 @@ -119,7 +121,7 @@ SELECT s.source FROM source s, src_associations sa, files f, location l, component c WHERE s.id = sa.source AND f.id = s.file AND l.id = f.location AND c.id = l.component AND sa.suite IN (%s) AND c.id = %s -""" % (",".join(map(str,affected_suites)), component_id)) +""" % (",".join([ str(i) for i in affected_suites]), component_id)) for i in q.getresult(): src_packages[i[0]] = 0 @@ -153,7 +155,7 @@ SELECT s.source FROM source s, src_associations sa, files f, location l, if not src_packages.has_key(package) or src_packages[package]: continue src_packages[package] = 1 - + Logger.log(["add missing override", osuite, component, type, package, "source", sections[i[2]], i[3]]) if not Options["No-Action"]: @@ -266,19 +268,19 @@ def main (): Cnf = utils.get_conf() - Arguments = [('h',"help","Cindy::Options::Help"), - ('n',"no-action", "Cindy::Options::No-Action")] + Arguments = [('h',"help","Check-Overrides::Options::Help"), + ('n',"no-action", "Check-Overrides::Options::No-Action")] for i in [ "help", "no-action" ]: - if not Cnf.has_key("Cindy::Options::%s" % (i)): - Cnf["Cindy::Options::%s" % (i)] = "" + if not Cnf.has_key("Check-Overrides::Options::%s" % (i)): + Cnf["Check-Overrides::Options::%s" % (i)] = "" apt_pkg.ParseCommandLine(Cnf, Arguments, sys.argv) - Options = Cnf.SubTree("Cindy::Options") + Options = Cnf.SubTree("Check-Overrides::Options") if Options["Help"]: usage() projectB = pg.connect(Cnf["DB::Name"], Cnf["DB::Host"], int(Cnf["DB::Port"])) - db_access.init(Cnf, projectB) + database.init(Cnf, projectB) # init sections, priorities: q = projectB.query("SELECT id, section FROM section") @@ -289,14 +291,14 @@ def main (): priorities[i[0]] = i[1] if not Options["No-Action"]: - Logger = logging.Logger(Cnf, "cindy") + Logger = logging.Logger(Cnf, "check-overrides") else: - Logger = logging.Logger(Cnf, "cindy", 1) + Logger = logging.Logger(Cnf, "check-overrides", 1) gen_blacklist(Cnf["Dir::Queue::Accepted"]) - for osuite in Cnf.SubTree("Cindy::OverrideSuites").List(): - if "1" != Cnf["Cindy::OverrideSuites::%s::Process" % osuite]: + for osuite in Cnf.SubTree("Check-Overrides::OverrideSuites").List(): + if "1" != Cnf["Check-Overrides::OverrideSuites::%s::Process" % osuite]: continue osuite = osuite.lower() @@ -304,7 +306,7 @@ def main (): originosuite = None originremark = "" try: - originosuite = Cnf["Cindy::OverrideSuites::%s::OriginSuite" % osuite] + originosuite = Cnf["Check-Overrides::OverrideSuites::%s::OriginSuite" % osuite] originosuite = originosuite.lower() originremark = " taking missing from %s" % originosuite except KeyError: @@ -319,12 +321,12 @@ def main (): suites.append(suite) q = projectB.query("SELECT id FROM suite WHERE suite_name in (%s)" \ - % ", ".join(map(repr, suites)).lower()) + % ", ".join([ repr(i) for i in suites ]).lower()) suiteids = [] for i in q.getresult(): suiteids.append(i[0]) - + if len(suiteids) != len(suites) or len(suiteids) < 1: utils.fubar("Couldn't find id's of all suites: %s" % suites) @@ -348,4 +350,3 @@ def main (): if __name__ == '__main__': main() -