X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=dak%2Fcruft_report.py;h=8571bcf4c5fdeefb316c0f9da776f06b70a0ce12;hb=ea17738cea735d71766bfc2bd082f59b3adf2dbb;hp=91b3844a1596d6dd8cf65911b4de91a32b7d9583;hpb=7aaaad3135c9164390af5897925660842368660b;p=dak.git diff --git a/dak/cruft_report.py b/dak/cruft_report.py index 91b3844a..8571bcf4 100755 --- a/dak/cruft_report.py +++ b/dak/cruft_report.py @@ -23,14 +23,14 @@ # 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