]> git.decadent.org.uk Git - dak.git/blobdiff - dak/cruft_report.py
[??] sync with ftp-master/dak master
[dak.git] / dak / cruft_report.py
index 91b3844a1596d6dd8cf65911b4de91a32b7d9583..8571bcf4c5fdeefb316c0f9da776f06b70a0ce12 100755 (executable)
 #   you might as well write some letters to God about how unfair entropy
 #   is while you're at it.'' -- 20020802143104.GA5628@azure.humbug.org.au
 
-## TODO:  fix NBS looping for version, implement Dubious NBS, fix up output of duplicate source package stuff, improve experimental ?, add support for non-US ?, add overrides, avoid ANAIS for duplicated packages
+## TODO:  fix NBS looping for version, implement Dubious NBS, fix up output of duplicate source package stuff, improve experimental ?, add overrides, avoid ANAIS for duplicated packages
 
 ################################################################################
 
-import commands, pg, os, string, sys, time
+import commands, pg, os, sys, time
 import apt_pkg
-import dak.lib.database as database
-import dak.lib.utils as utils
+import daklib.database
+import daklib.utils
 
 ################################################################################
 
@@ -116,7 +116,7 @@ def do_anais(architecture, binaries_list, source):
 ################################################################################
 
 def do_nviu():
-    experimental_id = database.get_suite_id("experimental")
+    experimental_id = daklib.database.get_suite_id("experimental")
     if experimental_id == -1:
         return
     # Check for packages in experimental obsoleted by versions in unstable
