]> git.decadent.org.uk Git - dak.git/blobdiff - dak/rm.py
Merge remote branch 'ansgar/auditpackages'
[dak.git] / dak / rm.py
index 8e410ceb68e1be367bae1d6a810f8183dda256d1..3edeac3dc35c3ccdd4a9a736f135426b859461ba 100755 (executable)
--- 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
 
 ################################################################################
@@ -126,9 +126,14 @@ def reverse_depends_check(removals, suite, arches=None, session=None):
         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 binaries b
+                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
@@ -136,10 +141,8 @@ def reverse_depends_check(removals, suite, arches=None, session=None):
                 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
-                WHERE b.id in
-                    (SELECT bin FROM bin_associations WHERE suite = :suite_id)
-                    AND b.architecture in (:arch_id, :arch_all_id)'''
+                JOIN component c ON l.component = c.id'''
+        session.rollback()
         query = session.query('id', 'package', 'source', 'component', 'depends', 'provides'). \
             from_statement(statement).params(params)
         for binary_id, package, source, component, depends, provides in query:
@@ -174,7 +177,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
@@ -233,7 +236,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
@@ -663,6 +666,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: