X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=dak%2Fprocess_new.py;h=11e9bf48efc9b5e968f2661ebcf4e2272e90df44;hb=c5e62511336d16a4b1648b9b84b6b6d80e560c21;hp=e23efb691ec5282612940bda33a40ea4eba04c84;hpb=8bd471bcd1e6975fe66d3a0778ad8d1bb9ccb87d;p=dak.git diff --git a/dak/process_new.py b/dak/process_new.py index e23efb69..11e9bf48 100755 --- a/dak/process_new.py +++ b/dak/process_new.py @@ -337,33 +337,29 @@ def edit_overrides (new, upload, session): ################################################################################ def check_pkg (upload): + save_stdout = sys.stdout try: - less_fd = os.popen("less -R -", 'w', 0) - stdout_fd = sys.stdout - try: - sys.stdout = less_fd - changes = utils.parse_changes (upload.pkg.changes_file) - print examine_package.display_changes(changes['distribution'], upload.pkg.changes_file) - files = upload.pkg.files - for f in files.keys(): - if files[f].has_key("new"): - ftype = files[f]["type"] - if ftype == "deb": - print examine_package.check_deb(changes['distribution'], f) - elif ftype == "dsc": - print examine_package.check_dsc(changes['distribution'], f) - finally: - print examine_package.output_package_relations() - sys.stdout = stdout_fd + sys.stdout = os.popen("less -R -", 'w', 0) + changes = utils.parse_changes (upload.pkg.changes_file) + print examine_package.display_changes(changes['distribution'], upload.pkg.changes_file) + files = upload.pkg.files + for f in files.keys(): + if files[f].has_key("new"): + ftype = files[f]["type"] + if ftype == "deb": + print examine_package.check_deb(changes['distribution'], f) + elif ftype == "dsc": + print examine_package.check_dsc(changes['distribution'], f) + print examine_package.output_package_relations() except IOError, e: if e.errno == errno.EPIPE: utils.warn("[examine_package] Caught EPIPE; skipping.") - pass else: + sys.stdout = save_stdout raise except KeyboardInterrupt: utils.warn("[examine_package] Caught C-c; skipping.") - pass + sys.stdout = save_stdout ################################################################################ @@ -424,11 +420,18 @@ def do_new(upload, session): # Make a copy of distribution we can happily trample on changes["suite"] = copy.copy(changes["distribution"]) + # Try to get an included dsc + dsc = None + (status, _) = upload.load_dsc() + if status: + dsc = upload.pkg.dsc + # The main NEW processing loop done = 0 + new = {} while not done: # Find out what's new - new, byhand = determine_new(upload.pkg.changes_file, changes, files, session=session) + new, byhand = determine_new(upload.pkg.changes_file, changes, files, dsc=dsc, session=session, new=new) if not new: break @@ -517,6 +520,7 @@ def usage (exit_code=0): print """Usage: dak process-new [OPTION]... [CHANGES]... -a, --automatic automatic run -b, --no-binaries do not sort binary-NEW packages first + -c, --comments show NEW comments -h, --help show this help and exit. -m, --manual-reject=MSG manual reject with `msg' -n, --no-action don't do anything @@ -666,6 +670,12 @@ def do_pkg(changes_full_path, session): u.logger = Logger origchanges = os.path.abspath(u.pkg.changes_file) + # Try to get an included dsc + dsc = None + (status, _) = u.load_dsc() + if status: + dsc = u.pkg.dsc + cnf = Config() bcc = "X-DAK: dak process-new" if cnf.has_key("Dinstall::Bcc"): @@ -674,6 +684,7 @@ def do_pkg(changes_full_path, session): u.Subst["__BCC__"] = bcc files = u.pkg.files + u.check_distributions() for deb_filename, f in files.items(): if deb_filename.endswith(".udeb") or deb_filename.endswith(".deb"): u.binary_file_checks(deb_filename, session) @@ -690,7 +701,7 @@ def do_pkg(changes_full_path, session): if not recheck(u, session): return - new, byhand = determine_new(u.pkg.changes_file, u.pkg.changes, files, session=session) + new, byhand = determine_new(u.pkg.changes_file, u.pkg.changes, files, dsc=dsc, session=session) if byhand: do_byhand(u, session) elif new: @@ -706,6 +717,23 @@ def do_pkg(changes_full_path, session): except AlreadyLockedError, e: print "Seems to be locked by %s already, skipping..." % (e) +def show_new_comments(changes_files, session): + sources = set() + query = """SELECT package, version, comment, author + FROM new_comments + WHERE package IN ('""" + + for changes in changes_files: + sources.add(os.path.basename(changes).split("_")[0]) + + query += "%s') ORDER BY package, version" % "', '".join(sources) + r = session.execute(query) + + for i in r: + print "%s_%s\n%s\n(%s)\n\n\n" % (i[0], i[1], i[2], i[3]) + + session.commit() + ################################################################################ def end(): @@ -732,12 +760,13 @@ def main(): Arguments = [('a',"automatic","Process-New::Options::Automatic"), ('b',"no-binaries","Process-New::Options::No-Binaries"), + ('c',"comments","Process-New::Options::Comments"), ('h',"help","Process-New::Options::Help"), ('m',"manual-reject","Process-New::Options::Manual-Reject", "HasArg"), ('t',"trainee","Process-New::Options::Trainee"), ('n',"no-action","Process-New::Options::No-Action")] - for i in ["automatic", "no-binaries", "help", "manual-reject", "no-action", "version", "trainee"]: + for i in ["automatic", "no-binaries", "comments", "help", "manual-reject", "no-action", "version", "trainee"]: if not cnf.has_key("Process-New::Options::%s" % (i)): cnf["Process-New::Options::%s" % (i)] = "" @@ -767,13 +796,16 @@ def main(): sys.stderr.write("Sorting changes...\n") changes_files = sort_changes(changes_paths, session, Options["No-Binaries"]) - for changes_file in changes_files: - changes_file = utils.validate_changes_file_arg(changes_file, 0) - if not changes_file: - continue - print "\n" + os.path.basename(changes_file) + if Options["Comments"]: + show_new_comments(changes_files, session) + else: + for changes_file in changes_files: + changes_file = utils.validate_changes_file_arg(changes_file, 0) + if not changes_file: + continue + print "\n" + os.path.basename(changes_file) - do_pkg (changes_file, session) + do_pkg (changes_file, session) end()