X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=dak%2Frm.py;h=d7697fa426a0bd510aeb47d1921aa90fa33bb10c;hb=e216aa3f46d789c09ae9ca24a99885c89f1ebc0e;hp=8dff809ef30c5289368e22870ec831212803bae1;hpb=2d4f734d1d24765254687338a386be1e742f713b;p=dak.git diff --git a/dak/rm.py b/dak/rm.py index 8dff809e..d7697fa4 100755 --- a/dak/rm.py +++ b/dak/rm.py @@ -41,9 +41,7 @@ import commands import os -import re import sys -import gzip import apt_pkg import apt_inst @@ -77,7 +75,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) @@ -116,7 +114,11 @@ def reverse_depends_check(removals, suites, arches=None): for component in components: filename = "%s/dists/%s/%s/binary-%s/Packages.gz" % (cnf["Dir::Root"], suites[0], component, architecture) # apt_pkg.ParseTagFile needs a real file handle and can't handle a GzipFile instance... - packages = gzip.open(filename, 'rb') + (fd, temp_filename) = utils.temp_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(): package = Packages.Section.Find("Package") @@ -146,6 +148,7 @@ def reverse_depends_check(removals, suites, arches=None): virtual_packages[virtual_pkg] += 1 p2c[package] = component packages.close() + os.unlink(temp_filename) # If a virtual package is only provided by the to-be-removed # packages, treat the virtual package as to-be-removed too. @@ -196,7 +199,12 @@ def reverse_depends_check(removals, suites, arches=None): for component in components: filename = "%s/dists/%s/%s/source/Sources.gz" % (cnf["Dir::Root"], suites[0], component) # apt_pkg.ParseTagFile needs a real file handle and can't handle a GzipFile instance... - sources = gzip.open(filename, 'rb') + (fd, temp_filename) = utils.temp_filename() + result, output = commands.getstatusoutput("gunzip -c %s > %s" % (filename, temp_filename)) + if result != 0: + sys.stderr.write("Gunzip invocation failed!\n%s\n" % (output)) + sys.exit(result) + sources = utils.open_file(temp_filename, "r") Sources = apt_pkg.ParseTagFile(sources) while Sources.Step(): source = Sources.Section.Find("Package") @@ -391,7 +399,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 @@ -497,8 +505,8 @@ def main (): logfile.write("----------------------------------------------\n") logfile.flush() - dsc_type_id = get_override_type('dsc', session) - deb_type_id = get_override_type('deb', session) + 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...", @@ -542,11 +550,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