X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=dak%2Frm.py;h=03d12f0f8108012b459d835b4dd0c63e0523b031;hb=dd80b169287a128cd9e3b833852fbf68106385b5;hp=dcca4b6beb26d15aa79a2076987583daa418aeb5;hpb=13a1194328f9ce5d2e9bdc5405b5e3b2a4ceb845;p=dak.git diff --git a/dak/rm.py b/dak/rm.py index dcca4b6b..03d12f0f 100755 --- a/dak/rm.py +++ b/dak/rm.py @@ -51,7 +51,7 @@ from daklib.config import Config from daklib.dbconn import * from daklib import utils from daklib.dak_exceptions import * -from daklib.regexes import re_strip_source_version, re_build_dep_arch +from daklib.regexes import re_strip_source_version, re_build_dep_arch, re_bin_only_nmu import debianbts as bts ################################################################################ @@ -117,37 +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 = ''' - create temp table suite_binaries ( - id integer, - package text, - source integer, - file integer); - insert into suite_binaries - select b.id, b.package, b.source, b.file - from binaries b WHERE b.id in - (SELECT bin FROM bin_associations WHERE suite = 5) - AND b.architecture in (16, 2); 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: @@ -182,7 +169,7 @@ def reverse_depends_check(removals, suite, arches=None, session=None): parsed_dep = [] try: parsed_dep += apt_pkg.ParseDepends(deps[package]) - except ValueError, e: + except ValueError as e: print "Error for package %s: %s" % (package, e) for dep in parsed_dep: # Check for partial breakage. If a package has a ORed @@ -205,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)))) @@ -241,7 +228,7 @@ def reverse_depends_check(removals, suite, arches=None, session=None): build_dep = re_build_dep_arch.sub("", build_dep) try: parsed_dep += apt_pkg.ParseDepends(build_dep) - except ValueError, e: + except ValueError as e: print "Error for source %s: %s" % (source, e) for dep in parsed_dep: unsat = 0 @@ -671,6 +658,7 @@ def main (): Subst_close_other = Subst_common bcc = [] wnpp = utils.parse_wnpp_bug_file() + versions = list(set([re_bin_only_nmu.sub('', v) for v in versions])) if len(versions) == 1: Subst_close_other["__VERSION__"] = versions[0] else: