import sys
import apt_pkg
import apt_inst
+from re import sub
from daklib.config import Config
from daklib.dbconn import *
-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)
(result, output) = commands.getstatusoutput("gunzip -c %s > %s" % (filename, temp_filename))
if (result != 0):
utils.fubar("Gunzip invocation failed!\n%s\n" % (output), result)
+ # Also check for udebs
+ filename = "%s/dists/%s/%s/debian-installer/binary-%s/Packages.gz" % (cnf["Dir::Root"], suites[0], component, architecture)
+ if os.path.exists(filename):
+ (result, output) = commands.getstatusoutput("gunzip -c %s >> %s" % (filename, temp_filename))
+ if (result != 0):
+ utils.fubar("Gunzip invocation failed!\n%s\n" % (output), result)
packages = utils.open_file(temp_filename)
Packages = apt_pkg.ParseTagFile(packages)
while Packages.Step():
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
logfile.write("----------------------------------------------\n")
logfile.flush()
+ # 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
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