X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=dak%2Fprocess_accepted.py;h=bb75d5ea5ae54a47629eedbab8b760151f5f08ba;hb=d9822f04453a1b62ca0aa66e2efeea35f654778f;hp=20aab49515e5af6be63497c7578cd749a0465705;hpb=cb182fca01ecf29916eb95201db7d62ee8631be7;p=dak.git diff --git a/dak/process_accepted.py b/dak/process_accepted.py old mode 100755 new mode 100644 index 20aab495..bb75d5ea --- a/dak/process_accepted.py +++ b/dak/process_accepted.py @@ -33,7 +33,7 @@ import errno, fcntl, os, sys, time, re import apt_pkg import daklib.database import daklib.logging -import daklib.queue +import daklib.queue import daklib.utils ############################################################################### @@ -71,9 +71,9 @@ class Urgency_Log: self.timestamp = time.strftime("%Y%m%d%H%M%S") # Create the log directory if it doesn't exist self.log_dir = Cnf["Dir::UrgencyLog"] - if not os.path.exists(self.log_dir): - umask = os.umask(00000) - os.makedirs(self.log_dir, 02775) + if not os.path.exists(self.log_dir) or not os.access(self.log_dir, os.W_OK): + daklib.utils.warn("UrgencyLog directory %s does not exist or is not writeable, using /srv/ftp.debian.org/tmp/ instead" % (self.log_dir)) + self.log_dir = '/srv/ftp.debian.org/tmp/' # Open the logfile self.log_filename = "%s/.install-urgencies-%s.new" % (self.log_dir, self.timestamp) self.log_file = daklib.utils.open_file(self.log_filename, 'w') @@ -133,15 +133,15 @@ def check(): # propogate in the case it is in the override tables: if changes.has_key("propdistribution"): for suite in changes["propdistribution"].keys(): - if Upload.in_override_p(files[file]["package"], files[file]["component"], suite, files[file].get("dbtype",""), file): - propogate[suite] = 1 - else: - nopropogate[suite] = 1 + if Upload.in_override_p(files[file]["package"], files[file]["component"], suite, files[file].get("dbtype",""), file): + propogate[suite] = 1 + else: + nopropogate[suite] = 1 for suite in propogate.keys(): - if suite in nopropogate: - continue - changes["distribution"][suite] = 1 + if suite in nopropogate: + continue + changes["distribution"][suite] = 1 for file in files.keys(): # Check the package is still in the override tables @@ -163,8 +163,8 @@ def init(): ('s',"no-mail", "Dinstall::Options::No-Mail")] for i in ["automatic", "help", "no-action", "no-lock", "no-mail", "version"]: - if not Cnf.has_key("Dinstall::Options::%s" % (i)): - Cnf["Dinstall::Options::%s" % (i)] = "" + if not Cnf.has_key("Dinstall::Options::%s" % (i)): + Cnf["Dinstall::Options::%s" % (i)] = "" changes_files = apt_pkg.ParseCommandLine(Cnf,Arguments,sys.argv) Options = Cnf.SubTree("Dinstall::Options") @@ -211,8 +211,8 @@ def action (): if Options["Automatic"]: answer = 'R' else: - print "INSTALL to " + ", ".join(changes["distribution"].keys()) - print reject_message + summary, + print "INSTALL to " + ", ".join(changes["distribution"].keys()) + print reject_message + summary, prompt = "[I]nstall, Skip, Quit ?" if Options["Automatic"]: answer = 'I' @@ -281,6 +281,9 @@ def install (): maintainer = dsc["maintainer"] maintainer = maintainer.replace("'", "\\'") maintainer_id = daklib.database.get_or_set_maintainer_id(maintainer) + changedby = changes["changed-by"] + changedby = changedby.replace("'", "\\'") + changedby_id = daklib.database.get_or_set_maintainer_id(changedby) fingerprint_id = daklib.database.get_or_set_fingerprint_id(dsc["fingerprint"]) install_date = time.strftime("%Y-%m-%d") filename = files[file]["pool name"] + file @@ -288,8 +291,8 @@ def install (): dsc_location_id = files[file]["location id"] if not files[file].has_key("files id") or not files[file]["files id"]: files[file]["files id"] = daklib.database.set_files_id (filename, files[file]["size"], files[file]["md5sum"], dsc_location_id) - projectB.query("INSERT INTO source (source, version, maintainer, file, install_date, sig_fpr) VALUES ('%s', '%s', %d, %d, '%s', %s)" - % (package, version, maintainer_id, files[file]["files id"], install_date, fingerprint_id)) + projectB.query("INSERT INTO source (source, version, maintainer, changedby, file, install_date, sig_fpr) VALUES ('%s', '%s', %d, %d, %d, '%s', %s)" + % (package, version, maintainer_id, changedby_id, files[file]["files id"], install_date, fingerprint_id)) for suite in changes["distribution"].keys(): suite_id = daklib.database.get_suite_id(suite) @@ -313,12 +316,17 @@ def install (): if dsc.get("dm-upload-allowed", "no") == "yes": uploader_ids = [maintainer_id] if dsc.has_key("uploaders"): - for u in dsc["uploaders"].split(","): - u = u.replace("'", "\\'") - u = u.strip() + for u in dsc["uploaders"].split(","): + u = u.replace("'", "\\'") + u = u.strip() uploader_ids.append( - daklib.database.get_or_set_maintainer_id(u)) + daklib.database.get_or_set_maintainer_id(u)) + added_ids = {} for u in uploader_ids: + if added_ids.has_key(u): + daklib.utils.warn("Already saw uploader %s for source %s" % (u, package)) + continue + added_ids[u]=1 projectB.query("INSERT INTO src_uploaders (source, maintainer) VALUES (currval('source_id_seq'), %d)" % (u)) @@ -337,8 +345,8 @@ def install (): source = files[file]["source package"] source_version = files[file]["source version"] filename = files[file]["pool name"] + file - if not files[file].has_key("location id") or not files[file]["location id"]: - files[file]["location id"] = daklib.database.get_location_id(Cnf["Dir::Pool"],files[file]["component"],daklib.utils.where_am_i()) + if not files[file].has_key("location id") or not files[file]["location id"]: + files[file]["location id"] = daklib.database.get_location_id(Cnf["Dir::Pool"],files[file]["component"],daklib.utils.where_am_i()) if not files[file].has_key("files id") or not files[file]["files id"]: files[file]["files id"] = daklib.database.set_files_id (filename, files[file]["size"], files[file]["md5sum"], files[file]["location id"]) source_id = daklib.database.get_source_id (source, source_version)