X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=dak%2Fprocess_new.py;h=0ae5307341d9c499db326a045d6541815415497b;hb=7f7f54ceba3b63e0aa495fc1448dce9818ff320e;hp=69cd83684a989c933fa4138c4e5398d39c08d1d1;hpb=7be2069562f3ca875c3ac29efb806d019cd08acd;p=dak.git diff --git a/dak/process_new.py b/dak/process_new.py index 69cd8368..0ae53073 100755 --- a/dak/process_new.py +++ b/dak/process_new.py @@ -83,8 +83,13 @@ def recheck(): and not Upload.source_exists(source_package, source_version, Upload.pkg.changes["distribution"].keys()): source_epochless_version = daklib.utils.re_no_epoch.sub('', source_version) dsc_filename = "%s_%s.dsc" % (source_package, source_epochless_version) - if not os.path.exists(Cnf["Dir::Queue::Accepted"] + '/' + dsc_filename): - reject("no source found for %s %s (%s)." % (source_package, source_version, file)) + found = 0 + for q in ["Accepted", "Embargoed", "Unembargoed"]: + if Cnf.has_key(Cnf["Dir::Queue::%s" % (q)]): + if os.path.exists(Cnf["Dir::Queue::%s" % (q)] + '/' + dsc_filename): + found = 1 + if not found: + reject("no source found for %s %s (%s)." % (source_package, source_version, file)) # Version and file overwrite checks if files[file]["type"] == "deb": @@ -92,7 +97,7 @@ def recheck(): elif files[file]["type"] == "dsc": reject(Upload.check_source_against_db(file)) (reject_msg, is_in_incoming) = Upload.check_dsc_against_db(file) - reject(reject_msg) + reject(reject_msg, "") if reject_message.find("Rejected") != -1: answer = "XXX" @@ -116,6 +121,7 @@ def recheck(): elif answer == 'S': return 0 elif answer == 'Q': + end() sys.exit(0) return 1 @@ -256,7 +262,7 @@ class Priority_Completer: ################################################################################ def print_new (new, indexed, file=sys.stdout): - daklib.utils.check_valid(new) + daklib.queue.check_valid(new) broken = 0 index = 0 for pkg in new.keys(): @@ -466,6 +472,7 @@ def edit_note(note): if answer == 'A': return elif answer == 'Q': + end() sys.exit(0) Upload.pkg.changes["process-new note"] = note Upload.dump_vars(Cnf["Dir::Queue::New"]) @@ -567,6 +574,7 @@ def prod_maintainer (): if answer == 'A': return elif answer == 'Q': + end() sys.exit(0) # Otherwise, do the proding... user_email_address = daklib.utils.whoami() + " <%s>" % ( @@ -672,6 +680,7 @@ def do_new(): elif answer == 'S': done = 1 elif answer == 'Q': + end() sys.exit(0) ################################################################################ @@ -768,29 +777,46 @@ def do_byhand(): elif answer == 'S': done = 1 elif answer == 'Q': + end() sys.exit(0) ################################################################################ +def get_accept_lock(): + retry = 0 + while retry < 10: + try: + lock_fd = os.open(Cnf["Process-New::AcceptedLockFile"], os.O_RDONLY | os.O_CREAT | os.O_EXCL) + retry = 10 + except OSError, e: + if errno.errorcode[e.errno] == 'EACCES' or errno.errorcode[e.errno] == 'EEXIST': + retry += 1 + if (retry >= 10): + daklib.utils.fubar("Couldn't obtain lock; assuming 'dak process-unchecked' is already running.") + else: + print("Unable to get accepted lock (try %d of 10)" % retry) + time.sleep(60) + else: + raise + +def move_to_dir (dest, perms=0660, changesperms=0664): + daklib.utils.move (Upload.pkg.changes_file, dest, perms=changesperms) + file_keys = Upload.pkg.files.keys() + for file in file_keys: + daklib.utils.move (file, dest, perms=perms) + def do_accept(): print "ACCEPT" if not Options["No-Action"]: - retry = 0 - while retry < 10: - try: - lock_fd = os.open(Cnf["Process-New::AcceptedLockFile"], os.O_RDONLY | os.O_CREAT | os.O_EXCL) - retry = 10 - except OSError, e: - if errno.errorcode[e.errno] == 'EACCES' or errno.errorcode[e.errno] == 'EEXIST': - retry += 1 - if (retry >= 10): - daklib.utils.fubar("Couldn't obtain lock; assuming 'dak process-unchecked' is already running.") - else: - print("Unable to get accepted lock (try %d of 10)" % retry) - time.sleep(60) - else: - raise + get_accept_lock() (summary, short_summary) = Upload.build_summaries() + if Cnf.FindB("Dinstall::SecurityQueueHandling"): + Upload.dump_vars(Cnf["Dir::Queue::Embargoed"]) + move_to_dir(Cnf["Dir::Queue::Embargoed"]) + Upload.queue_build("embargoed", Cnf["Dir::Queue::Embargoed"]) + # Check for override disparities + Upload.Subst["__SUMMARY__"] = summary + else: Upload.accept(summary, short_summary) os.unlink(Upload.pkg.changes_file[:-8]+".dak") os.unlink(Cnf["Process-New::AcceptedLockFile"])