X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=dak%2Frm.py;h=c2c1c62cb4984ad508c23fc944e7d2bc0ed68c56;hb=7a23455cf4a831e599172f48ce29178e64dc09db;hp=3edeac3dc35c3ccdd4a9a736f135426b859461ba;hpb=27e00376e81d1c37ff327ee0d39670b266418869;p=dak.git diff --git a/dak/rm.py b/dak/rm.py index 3edeac3d..c2c1c62c 100755 --- a/dak/rm.py +++ b/dak/rm.py @@ -117,32 +117,24 @@ def reverse_depends_check(removals, suite, arches=None, session=None): 'suite_id': dbsuite.suite_id, 'metakey_d_id': metakey_d.key_id, 'metakey_p_id': metakey_p.key_id, - 'arch_all_id' : get_architecture('all', session).arch_id, } - for architecture in all_arches: + for architecture in all_arches | set(['all']): deps = {} sources = {} virtual_packages = {} params['arch_id'] = get_architecture(architecture, session).arch_id statement = ''' - WITH suite_binaries AS - (select b.id, b.package, b.source, b.file - from binaries b WHERE b.id in - (SELECT bin FROM bin_associations WHERE suite = :suite_id) - AND b.architecture in (:arch_id, :arch_all_id)) SELECT b.id, b.package, s.source, c.name as component, - bmd.value as depends, bmp.value as provides - FROM suite_binaries b - LEFT OUTER JOIN binaries_metadata bmd - ON b.id = bmd.bin_id AND bmd.key_id = :metakey_d_id - LEFT OUTER JOIN binaries_metadata bmp - ON b.id = bmp.bin_id AND bmp.key_id = :metakey_p_id + (SELECT bmd.value FROM binaries_metadata bmd WHERE bmd.bin_id = b.id AND bmd.key_id = :metakey_d_id) AS depends, + (SELECT bmp.value FROM binaries_metadata bmp WHERE bmp.bin_id = b.id AND bmp.key_id = :metakey_p_id) AS provides + FROM binaries b + JOIN bin_associations ba ON b.id = ba.bin AND ba.suite = :suite_id JOIN source s ON b.source = s.id JOIN files f ON b.file = f.id JOIN location l ON f.location = l.id - JOIN component c ON l.component = c.id''' - session.rollback() + JOIN component c ON l.component = c.id + WHERE b.architecture = :arch_id''' query = session.query('id', 'package', 'source', 'component', 'depends', 'provides'). \ from_statement(statement).params(params) for binary_id, package, source, component, depends, provides in query: @@ -200,7 +192,7 @@ def reverse_depends_check(removals, suite, arches=None, session=None): for source, bindict in sorted(all_broken.items()): lines = [] for binary, arches in sorted(bindict.items()): - if arches == all_arches: + if arches == all_arches or 'all' in arches: lines.append(binary) else: lines.append('%s [%s]' % (binary, ' '.join(sorted(arches)))) @@ -297,8 +289,8 @@ def main (): if not cnf.has_key("Rm::Options::Suite"): cnf["Rm::Options::Suite"] = "unstable" - arguments = apt_pkg.ParseCommandLine(cnf.Cnf, Arguments, sys.argv) - Options = cnf.SubTree("Rm::Options") + arguments = apt_pkg.parse_commandline(cnf.Cnf, Arguments, sys.argv) + Options = cnf.subtree("Rm::Options") if Options["Help"]: usage() @@ -449,8 +441,8 @@ def main (): q = session.execute("SELECT l.path, f.filename, b.package, b.version, a.arch_string, b.id, b.maintainer FROM binaries b, bin_associations ba, architecture a, suite su, files f, location l, component c WHERE ba.bin = b.id AND ba.suite = su.id AND b.architecture = a.id AND b.file = f.id AND f.location = l.id AND l.component = c.id %s %s %s AND b.package = '%s'" % (con_suites, con_components, con_architectures, package)) for i in q.fetchall(): filename = "/".join(i[:2]) - control = apt_pkg.ParseSection(apt_inst.debExtractControl(utils.open_file(filename))) - source = control.Find("Source", control.Find("Package")) + control = apt_pkg.TagSection(utils.deb_extract_control(utils.open_file(filename))) + source = control.find("Source", control.find("Package")) source = re_strip_source_version.sub('', source) if source_packages.has_key(source): to_remove.append(i[2:]) @@ -498,7 +490,7 @@ def main (): versions = [] for package in removals: versions = d[package].keys() - versions.sort(apt_pkg.VersionCompare) + versions.sort(apt_pkg.version_compare) for version in versions: d[package][version].sort(utils.arch_compare_sw) summary += "%10s | %10s | %s\n" % (package, version, ", ".join(d[package][version])) @@ -631,9 +623,9 @@ def main (): if Options["Done"]: Subst_close_rm = Subst_common bcc = [] - if cnf.Find("Dinstall::Bcc") != "": + if cnf.find("Dinstall::Bcc") != "": bcc.append(cnf["Dinstall::Bcc"]) - if cnf.Find("Rm::Bcc") != "": + if cnf.find("Rm::Bcc") != "": bcc.append(cnf["Rm::Bcc"]) if bcc: Subst_close_rm["__BCC__"] = "Bcc: " + ", ".join(bcc) @@ -647,10 +639,8 @@ def main (): Archive = get_archive(whereami, session) if Archive is None: utils.warn("Cannot find archive %s. Setting blank values for origin" % whereami) - Subst_close_rm["__MASTER_ARCHIVE__"] = "" Subst_close_rm["__PRIMARY_MIRROR__"] = "" else: - Subst_close_rm["__MASTER_ARCHIVE__"] = Archive.origin_server Subst_close_rm["__PRIMARY_MIRROR__"] = Archive.primary_mirror for bug in utils.split_args(Options["Done"]): @@ -681,7 +671,7 @@ def main (): if len(sources) == 1: source_pkg = source.split("_", 1)[0] else: - utils.fubar("Closing bugs for multiple source pakcages is not supported. Do it yourself.") + utils.fubar("Closing bugs for multiple source packages is not supported. Do it yourself.") Subst_close_other["__BUG_NUMBER_ALSO__"] = "" Subst_close_other["__SOURCE__"] = source_pkg other_bugs = bts.get_bugs('src', source_pkg, 'status', 'open')