X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=rene;h=7cc6cf3123e637474ae0466bd972ee4eafd99f11;hb=c6d8c2d23585e1b364f4304bfe2501c4ac247c56;hp=3f1b9d1e98e5672d7df686bf182f97420ef9cbf6;hpb=8ecf66b7d933929ca5f504a32fb54542b0b87b71;p=dak.git diff --git a/rene b/rene index 3f1b9d1e..7cc6cf31 100755 --- a/rene +++ b/rene @@ -2,7 +2,7 @@ # Check for obsolete binary packages # Copyright (C) 2000, 2001, 2002 James Troup -# $Id: rene,v 1.11 2002-05-08 11:13:02 troup Exp $ +# $Id: rene,v 1.15 2002-10-16 02:47:32 troup 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 @@ -20,13 +20,13 @@ ################################################################################ -# "Welcome to where time stands still, -# No one leaves and no one will." -# - Sanitarium - Metallica / Master of the puppets +# ``If you're claiming that's a "problem" that needs to be "fixed", +# 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 ################################################################################ -import commands, pg, os, string, sys, tempfile; +import commands, pg, os, sys, tempfile; import utils, db_access; import apt_pkg; @@ -42,13 +42,7 @@ def main (): Cnf = utils.get_conf() - Arguments = [('h',"help","Catherine::Options::Help"), - ('V',"version","Catherine::Options::Version"), - ('l',"limit", "Catherine::Options::Limit", "HasArg"), - ('n',"no-action","Catherine::Options::No-Action"), - ('v',"verbose","Catherine::Options::Verbose")]; - - apt_pkg.ParseCommandLine(Cnf,Arguments,sys.argv); + apt_pkg.ParseCommandLine(Cnf,[],sys.argv); projectB = pg.connect(Cnf["DB::Name"], Cnf["DB::Host"], int(Cnf["DB::Port"])); db_access.init(Cnf, projectB); @@ -60,7 +54,7 @@ def main (): suite = "unstable"; suite_id = db_access.get_suite_id(suite); - components = Cnf.SubTree("Suite::%s::Components" % (suite)).List(); + components = Cnf.ValueList("Suite::%s::Components" % (suite)); 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... @@ -81,10 +75,10 @@ def main (): # Check for packages built on architectures they shouldn't be. if architecture != "any" and architecture != "all": architectures = {}; - for arch in string.split(architecture): - architectures[string.strip(arch)] = ""; - for binary in string.split(binaries, ','): - binary = string.strip(binary); + for arch in architecture.split(): + architectures[arch.strip()] = ""; + for binary in binaries.split(','): + binary = binary.strip(); q = projectB.query("SELECT a.arch_string, b.version FROM binaries b, bin_associations ba, architecture a WHERE ba.suite = %s AND ba.bin = b.id AND b.architecture = a.id AND b.package = '%s'" % (suite_id, binary)); ql = q.getresult(); if not ql: @@ -97,7 +91,7 @@ def main (): if architectures.has_key(arch): versions.append(version); versions.sort(apt_pkg.VersionCompare); - if versions != []: + if versions: latest_version = versions.pop() else: latest_version = None; @@ -121,10 +115,10 @@ def main (): if src_pkgs.has_key(source): print " %s is a duplicated source package (%s and %s)" % (source, source_index, src_pkgs[source]); src_pkgs[source] = source_index; - for binary in string.split(binaries, ','): - binary = string.strip(binary); + for binary in binaries.split(','): + binary = binary.strip(); if bin_pkgs.has_key(binary): - print " %s is duplicated in %s and %s" % (binary, source, bin_pkgs[binary]); + print " binary %s is duplicated in source packages %s and %s" % (binary, source, bin_pkgs[binary]); bin_pkgs[binary] = source; source_binaries[source] = binaries; @@ -132,10 +126,8 @@ def main (): os.unlink(temp_filename); for component in components: - architectures = Cnf.SubTree("Suite::%s::Architectures" % (suite)).List(); + architectures = filter(utils.real_arch, Cnf.ValueList("Suite::%s::Architectures" % (suite))); for architecture in architectures: - if [ "source", "all" ].count(architecture) != 0: - continue; filename = "%s/dists/%s/%s/binary-%s/Packages" % (Cnf["Dir::Root"], suite, component, architecture); packages = utils.open_file(filename); Packages = apt_pkg.ParseTagFile(packages); @@ -144,7 +136,7 @@ def main (): source = Packages.Section.Find('Source', ""); if source == "": source = package; - if string.find(source, "(") != -1: + if source.find("(") != -1: m = utils.re_extract_src_version.match(source) source = m.group(1) if not bin_pkgs.has_key(package) and not miss_src.has_key(package): @@ -165,7 +157,7 @@ SELECT s.source, s.version AS experimental, s2.version AS unstable AND sa2.source = s2.id AND s.source = s2.source AND versioncmp(s.version, s2.version) < 0""" % (suite_id)); ql = q.getresult(); - if ql != []: + if ql: print print q