""" General purpose package removal tool for ftpmaster """
# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2006 James Troup <james@nocrew.org>
+# Copyright (C) 2010 Alexander Reichle-Schmehl <tolimar@debian.org>
# 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
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"):
summary = ""
removals = d.keys()
removals.sort()
+ versions = []
for package in removals:
versions = d[package].keys()
versions.sort(apt_pkg.VersionCompare)
print "done."
Subst = {}
- Subst["__RM_ADDRESS__"] = cnf["Rm::MyEmailAddress"]
+ Subst["__RM_ADDRESS__"] = cnf["Dinstall::MyEmailAddress"]
Subst["__BUG_SERVER__"] = cnf["Dinstall::BugServer"]
bcc = []
if cnf.Find("Dinstall::Bcc") != "":
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)
#######################################################################################