X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=dak%2Frm.py;h=e7dbde64c486a94db7443112f9b679491299cf3e;hb=1e532dabcf16f870f9815bf9a38a6a7077c79233;hp=6f843cf38da9f2d9d3c8bb9926715b7e0be0a2dc;hpb=a3775bb96242c59531b84dc7c7a002c8c884c4f4;p=dak.git diff --git a/dak/rm.py b/dak/rm.py index 6f843cf3..e7dbde64 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) @@ -521,7 +523,8 @@ def main (): logfile.write("Closed bugs: %s\n" % (Options["Done"])) logfile.write("\n------------------- Reason -------------------\n%s\n" % (Options["Reason"])) logfile.write("----------------------------------------------\n") - logfile.flush() + logfile.write("=========================================================================\n") + logfile.close() # Do the same in rfc822 format logfile822 = utils.open_file(cnf["Rm::LogFile822"], 'a') @@ -551,7 +554,6 @@ def main (): if Options["Done"]: logfile822.write("Bug: %s\n" % Options["Done"]) logfile822.write("\n") - logfile822.flush() logfile822.close() dsc_type_id = get_override_type('dsc', session).overridetype_id @@ -585,31 +587,32 @@ def main (): session.commit() print "done." + Subst = {} + Subst["__RM_ADDRESS__"] = cnf["Rm::MyEmailAddress"] + Subst["__BUG_SERVER__"] = cnf["Dinstall::BugServer"] + bcc = [] + if cnf.Find("Dinstall::Bcc") != "": + bcc.append(cnf["Dinstall::Bcc"]) + if cnf.Find("Rm::Bcc") != "": + bcc.append(cnf["Rm::Bcc"]) + if bcc: + Subst["__BCC__"] = "Bcc: " + ", ".join(bcc) + else: + Subst["__BCC__"] = "X-Filler: 42" + Subst["__CC__"] = "X-DAK: dak rm" + if carbon_copy: + Subst["__CC__"] += "\nCc: " + ", ".join(carbon_copy) + Subst["__SUITE_LIST__"] = suites_list + Subst["__SUBJECT__"] = "Removed package(s) from %s" % (suites_list) + Subst["__ADMIN_ADDRESS__"] = cnf["Dinstall::MyAdminAddress"] + Subst["__DISTRO__"] = cnf["Dinstall::MyDistribution"] + Subst["__WHOAMI__"] = whoami + # Send the bug closing messages if Options["Done"]: - Subst = {} - Subst["__RM_ADDRESS__"] = cnf["Rm::MyEmailAddress"] - Subst["__BUG_SERVER__"] = cnf["Dinstall::BugServer"] - bcc = [] - if cnf.Find("Dinstall::Bcc") != "": - bcc.append(cnf["Dinstall::Bcc"]) - if cnf.Find("Rm::Bcc") != "": - bcc.append(cnf["Rm::Bcc"]) - if bcc: - Subst["__BCC__"] = "Bcc: " + ", ".join(bcc) - else: - Subst["__BCC__"] = "X-Filler: 42" - Subst["__CC__"] = "X-DAK: dak rm" - if carbon_copy: - Subst["__CC__"] += "\nCc: " + ", ".join(carbon_copy) - Subst["__SUITE_LIST__"] = suites_list summarymail = "%s\n------------------- Reason -------------------\n%s\n" % (summary, Options["Reason"]) summarymail += "----------------------------------------------\n" Subst["__SUMMARY__"] = summarymail - Subst["__SUBJECT__"] = "Removed package(s) from %s" % (suites_list) - Subst["__ADMIN_ADDRESS__"] = cnf["Dinstall::MyAdminAddress"] - Subst["__DISTRO__"] = cnf["Dinstall::MyDistribution"] - Subst["__WHOAMI__"] = whoami whereami = utils.where_am_i() Archive = cnf.SubTree("Archive::%s" % (whereami)) Subst["__MASTER_ARCHIVE__"] = Archive["OriginServer"] @@ -619,40 +622,24 @@ def main (): mail_message = utils.TemplateSubst(Subst,cnf["Dir::Templates"]+"/rm.bug-close") utils.send_mail(mail_message) - # close associated bug reports + # close associated bug reports if Options["Do-Close"]: - Subst = {} - Subst["__RM_ADDRESS__"] = cnf["Rm::MyEmailAddress"] - Subst["__BUG_SERVER__"] = cnf["Dinstall::BugServer"] - bcc = [] - if cnf.Find("Dinstall::Bcc") != "": - bcc.append(cnf["Dinstall::Bcc"]) - if cnf.Find("Rm::Bcc") != "": - bcc.append(cnf["Rm::Bcc"]) - if bcc: - Subst["__BCC__"] = "Bcc: " + ", ".join(bcc) + if len(versions) == 1: + Subst["__VERSION__"] = versions[0] else: - Subst["__BCC__"] = "X-Filler: 42" - Subst["__CC__"] = "X-DAK: dak rm" - if carbon_copy: - Subst["__CC__"] += "\nCc: " + ", ".join(carbon_copy) - Subst["__SUITE_LIST__"] = suites_list - Subst["__SUBJECT__"] = "Removed package(s) from %s" % (suites_list) - Subst["__ADMIN_ADDRESS__"] = cnf["Dinstall::MyAdminAddress"] - Subst["__DISTRO__"] = cnf["Dinstall::MyDistribution"] - Subst["__WHOAMI__"] = whoami + 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] + Subst["__BUG_NUMBER__"] = utils.split_args(Options["Done"])[0] + print "Package:", package + print "Bugs found:", bts.get_bugs('src', package, 'status', 'open') for bug in bts.get_bugs('src', package, 'status', 'open'): - Subst["__BUG_NUMBER_ALSO__"] += bug + "-done@" + cnf["Dinstall::BugServer"] + "'" - mail_message = utils.TemplateSubst(Subst,cnf["Dir::Templates"]+"/rm.bug-close-related") - utils.send_mail(mail_message) - - logfile.write("=========================================================================\n") - logfile.close() + Subst["__BUG_NUMBER_ALSO__"] += bug + "-done@" + cnf["Dinstall::BugServer"] + "," + print "Resulting to:", Subst["__BUG_NUMBER_ALSO__"] + mail_message = utils.TemplateSubst(Subst,cnf["Dir::Templates"]+"/rm.bug-close-related") + utils.send_mail(mail_message) #######################################################################################