X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=katie;h=37a24846e2228f214f3c28d4503a1a587771e010;hb=10b08271e7209664dcebc83cbca7d1106c6bd394;hp=410871dd52e9f4d93036f936a41aece962b27c29;hpb=2d4b390c184bd59d3cf0904ce0a1b6b9ac268fe9;p=dak.git diff --git a/katie b/katie index 410871dd..37a24846 100755 --- a/katie +++ b/katie @@ -2,7 +2,7 @@ # Installs Debian packaes # Copyright (C) 2000, 2001 James Troup -# $Id: katie,v 1.34 2001-03-21 05:37:23 troup Exp $ +# $Id: katie,v 1.40 2001-04-16 17:45:06 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 @@ -140,8 +140,9 @@ def check_changes(filename): global reject_message, changes, files # Default in case we bail out - changes["maintainer822"] = Cnf["Dinstall::MyEmailAddress"]; - + changes["maintainer822"] = Cnf["Dinstall::MyEmailAddress"]; + changes["changedby822"] = Cnf["Dinstall::MyEmailAddress"]; + # Parse the .changes field into a dictionary try: changes = utils.parse_changes(filename, 0) @@ -184,11 +185,6 @@ def check_changes(filename): # Fix the Changed-By: field to be RFC822 compatible; if it exists. (changes["changedby822"], changes["changedbyname"], changes["changedbyemail"]) = utils.fix_maintainer(changes.get("changed-by","")); - # For source uploads the Changed-By field wins; otherwise Maintainer wins. - if changes["architecture"].has_key("source"): - changes["uploader822"] = "To: %s\nCc: %s" % (changes["changedby822"], changes["maintainer822"]); - # changes["uploadername"], changes["uploaderemail"]) = (changes["changedby822"], changes["changedbyname"], changes["changedbyemail"]); - # Ensure all the values in Closes: are numbers if changes.has_key("closes"): for i in changes["closes"].keys(): @@ -239,7 +235,7 @@ def check_changes(filename): # FIXME: should probably remove anything that != stable for i in ("frozen", "unstable"): if changes["distribution"].has_key(i): - reject_message = reject_message + "Removing %s from distribution list.\n" + reject_message = reject_message + "Removing %s from distribution list.\n" % (i) del changes["distribution"][i] changes["stable upload"] = 1; # If we can't find a file from the .changes; assume it's a package already in the pool and move into the pool @@ -626,16 +622,27 @@ def check_override (): def update_subst (changes_filename): global Subst; - + if changes.has_key("architecture"): Subst["__ARCHITECTURE__"] = string.join(changes["architecture"].keys(), ' ' ); + else: + Subst["__ARCHITECTURE__"] = "Unknown"; Subst["__CHANGES_FILENAME__"] = os.path.basename(changes_filename); - Subst["__FILE_CONTENTS__"] = changes.get("filecontents"); - Subst["__MAINTAINER_ADDRESS__"] = changes["maintainer822"]; - Subst["__MAINTAINER__"] = changes.get("maintainer"); + Subst["__FILE_CONTENTS__"] = changes.get("filecontents", ""); + + # For source uploads the Changed-By field wins; otherwise Maintainer wins. + if changes["architecture"].has_key("source") and changes["changedby822"] != "" and (changes["changedby822"] != changes["maintainer822"]): + Subst["__MAINTAINER_FROM__"] = changes["changedby822"]; + Subst["__MAINTAINER_TO__"] = changes["changedby822"] + ", " + changes["maintainer822"]; + Subst["__MAINTAINER__"] = changes.get("changed-by", "Unknown"); + else: + Subst["__MAINTAINER_FROM__"] = changes["maintainer822"]; + Subst["__MAINTAINER_TO__"] = changes["maintainer822"]; + Subst["__MAINTAINER__"] = changes.get("maintainer", "Unknown"); + Subst["__REJECT_MESSAGE__"] = reject_message; - Subst["__SOURCE__"] = changes.get("source"); - Subst["__VERSION__"] = changes.get("version"); + Subst["__SOURCE__"] = changes.get("source", "Unknown"); + Subst["__VERSION__"] = changes.get("version", "Unknown"); ##################################################################################################################### @@ -685,7 +692,11 @@ def action (changes_filename): answer = 'S' if string.find(reject_message, "Rejected") != -1: - if time.time()-os.path.getmtime(changes_filename) < 86400: + try: + modified_time = time.time()-os.path.getmtime(changes_filename); + except: # i.e. ignore errors like 'file does not exist'; + modified_time = 0; + if modified_time < 86400: print "SKIP (too new)\n" + reject_message,; prompt = "[S]kip, Manual reject, Quit ?"; else: @@ -928,7 +939,8 @@ def stable_install (changes_filename, summary, short_summary): projectB.query("COMMIT WORK"); - utils.move (changes_filename, Cnf["Rhona::Morgue"] + os.path.basename(changes_filename)); + # FIXME + utils.move (changes_filename, Cnf["Dir::Morgue"] + '/katie/' + os.path.basename(changes_filename)); # Update the Stable ChangeLog file @@ -958,8 +970,9 @@ def stable_install (changes_filename, summary, short_summary): install_count = install_count + 1; if not Cnf["Dinstall::Options::No-Mail"]: - Subst["__SUITE__"] = "into stable"; + Subst["__SUITE__"] = " into stable"; Subst["__SUMMARY__"] = summary; + mail_message = utils.TemplateSubst(Subst,open(Cnf["Dir::TemplatesDir"]+"/katie.installed","r").read()); utils.send_mail (mail_message, "") announce (short_summary, 1) @@ -996,6 +1009,7 @@ def reject (changes_filename, manual_reject_mail_filename): os.write(fd, reject_message); os.close(fd); Subst["__MANUAL_REJECT_MESSAGE__"] = ""; + Subst["__CC__"] = "X-Katie-Rejection: automatic (moo)"; reject_mail_message = utils.TemplateSubst(Subst,open(Cnf["Dir::TemplatesDir"]+"/katie.rejected","r").read()); else: # Have a manual rejection file to use reject_mail_message = ""; # avoid 's @@ -1010,11 +1024,11 @@ def manual_reject (changes_filename): global Subst; # Build up the rejection email - user_email_address = string.replace(string.split(pwd.getpwuid(os.getuid())[4],',')[0], '.', '') - user_email_address = user_email_address + " <%s@%s>" % (pwd.getpwuid(os.getuid())[0], Cnf["Dinstall::MyHost"]) + user_email_address = utils.whoami() + " <%s@%s>" % (pwd.getpwuid(os.getuid())[0], Cnf["Dinstall::MyHost"]) manual_reject_message = Cnf.get("Dinstall::Options::Manual-Reject", "") Subst["__MANUAL_REJECT_MESSAGE__"] = manual_reject_message; + Subst["__CC__"] = "Cc: " + Cnf["Dinstall::MyEmailAddress"]; reject_mail_message = utils.TemplateSubst(Subst,open(Cnf["Dir::TemplatesDir"]+"/katie.rejected","r").read()); # Write the rejection email out as the .reason file @@ -1028,9 +1042,9 @@ def manual_reject (changes_filename): # If we weren't given one, spawn an editor so the user can add one in if manual_reject_message == "": - result = os.system("vi +6 %s" % (reject_file)) + result = os.system("vi +6 %s" % (reject_filename)) if result != 0: - sys.stderr.write ("vi invocation failed for `%s'!\n" % (reject_file)) + sys.stderr.write ("vi invocation failed for `%s'!\n" % (reject_filename)) sys.exit(result) # Then process it as if it were an automatic rejection @@ -1228,7 +1242,7 @@ def main(): Subst = {} Subst["__ADMIN_ADDRESS__"] = Cnf["Dinstall::MyAdminAddress"]; Subst["__BUG_SERVER__"] = Cnf["Dinstall::BugServer"]; - bcc = "X-Katie: $Revision: 1.34 $" + bcc = "X-Katie: $Revision: 1.40 $" if Cnf.has_key("Dinstall::Bcc"): Subst["__BCC__"] = bcc + "\nBcc: %s" % (Cnf["Dinstall::Bcc"]); else: