]> git.decadent.org.uk Git - dak.git/blobdiff - dak/rm.py
add indentation to reason for 822 format
[dak.git] / dak / rm.py
index 30e946a17a39fd1bff79aebee77d6e42c5193da2..f63b2ca6b80e0f87afcc7d1d4aeb394623ef8d1b 100755 (executable)
--- a/dak/rm.py
+++ b/dak/rm.py
 
 import commands
 import os
-import re
 import sys
 import apt_pkg
 import apt_inst
+from re import sub
 
 from daklib.config import Config
 from daklib.dbconn import *
@@ -76,7 +76,7 @@ Remove PACKAGE(s) from suite(s).
   -S, --source-only          remove source only
 
 ARCH, BUG#, COMPONENT and SUITE can be comma (or space) separated lists, e.g.
-    --architecture=m68k,i386"""
+    --architecture=amd64,i386"""
 
     sys.exit(exit_code)
 
@@ -106,7 +106,7 @@ def reverse_depends_check(removals, suites, arches=None):
     if arches:
         all_arches = set(arches)
     else:
-        all_arches = set(database.get_suite_architectures(suites[0]))
+        all_arches = set([x.arch_string for x in get_suite_architectures(suites[0])])
     all_arches -= set(["source", "all"])
     for architecture in all_arches:
         deps = {}
@@ -400,7 +400,7 @@ def main ():
             for i in source_packages.keys():
                 filename = "/".join(source_packages[i])
                 try:
-                    dsc = utils.parse_changes(filename)
+                    dsc = utils.parse_changes(filename, dsc_file=1)
                 except CantOpenError:
                     utils.warn("couldn't open '%s'." % (filename))
                     continue
@@ -457,7 +457,7 @@ def main ():
 
     maintainer_list = []
     for maintainer_id in maintainers.keys():
-        maintainer_list.append(database.get_maintainer(maintainer_id))
+        maintainer_list.append(get_maintainer(maintainer_id).name)
     summary = ""
     removals = d.keys()
     removals.sort()
@@ -506,8 +506,39 @@ def main ():
     logfile.write("----------------------------------------------\n")
     logfile.flush()
 
-    dsc_type_id = database.get_override_type_id('dsc')
-    deb_type_id = database.get_override_type_id('deb')
+    # Do the same in rfc822 format
+    logfile822 = utils.open_file(cnf["Rm::LogFile822"], 'a')
+    logfile822.write("Date: %s\n" % date)
+    logfile822.write("Ftpmaster: %s\n" % whoami)
+    logfile822.write("Suite: %s\n" % suites_list)
+    sources = []
+    binaries = []
+    for package in summary.split("\n"):
+        for row in package.split("\n"):
+            element = row.split("|")
+            if len(element) == 3:
+                if element[2].find("source") > 0:
+                    sources.append("%s_%s" % tuple(elem.strip(" ") for elem in element[:2]))
+                    element[2] = sub("source\s?,?", "", element[2]).strip(" ")
+                if element[2]:
+                    binaries.append("%s_%s [%s]" % tuple(elem.strip(" ") for elem in element))
+    if sources:
+        logfile822.write("Sources:\n")
+        for source in sources:
+            logfile822.write(" %s\n" % source)
+    if binaries:
+        logfile822.write("Binaries:\n")
+        for binary in binaries:
+            logfile822.write(" %s\n" % binary)
+    logfile822.write("Reason: %s\n" % Options["Reason"].replace('\n', '\n '))
+    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
+    deb_type_id = get_override_type('deb', session).overridetype_id
 
     # Do the actual deletion
     print "Deleting...",
@@ -551,11 +582,14 @@ def main ():
             Subst["__BCC__"] = "Bcc: " + ", ".join(bcc)
         else:
             Subst["__BCC__"] = "X-Filler: 42"
-        Subst["__CC__"] = "X-DAK: dak rm\nX-Katie: melanie"
+        Subst["__CC__"] = "X-DAK: dak rm"
         if carbon_copy:
             Subst["__CC__"] += "\nCc: " + ", ".join(carbon_copy)
         Subst["__SUITE_LIST__"] = suites_list
-        Subst["__SUMMARY__"] = summary
+        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