]> git.decadent.org.uk Git - dak.git/commitdiff
Merge remote-tracking branch 'DktrKranz/fixes'
authorJoerg Jaspert <joerg@debian.org>
Sat, 2 Jan 2016 13:34:47 +0000 (14:34 +0100)
committerJoerg Jaspert <joerg@debian.org>
Sat, 2 Jan 2016 13:34:47 +0000 (14:34 +0100)
* DktrKranz/fixes:
  Removal dep check only considers latest sources (Closes: #792578)
  Allow closing bugs if more than one source version is available.

Signed-off-by: Joerg Jaspert <joerg@debian.org>
daklib/rm.py
daklib/utils.py

index e6940d53de99fce1268c2588842ddc04cdcb346d..db1d907fe03ad893de0d0a482d701fe207fa651e 100644 (file)
@@ -524,16 +524,26 @@ def remove(session, reason, suites, removals,
 
         # close associated bug reports
         if close_related_bugs:
+            latest_version = ''
             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]
+            if len(set(s.split("_", 1)[0] for s in sources)) == 1:
+                source_pkg = source.split("_", 1)[0]
+            else:
+                logfile.write("=========================================================================\n")
+                logfile822.write("\n")
+                raise ValueError("Closing bugs for multiple source packages is not supported.  Please do it yourself.")
+            for version in versions:
+                if apt_pkg.version_compare(version, latest_version) > 0:
+                    latest_version = version
+            if latest_version != '':
+                Subst_close_other["__VERSION__"] = latest_version
             else:
                 logfile.write("=========================================================================\n")
                 logfile822.write("\n")
-                raise ValueError("Closing bugs with multiple package versions is not supported.  Do it yourself.")
+                raise ValueError("No versions can be found. Close bugs yourself.")
             if bcc:
                 Subst_close_other["__BCC__"] = "Bcc: " + ", ".join(bcc)
             else:
@@ -541,12 +551,6 @@ def remove(session, reason, suites, removals,
             # at this point, I just assume, that the first closed bug gives
             # some useful information on why the package got removed
             Subst_close_other["__BUG_NUMBER__"] = done_bugs[0]
-            if len(sources) == 1:
-                source_pkg = source.split("_", 1)[0]
-            else:
-                logfile.write("=========================================================================\n")
-                logfile822.write("\n")
-                raise ValueError("Closing bugs for multiple source packages is not supported.  Please do it yourself.")
             Subst_close_other["__BUG_NUMBER_ALSO__"] = ""
             Subst_close_other["__SOURCE__"] = source_pkg
             merged_bugs = set()
index cdec3a773865c7faee74a41b063b892a59f2dc19..9d45cdc847ba814b172daa498b5a5815407037b3 100644 (file)
@@ -1256,7 +1256,7 @@ def check_reverse_depends(removals, suite, arches=None, session=None, cruft=Fals
            FROM source s
            JOIN source_metadata sm ON s.id = sm.src_id
            WHERE s.id in
-               (SELECT source FROM src_associations
+               (SELECT src FROM newest_src_association
                    WHERE suite = :suite_id)
                AND sm.key_id in :metakey_ids
            GROUP BY s.id, s.source'''