]> git.decadent.org.uk Git - dak.git/blobdiff - dak/rm.py
Drop column origin_server from archive table.
[dak.git] / dak / rm.py
index 3edeac3dc35c3ccdd4a9a736f135426b859461ba..c2c1c62cb4984ad508c23fc944e7d2bc0ed68c56 100755 (executable)
--- 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')