]> git.decadent.org.uk Git - dak.git/blobdiff - dak/check_overrides.py
Merge the cleanup branch, part 1
[dak.git] / dak / check_overrides.py
old mode 100755 (executable)
new mode 100644 (file)
index 282bce0..cdab644
@@ -1,9 +1,8 @@
 #!/usr/bin/env python
 
 # Cruft checker and hole filler for overrides
-# Copyright (C) 2000, 2001, 2002, 2004  James Troup <james@nocrew.org>
+# Copyright (C) 2000, 2001, 2002, 2004, 2006  James Troup <james@nocrew.org>
 # Copyright (C) 2005  Jeroen van Wolffelaar <jeroen@wolffelaar.nl>
-# $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
 ################################################################################
 
 ######################################################################
-# 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
 ################################################################################
 
 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()
-