X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=dak%2Frm.py;h=66dab6113ccebdd2f6d748caa4fc405aecf5fc23;hb=fa0e8a21b006b05ea56a8fb2a0c57006f6715217;hp=865a3544e17e3aca0a6117ae1e065840b89b5e39;hpb=ea46d5070c3e5b20aa3f5eeef55f3c0ce82828e0;p=dak.git diff --git a/dak/rm.py b/dak/rm.py index 865a3544..66dab611 100755 --- a/dak/rm.py +++ b/dak/rm.py @@ -2,6 +2,7 @@ """ General purpose package removal tool for ftpmaster """ # Copyright (C) 2000, 2001, 2002, 2003, 2004, 2006 James Troup +# Copyright (C) 2010 Alexander Reichle-Schmehl # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -282,7 +283,7 @@ def main (): for i in [ "architecture", "binary-only", "carbon-copy", "component", "done", "help", "no-action", "partial", "rdep-check", "reason", - "source-only" ]: + "source-only", "Do-Close" ]: if not cnf.has_key("Rm::Options::%s" % (i)): cnf["Rm::Options::%s" % (i)] = "" if not cnf.has_key("Rm::Options::Suite"): @@ -478,6 +479,7 @@ def main (): summary = "" removals = d.keys() removals.sort() + versions = [] for package in removals: versions = d[package].keys() versions.sort(apt_pkg.VersionCompare) @@ -621,16 +623,27 @@ def main (): utils.send_mail(mail_message) # close associated bug reports + # FIXME: We should also close possible WNPP bugs for that package, but + # currently there's no sane way to determine them if Options["Do-Close"]: + if len(versions) == 1: + Subst["__VERSION__"] = versions[0] + else: + utils.fubar("Closing bugs with multiple package versions is not supported. Do it yourself.") whereami = utils.where_am_i() Archive = cnf.SubTree("Archive::%s" % (whereami)) # at this point, I just assume, that the first closed bug gives # some usefull information on why the package got removed Subst["__BUG_NUMBER__"] = utils.split_args(Options["Done"])[0] - for bug in bts.get_bugs('src', package, 'status', 'open'): - Subst["__BUG_NUMBER_ALSO__"] += bug + "-done@" + cnf["Dinstall::BugServer"] + "," + if len(sources) > 1: + utils.fubar("Closing bugs for multiple source pakcages is not supported. Do it yourself.") + Subst["__BUG_NUMBER_ALSO__"] = "" + Subst["__SOURCE__"] = source.split("_", 1)[0] + for bug in bts.get_bugs('src', source.split("_", 1)[0], 'status', 'open'): + Subst["__BUG_NUMBER_ALSO__"] += str(bug) + "-done@" + cnf["Dinstall::BugServer"] + "," mail_message = utils.TemplateSubst(Subst,cnf["Dir::Templates"]+"/rm.bug-close-related") - utils.send_mail(mail_message) + if Subst["__BUG_NUMBER_ALSO__"]: + utils.send_mail(mail_message) #######################################################################################