X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=katie.py;h=776310ddd73be779815dc93bfe721fbe01918b51;hb=47996bac016067f8b97ebff3d394a999d8979802;hp=55e49e08f00e446c1a28c58f8e90cff65c61a538;hpb=84c957285454e91ea0544c2c317f7ed6e67542aa;p=dak.git diff --git a/katie.py b/katie.py index 55e49e08..776310dd 100644 --- a/katie.py +++ b/katie.py @@ -1,8 +1,8 @@ #!/usr/bin/env python # Utility functions for katie -# Copyright (C) 2001, 2002, 2003 James Troup -# $Id: katie.py,v 1.40 2003-09-17 23:36:17 troup Exp $ +# Copyright (C) 2001, 2002, 2003, 2004 James Troup +# $Id: katie.py,v 1.44 2004-02-27 20:07:40 troup Exp $ # 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 @@ -93,7 +93,6 @@ class Katie: def __init__(self, Cnf): self.Cnf = Cnf; - self.values = {}; # Read in the group-maint override file self.nmu = nmu_p(Cnf); self.accept_count = 0; @@ -263,7 +262,7 @@ class Katie: if files[file]["type"] == "deb": summary += apt_pkg.ParseSection(apt_inst.debExtractControl(utils.open_file(file)))["Description"] + '\n'; else: - files[file]["pool name"] = utils.poolify (changes["source"], files[file]["component"]) + files[file]["pool name"] = utils.poolify (changes.get("source",""), files[file]["component"]) destination = self.Cnf["Dir::PoolRoot"] + files[file]["pool name"] + file summary += file + "\n to " + destination + "\n" @@ -469,7 +468,9 @@ distribution."""; return; summary = ""; - for file in files.keys(): + file_keys = files.keys(); + file_keys.sort(); + for file in file_keys: if not files[file].has_key("new") and files[file]["type"] == "deb": section = files[file]["section"]; override_section = files[file]["override section"]; @@ -570,7 +571,7 @@ distribution."""; pkg = self.pkg; reason_filename = pkg.changes_file[:-8] + ".reason"; - reject_filename = Cnf["Dir::Queue::Reject"] + '/' + reason_filename; + reason_filename = Cnf["Dir::Queue::Reject"] + '/' + reason_filename; # Move all the files into the reject directory reject_files = pkg.files.keys() + [pkg.changes_file]; @@ -578,16 +579,15 @@ distribution."""; # If we fail here someone is probably trying to exploit the race # so let's just raise an exception ... - if os.path.exists(reject_filename): - os.unlink(reject_filename); - fd = os.open(reject_filename, os.O_RDWR|os.O_CREAT|os.O_EXCL, 0644); + if os.path.exists(reason_filename): + os.unlink(reason_filename); + reason_file = os.open(reason_filename, os.O_RDWR|os.O_CREAT|os.O_EXCL, 0644); if not manual: Subst["__REJECTOR_ADDRESS__"] = Cnf["Dinstall::MyEmailAddress"]; Subst["__MANUAL_REJECT_MESSAGE__"] = ""; Subst["__CC__"] = "X-Katie-Rejection: automatic (moo)"; - os.write(fd, reject_message); - os.close(fd); + os.write(reason_file, reject_message); reject_mail_message = utils.TemplateSubst(Subst,Cnf["Dir::Templates"]+"/katie.rejected"); else: # Build up the rejection email @@ -597,10 +597,10 @@ distribution."""; Subst["__MANUAL_REJECT_MESSAGE__"] = reject_message; Subst["__CC__"] = "Cc: " + Cnf["Dinstall::MyEmailAddress"]; reject_mail_message = utils.TemplateSubst(Subst,Cnf["Dir::Templates"]+"/katie.rejected"); - # Write the rejection email out as the .reason file - os.write(fd, reject_mail_message); - os.close(fd); + os.write(reason_file, reject_mail_message); + + os.close(reason_file); # Send the rejection mail if appropriate if not Cnf["Dinstall::Options::No-Mail"]: @@ -645,17 +645,17 @@ distribution."""; ql = map(lambda x: x[0], q.getresult()); # Try (1) - if ql.count(source_version): + if source_version in ql: continue # Try (2) orig_source_version = re_bin_only_nmu_of_mu.sub('', source_version) - if ql.count(orig_source_version): + if orig_source_version in ql: continue # Try (3) orig_source_version = re_bin_only_nmu_of_nmu.sub('', source_version) - if ql.count(orig_source_version): + if orig_source_version in ql: continue # No source found...