@@ -126,7 +126,7 @@ SELECT s.source, s.version AS experimental, s2.version AS unstable
   WHERE sa.suite = %s AND sa2.suite = %d AND sa.source = s.id
    AND sa2.source = s2.id AND s.source = s2.source
    AND versioncmp(s.version, s2.version) < 0""" % (experimental_id,
-                                                   database.get_suite_id("unstable")))
+                                                   daklib.database.get_suite_id("unstable")))
     ql = q.getresult()
     if ql:
         nviu_to_remove = []
@@ -202,15 +202,14 @@ def do_dubious_nbs(dubious_nbs):
 def do_obsolete_source(duplicate_bins, bin2source):
     obsolete = {}
     for key in duplicate_bins.keys():
-        (source_a, source_b) = key.split('~')
+        (source_a, source_b) = key.split('_')
         for source in [ source_a, source_b ]:
             if not obsolete.has_key(source):
                 if not source_binaries.has_key(source):
                     # Source has already been removed
                     continue
                 else:
-                    obsolete[source] = map(string.strip,
-                                           source_binaries[source].split(','))
+                    obsolete[source] = [ i.strip() for i in source_binaries[source].split(',') ]
             for binary in duplicate_bins[key]:
                 if bin2source.has_key(binary) and bin2source[binary]["source"] == source:
                     continue
@@ -226,7 +225,7 @@ def do_obsolete_source(duplicate_bins, bin2source):
         if not obsolete[source]:
             to_remove.append(source)
             output += " * %s (%s)\n" % (source, source_versions[source])
-            for binary in map(string.strip, source_binaries[source].split(',')):
+            for binary in [ i.strip() for i in source_binaries[source].split(',') ]:
                 if bin2source.has_key(binary):
                     output += "    o %s (%s) is built by %s.\n" \
                           % (binary, bin2source[binary]["version"],
@@ -247,7 +246,7 @@ def do_obsolete_source(duplicate_bins, bin2source):
 def main ():
     global Cnf, projectB, suite_id, source_binaries, source_versions
 
-    Cnf = utils.get_conf()
+    Cnf = daklib.utils.get_conf()
 
     Arguments = [('h',"help","Cruft-Report::Options::Help"),
                  ('m',"mode","Cruft-Report::Options::Mode", "HasArg"),
@@ -272,11 +271,11 @@ def main ():
     elif Options["Mode"] == "full":
         checks = [ "nbs", "nviu", "obsolete source", "dubious nbs", "bnb", "bms", "anais" ]
     else:
-        utils.warn("%s is not a recognised mode - only 'full' or 'daily' are understood." % (Options["Mode"]))
+        daklib.utils.warn("%s is not a recognised mode - only 'full' or 'daily' are understood." % (Options["Mode"]))
         usage(1)
 
     projectB = pg.connect(Cnf["DB::Name"], Cnf["DB::Host"], int(Cnf["DB::Port"]))
-    database.init(Cnf, projectB)
+    daklib.database.init(Cnf, projectB)
 
     bin_pkgs = {}
     src_pkgs = {}
@@ -289,7 +288,7 @@ def main ():
     duplicate_bins = {}
 
     suite = Options["Suite"]
-    suite_id = database.get_suite_id(suite)
+    suite_id = daklib.database.get_suite_id(suite)
 
     bin_not_built = {}
 
@@ -308,19 +307,19 @@ def main ():
     for component in components:
         filename = "%s/dists/%s/%s/source/Sources.gz" % (Cnf["Dir::Root"], suite, component)
         # apt_pkg.ParseTagFile needs a real file handle and can't handle a GzipFile instance...
-        temp_filename = utils.temp_filename()
+        temp_filename = daklib.utils.temp_filename()
         (result, output) = commands.getstatusoutput("gunzip -c %s > %s" % (filename, temp_filename))
         if (result != 0):
             sys.stderr.write("Gunzip invocation failed!\n%s\n" % (output))
             sys.exit(result)
-        sources = utils.open_file(temp_filename)
+        sources = daklib.utils.open_file(temp_filename)
         Sources = apt_pkg.ParseTagFile(sources)
         while Sources.Step():
             source = Sources.Section.Find('Package')
             source_version = Sources.Section.Find('Version')
             architecture = Sources.Section.Find('Architecture')
             binaries = Sources.Section.Find('Binary')
-            binaries_list = map(string.strip, binaries.split(','))
+            binaries_list = [ i.strip() for i in  binaries.split(',') ]
 
             if "bnb" in checks:
                 # Check for binaries not built on any architecture.
@@ -341,7 +340,7 @@ def main ():
                 if bin_pkgs.has_key(binary):
                     key_list = [ source, bin_pkgs[binary] ]
                     key_list.sort()
-                    key = '~'.join(key_list)
+                    key = '_'.join(key_list)
                     duplicate_bins.setdefault(key, [])
                     duplicate_bins[key].append(binary)
                 bin_pkgs[binary] = source
@@ -353,16 +352,16 @@ def main ():
 
     # Checks based on the Packages files
     for component in components + ['main/debian-installer']:
-        architectures = filter(utils.real_arch, Cnf.ValueList("Suite::%s::Architectures" % (suite)))
+        architectures = filter(daklib.utils.real_arch, Cnf.ValueList("Suite::%s::Architectures" % (suite)))
         for architecture in architectures:
             filename = "%s/dists/%s/%s/binary-%s/Packages.gz" % (Cnf["Dir::Root"], suite, component, architecture)
             # apt_pkg.ParseTagFile needs a real file handle
-            temp_filename = utils.temp_filename()
+            temp_filename = daklib.utils.temp_filename()
             (result, output) = commands.getstatusoutput("gunzip -c %s > %s" % (filename, temp_filename))
             if (result != 0):
                 sys.stderr.write("Gunzip invocation failed!\n%s\n" % (output))
                 sys.exit(result)
-            packages = utils.open_file(temp_filename)
+            packages = daklib.utils.open_file(temp_filename)
             Packages = apt_pkg.ParseTagFile(packages)
             while Packages.Step():
                 package = Packages.Section.Find('Package')
@@ -379,7 +378,7 @@ def main ():
                     bin2source[package]["version"] = version
                     bin2source[package]["source"] = source
                 if source.find("(") != -1:
-                    m = utils.re_extract_src_version.match(source)
+                    m = daklib.utils.re_extract_src_version.match(source)
                     source = m.group(1)
                     version = m.group(2)
                 if not bin_pkgs.has_key(package):
@@ -391,7 +390,7 @@ def main ():
                     if previous_source != source:
                         key_list = [ source, previous_source ]
                         key_list.sort()
-                        key = '~'.join(key_list)
+                        key = '_'.join(key_list)
                         duplicate_bins.setdefault(key, [])
                         if package not in duplicate_bins[key]:
                             duplicate_bins[key].append(package)
@@ -446,7 +445,7 @@ def main ():
         keys = duplicate_bins.keys()
         keys.sort()
         for key in keys:
-            (source_a, source_b) = key.split("~")
+            (source_a, source_b) = key.split("_")
             print " o %s & %s => %s" % (source_a, source_b, ", ".join(duplicate_bins[key]))
         print