X-Git-Url: https://git.decadent.org.uk/gitweb/?p=dak.git;a=blobdiff_plain;f=dak%2Fprocess_new.py;h=55397c7dc79a4e2df577397d9262a6addb047df1;hp=dc279257f77656bc4c867faf06675285bd7b2e9f;hb=17c5cab4eb8d5181ec7a81267a4e2e6b43c0fc65;hpb=05c76c2463c44950b06b541b3bfd8b0551f22b0b diff --git a/dak/process_new.py b/dak/process_new.py index dc279257..55397c7d 100755 --- a/dak/process_new.py +++ b/dak/process_new.py @@ -54,6 +54,8 @@ import pwd import apt_pkg, apt_inst import examine_package import subprocess +import daklib.daksubprocess +from sqlalchemy import or_ from daklib.dbconn import * from daklib.queue import * @@ -121,15 +123,20 @@ 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']) + binaries.discard(m['package']) if binaries: + source = upload.binaries[0].source.source + suite = upload.target_suite.overridesuite or \ + upload.target_suite.suite_name + suites = [s[0] for s in session.query(Suite.suite_name).filter \ + (or_(Suite.suite_name == suite, + Suite.overridesuite == suite)).all()] rows = session.query(DBSource.source, DBBinary.package).distinct(). \ filter(DBBinary.package.in_(binaries)). \ join(DBBinary.source). \ - filter(DBSource.source != upload.source.source). \ + filter(DBSource.source != source). \ join(DBBinary.suites). \ filter(Suite.suite_name.in_(suites)). \ order_by(DBSource.source, DBBinary.package).all() @@ -148,17 +155,18 @@ def print_new (upload, missing, indexed, session, file=sys.stdout): package = m['package'] section = m['section'] priority = m['priority'] + included = "" if m['included'] else "NOT UPLOADED" if indexed: - line = "(%s): %-20s %-20s %-20s" % (index, package, priority, section) + line = "(%s): %-20s %-20s %-20s %s" % (index, package, priority, section, included) else: - line = "%-20s %-20s %-20s" % (package, priority, section) + line = "%-20s %-20s %-20s %s" % (package, priority, section, included) line = line.strip() if not m['valid']: line = line + ' [!]' print >>file, line takenover = takenover_binaries(upload, missing, session) if takenover: - print '\nBINARIES TAKEN OVER' + print '\n\nBINARIES TAKEN OVER\n' for t in takenover: print '%s: %s' % (t[0], t[1]) notes = get_new_comments(upload.policy_queue, upload.changes.source) @@ -211,7 +219,8 @@ def edit_new (overrides, upload, session): type, pkg = pkg.split(':', 1) else: type = 'deb' - if (type, pkg) not in overrides_map: + o = overrides_map.get((type, pkg), None) + if o is None: utils.warn("Ignoring unknown package '%s'" % (pkg)) else: if section.find('/') != -1: @@ -224,6 +233,7 @@ def edit_new (overrides, upload, session): section=section, component=component, priority=priority, + included=o['included'], )) return new_overrides @@ -340,8 +350,11 @@ def check_pkg (upload, upload_copy, session): suite_name = upload.target_suite.suite_name handler = PolicyQueueUploadHandler(upload, session) missing = [(m['type'], m["package"]) for m in handler.missing_overrides(hints=missing)] + + less_cmd = ("less", "-R", "-") + less_process = daklib.daksubprocess.Popen(less_cmd, bufsize=0, stdin=subprocess.PIPE) try: - sys.stdout = os.popen("less -R -", 'w', 0) + sys.stdout = less_process.stdin print examine_package.display_changes(suite_name, changes) source = upload.source @@ -358,6 +371,7 @@ def check_pkg (upload, upload_copy, session): print examined print examine_package.output_package_relations() + less_process.stdin.close() except IOError as e: if e.errno == errno.EPIPE: utils.warn("[examine_package] Caught EPIPE; skipping.") @@ -366,6 +380,7 @@ def check_pkg (upload, upload_copy, session): except KeyboardInterrupt: utils.warn("[examine_package] Caught C-c; skipping.") finally: + less_process.wait() sys.stdout = save_stdout ################################################################################ @@ -443,7 +458,7 @@ def run_user_inspect_command(upload, upload_copy): changes=changes, ) - subprocess.check_call(shell_command, shell=True) + daklib.daksubprocess.check_call(shell_command, shell=True) ################################################################################