X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=dak%2Fprocess_new.py;h=dc279257f77656bc4c867faf06675285bd7b2e9f;hb=05c76c2463c44950b06b541b3bfd8b0551f22b0b;hp=61eb8ec9f67de76335a3dc8dbca63f827e4f01d3;hpb=0cd5ef66e65102991e2e0e77c33f4a77b06c7c4d;p=dak.git diff --git a/dak/process_new.py b/dak/process_new.py index 61eb8ec9..dc279257 100755 --- a/dak/process_new.py +++ b/dak/process_new.py @@ -118,6 +118,25 @@ class Priority_Completer: ################################################################################ +def takenover_binaries(upload, missing, session): + rows = [] + binaries = set([x.package for x in upload.binaries]) + suites = ('unstable','experimental') + for m in missing: + if m['type'] != 'dsc': + binaries.remove(m['package']) + if binaries: + rows = session.query(DBSource.source, DBBinary.package).distinct(). \ + filter(DBBinary.package.in_(binaries)). \ + join(DBBinary.source). \ + filter(DBSource.source != upload.source.source). \ + join(DBBinary.suites). \ + filter(Suite.suite_name.in_(suites)). \ + order_by(DBSource.source, DBBinary.package).all() + return rows + +################################################################################ + def print_new (upload, missing, indexed, session, file=sys.stdout): check_valid(missing, session) index = 0 @@ -137,6 +156,11 @@ def print_new (upload, missing, indexed, session, file=sys.stdout): if not m['valid']: line = line + ' [!]' print >>file, line + takenover = takenover_binaries(upload, missing, session) + if takenover: + print '\nBINARIES TAKEN OVER' + for t in takenover: + print '%s: %s' % (t[0], t[1]) notes = get_new_comments(upload.policy_queue, upload.changes.source) for note in notes: print "\nAuthor: %s\nVersion: %s\nTimestamp: %s\n\n%s" \ @@ -471,6 +495,16 @@ def do_new(upload, upload_copy, handler, session): missing = handler.missing_overrides(hints=missing) broken = not check_valid(missing, session) + changesname = os.path.basename(upload.changes.changesname) + + print + print changesname + print "-" * len(changesname) + print + print " Target: {0}".format(upload.target_suite.suite_name) + print " Changed-By: {0}".format(upload.changes.changedby) + print + #if len(byhand) == 0 and len(missing) == 0: # break @@ -517,17 +551,12 @@ def do_new(upload, upload_copy, handler, session): continue if answer == 'A' and not Options["Trainee"]: - try: - check_daily_lock() - add_overrides(missing, upload.target_suite, session) - if Config().find_b("Dinstall::BXANotify"): - do_bxa_notification(missing, upload, session) - handler.accept() - done = True - Logger.log(["NEW ACCEPT", upload.changes.changesname]) - except CantGetLockError: - print "Hello? Operator! Give me the number for 911!" - print "Dinstall in the locked area, cant process packages, come back later" + add_overrides(missing, upload.target_suite, session) + if Config().find_b("Dinstall::BXANotify"): + do_bxa_notification(missing, upload, session) + handler.accept() + done = True + Logger.log(["NEW ACCEPT", upload.changes.changesname]) elif answer == 'C': check_pkg(upload, upload_copy, session) elif answer == 'E' and not Options["Trainee"]: @@ -585,6 +614,7 @@ def usage (exit_code=0): -h, --help show this help and exit. -m, --manual-reject=MSG manual reject with `msg' -n, --no-action don't do anything + -q, --queue=QUEUE operate on a different queue -t, --trainee FTP Trainee mode -V, --version display the version number and exit @@ -614,24 +644,6 @@ ENVIRONMENT VARIABLES ################################################################################ -def check_daily_lock(): - """ - Raises CantGetLockError if the dinstall daily.lock exists. - """ - - cnf = Config() - try: - lockfile = cnf.get("Process-New::DinstallLockFile", - os.path.join(cnf['Dir::Lock'], 'processnew.lock')) - - os.open(lockfile, - os.O_RDONLY | os.O_CREAT | os.O_EXCL) - except OSError as e: - if e.errno == errno.EEXIST or e.errno == errno.EACCES: - raise CantGetLockError - - os.unlink(lockfile) - @contextlib.contextmanager def lock_package(package): """ @@ -662,6 +674,8 @@ def do_pkg(upload, session): dsc = upload.source cnf = Config() + group = cnf.get('Dinstall::UnprivGroup') or None + #bcc = "X-DAK: dak process-new" #if cnf.has_key("Dinstall::Bcc"): # u.Subst["__BCC__"] = bcc + "\nBcc: %s" % (cnf["Dinstall::Bcc"]) @@ -670,7 +684,7 @@ def do_pkg(upload, session): try: with lock_package(upload.changes.source): - with UploadCopy(upload) as upload_copy: + with UploadCopy(upload, group=group) as upload_copy: handler = PolicyQueueUploadHandler(upload, session) if handler.get_action() is not None: print "PENDING %s\n" % handler.get_action() @@ -804,8 +818,6 @@ def main(): show_new_comments(uploads, session) else: for upload in uploads: - print "\n" + os.path.basename(upload.changes.changesname) - do_pkg (upload, session) end()