X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=dak%2Frm.py;h=936468cf2c8e2dfbae1e2944ff2e972b6cb2cc46;hb=9b9e1c34bfd5b9527c71fdc8db6cb3024482c0c9;hp=fa6487937258efdb2f88a4d1a782c8110d03bddc;hpb=1ef15ae934490b4dbb5ee652c44f282b41013e4f;p=dak.git diff --git a/dak/rm.py b/dak/rm.py index fa648793..936468cf 100755 --- a/dak/rm.py +++ b/dak/rm.py @@ -494,6 +494,8 @@ def main (): print "Will also close bugs: "+Options["Done"] if carbon_copy: print "Will also send CCs to: " + ", ".join(carbon_copy) + if Options["Do-Close"]: + print "Will also close associated bug reports." print print "------------------- Reason -------------------" print Options["Reason"] @@ -523,8 +525,6 @@ def main (): logfile.write("Closed bugs: %s\n" % (Options["Done"])) logfile.write("\n------------------- Reason -------------------\n%s\n" % (Options["Reason"])) logfile.write("----------------------------------------------\n") - logfile.write("=========================================================================\n") - logfile.close() # Do the same in rfc822 format logfile822 = utils.open_file(cnf["Rm::LogFile822"], 'a') @@ -553,8 +553,6 @@ def main (): logfile822.write("Reason: %s\n" % Options["Reason"].replace('\n', '\n ')) if Options["Done"]: logfile822.write("Bug: %s\n" % Options["Done"]) - logfile822.write("\n") - logfile822.close() dsc_type_id = get_override_type('dsc', session).overridetype_id deb_type_id = get_override_type('deb', session).overridetype_id @@ -591,7 +589,6 @@ def main (): Subst_common = {} Subst_common["__RM_ADDRESS__"] = cnf["Dinstall::MyEmailAddress"] Subst_common["__BUG_SERVER__"] = cnf["Dinstall::BugServer"] - bcc = [] Subst_common["__CC__"] = "X-DAK: dak rm" if carbon_copy: Subst_common["__CC__"] += "\nCc: " + ", ".join(carbon_copy) @@ -602,8 +599,9 @@ def main (): Subst_common["__WHOAMI__"] = whoami # Send the bug closing messages - Subst_close_rm = Subst_common if Options["Done"]: + Subst_close_rm = Subst_common + bcc = [] if cnf.Find("Dinstall::Bcc") != "": bcc.append(cnf["Dinstall::Bcc"]) if cnf.Find("Rm::Bcc") != "": @@ -621,14 +619,17 @@ def main (): Subst_close_rm["__PRIMARY_MIRROR__"] = Archive["PrimaryMirror"] for bug in utils.split_args(Options["Done"]): Subst_close_rm["__BUG_NUMBER__"] = bug - mail_message = utils.TemplateSubst(Subst_close_rm,cnf["Dir::Templates"]+"/rm.bug-close") + if Options["Do-Close"]: + mail_message = utils.TemplateSubst(Subst_close_rm,cnf["Dir::Templates"]+"/rm.bug-close-with-related") + else: + mail_message = utils.TemplateSubst(Subst_close_rm,cnf["Dir::Templates"]+"/rm.bug-close") 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"]: Subst_close_other = Subst_common + bcc = [] + wnpp = utils.parse_wnpp_bug_file() if len(versions) == 1: Subst_close_other["__VERSION__"] = versions[0] else: @@ -638,17 +639,47 @@ def main (): else: Subst_close_other["__BCC__"] = "X-Filler: 42" # at this point, I just assume, that the first closed bug gives - # some usefull information on why the package got removed + # some useful information on why the package got removed Subst_close_other["__BUG_NUMBER__"] = utils.split_args(Options["Done"])[0] - if len(sources) > 1: + 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.") Subst_close_other["__BUG_NUMBER_ALSO__"] = "" - Subst_close_other["__SOURCE__"] = source.split("_", 1)[0] - for bug in bts.get_bugs('src', source.split("_", 1)[0], 'status', 'open'): - Subst_close_other["__BUG_NUMBER_ALSO__"] += str(bug) + "-done@" + cnf["Dinstall::BugServer"] + "," + Subst_close_other["__SOURCE__"] = source_pkg + other_bugs = bts.get_bugs('src', source_pkg, 'status', 'open') + if other_bugs: + logfile.write("Also closing bug(s):") + logfile822.write("Also-Bugs:") + for bug in other_bugs: + Subst_close_other["__BUG_NUMBER_ALSO__"] += str(bug) + "-done@" + cnf["Dinstall::BugServer"] + "," + logfile.write(" " + str(bug)) + logfile822.write(" " + str(bug)) + logfile.write("\n") + logfile822.write("\n") + if source_pkg in wnpp.keys(): + logfile.write("Also closing WNPP bug(s):") + logfile822.write("Also-WNPP:") + for bug in wnpp[source_pkg]: + # the wnpp-rm file we parse also contains our removal + # bugs, filtering that out + if bug != Subst_close_other["__BUG_NUMBER__"]: + Subst_close_other["__BUG_NUMBER_ALSO__"] += str(bug) + "-done@" + cnf["Dinstall::BugServer"] + "," + logfile.write(" " + str(bug)) + logfile822.write(" " + str(bug)) + logfile.write("\n") + logfile822.write("\n") + mail_message = utils.TemplateSubst(Subst_close_other,cnf["Dir::Templates"]+"/rm.bug-close-related") if Subst_close_other["__BUG_NUMBER_ALSO__"]: utils.send_mail(mail_message) + + + logfile.write("=========================================================================\n") + logfile.close() + + logfile822.write("\n") + logfile822.close() #######################################################################################