From 7be2069562f3ca875c3ac29efb806d019cd08acd Mon Sep 17 00:00:00 2001 From: Joerg Jaspert Date: Sun, 30 Dec 2007 22:52:12 +0100 Subject: [PATCH] Did a few style fixes. Moved determine_new and friends into daklib/queue. Removed some unneeded imports --- ChangeLog | 7 ++- dak/examine_package.py | 8 ++-- dak/process_new.py | 2 +- dak/show_new.py | 6 +-- daklib/queue.py | 103 +++++++++++++++++++++++++++++++++++++++++ daklib/utils.py | 102 ---------------------------------------- 6 files changed, 116 insertions(+), 112 deletions(-) mode change 100644 => 100755 daklib/queue.py diff --git a/ChangeLog b/ChangeLog index a3d333e1..614f4037 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,8 @@ 2007-12-30 Joerg Jaspert - * dak/dak.py (init): add show-new + * dak/dak.py (init): add show-new. This is based on a patch + submitted by Thomas Viehmann in Bug #408318, but large parts of + handling it are rewritten and show-new is done by me. * dak/queue_report.py (table_row): Add link to generated html page for NEW package. @@ -26,6 +28,7 @@ (do_lintian): new function (check_deb): use it (output_deb_info): Use print_escaped_text, not print_formatted_text. + Also import daklib.queue, determine_new now lives there Also add a variable to see if we want html output. Default is disabled, show_new enables it for its use. @@ -38,7 +41,7 @@ (check_valid): Moved out of here. (get_type): Moved out of here. - * daklib/utils.py (determine_new): Moved here. + * daklib/queue.py (determine_new): Moved here. (check_valid): Moved here. (get_type): Moved here. diff --git a/dak/examine_package.py b/dak/examine_package.py index 2ac4744d..0b8a4422 100755 --- a/dak/examine_package.py +++ b/dak/examine_package.py @@ -32,9 +32,9 @@ ################################################################################ -import errno, os, pg, re, sys, md5, time +import errno, os, pg, re, sys, md5 import apt_pkg, apt_inst -import daklib.database, daklib.utils +import daklib.database, daklib.utils, daklib.queue ################################################################################ @@ -99,7 +99,7 @@ def escape_if_needed(s): def headline(s, level=2): if use_html: - print "%s" % (level,html_escape(s),level) + print "%s" % (level, html_escape(s), level) else: print "---- %s ----" % (s) @@ -462,7 +462,7 @@ def main (): # Cnf = daklib.utils.get_conf() Arguments = [('h',"help","Examine-Package::Options::Help"), - ('H',"Html-output","Examine-Package::Options::Html-Output"), + ('H',"html-output","Examine-Package::Options::Html-Output"), ] for i in [ "Help", "Html-Output", "partial-html" ]: if not Cnf.has_key("Examine-Package::Options::%s" % (i)): diff --git a/dak/process_new.py b/dak/process_new.py index 9ffbd670..69cd8368 100755 --- a/dak/process_new.py +++ b/dak/process_new.py @@ -621,7 +621,7 @@ def do_new(): done = 0 while not done: # Find out what's new - new = daklib.utils.determine_new(changes, files, projectB) + new = daklib.queue.determine_new(changes, files, projectB) if not new: break diff --git a/dak/show_new.py b/dak/show_new.py index 895defad..d6bd7ae1 100755 --- a/dak/show_new.py +++ b/dak/show_new.py @@ -25,8 +25,8 @@ ################################################################################ -import copy, errno, os, stat, sys, time -import apt_pkg, apt_inst +import copy, os, sys, time +import apt_pkg import examine_package import daklib.database import daklib.queue @@ -106,7 +106,7 @@ def do_pkg(changes_file): changes["suite"] = copy.copy(changes["distribution"]) # Find out what's new - new = daklib.utils.determine_new(changes, files, projectB, 0) + new = daklib.queue.determine_new(changes, files, projectB, 0) stdout_fd = sys.stdout diff --git a/daklib/queue.py b/daklib/queue.py old mode 100644 new mode 100755 index 6e1f3893..05cd0be0 --- a/daklib/queue.py +++ b/daklib/queue.py @@ -32,6 +32,109 @@ re_default_answer = re.compile(r"\[(.*)\]") re_fdnic = re.compile(r"\n\n") re_bin_only_nmu = re.compile(r"\+b\d+$") +################################################################################ + +# Determine what parts in a .changes are NEW + +def determine_new(changes, files, projectB, warn=1): + new = {} + + # Build up a list of potentially new things + for file in files.keys(): + f = files[file] + # Skip byhand elements + if f["type"] == "byhand": + continue + pkg = f["package"] + priority = f["priority"] + section = f["section"] + type = get_type(f) + component = f["component"] + + if type == "dsc": + priority = "source" + if not new.has_key(pkg): + new[pkg] = {} + new[pkg]["priority"] = priority + new[pkg]["section"] = section + new[pkg]["type"] = type + new[pkg]["component"] = component + new[pkg]["files"] = [] + else: + old_type = new[pkg]["type"] + if old_type != type: + # source gets trumped by deb or udeb + if old_type == "dsc": + new[pkg]["priority"] = priority + new[pkg]["section"] = section + new[pkg]["type"] = type + new[pkg]["component"] = component + new[pkg]["files"].append(file) + if f.has_key("othercomponents"): + new[pkg]["othercomponents"] = f["othercomponents"] + + for suite in changes["suite"].keys(): + suite_id = database.get_suite_id(suite) + for pkg in new.keys(): + component_id = database.get_component_id(new[pkg]["component"]) + type_id = database.get_override_type_id(new[pkg]["type"]) + q = projectB.query("SELECT package FROM override WHERE package = '%s' AND suite = %s AND component = %s AND type = %s" % (pkg, suite_id, component_id, type_id)) + ql = q.getresult() + if ql: + for file in new[pkg]["files"]: + if files[file].has_key("new"): + del files[file]["new"] + del new[pkg] + + if warn: + if changes["suite"].has_key("stable"): + print "WARNING: overrides will be added for stable!" + if changes["suite"].has_key("oldstable"): + print "WARNING: overrides will be added for OLDstable!" + for pkg in new.keys(): + if new[pkg].has_key("othercomponents"): + print "WARNING: %s already present in %s distribution." % (pkg, new[pkg]["othercomponents"]) + + return new + +################################################################################ + +def get_type(f): + # Determine the type + if f.has_key("dbtype"): + type = f["dbtype"] + elif f["type"] in [ "orig.tar.gz", "orig.tar.bz2", "tar.gz", "tar.bz2", "diff.gz", "diff.bz2", "dsc" ]: + type = "dsc" + else: + fubar("invalid type (%s) for new. Dazed, confused and sure as heck not continuing." % (type)) + + # Validate the override type + type_id = database.get_override_type_id(type) + if type_id == -1: + fubar("invalid type (%s) for new. Say wha?" % (type)) + + return type + +################################################################################ + +# check if section/priority values are valid + +def check_valid(new): + for pkg in new.keys(): + section = new[pkg]["section"] + priority = new[pkg]["priority"] + type = new[pkg]["type"] + new[pkg]["section id"] = database.get_section_id(section) + new[pkg]["priority id"] = database.get_priority_id(new[pkg]["priority"]) + # Sanity checks + di = section.find("debian-installer") != -1 + if (di and type != "udeb") or (not di and type == "udeb"): + new[pkg]["section id"] = -1 + if (priority == "source" and type != "dsc") or \ + (priority != "source" and type == "dsc"): + new[pkg]["priority id"] = -1 + + ############################################################################### # Convenience wrapper to carry around all the package information in diff --git a/daklib/utils.py b/daklib/utils.py index 8f9084d1..c6eeac2f 100755 --- a/daklib/utils.py +++ b/daklib/utils.py @@ -227,108 +227,6 @@ The rules for (signing_rules == 1)-mode are: ################################################################################ -# Determine what parts in a .changes are NEW - -def determine_new (changes, files, projectB, warn=1): - new = {} - - # Build up a list of potentially new things - for file in files.keys(): - f = files[file] - # Skip byhand elements - if f["type"] == "byhand": - continue - pkg = f["package"] - priority = f["priority"] - section = f["section"] - type = get_type(f) - component = f["component"] - - if type == "dsc": - priority = "source" - if not new.has_key(pkg): - new[pkg] = {} - new[pkg]["priority"] = priority - new[pkg]["section"] = section - new[pkg]["type"] = type - new[pkg]["component"] = component - new[pkg]["files"] = [] - else: - old_type = new[pkg]["type"] - if old_type != type: - # source gets trumped by deb or udeb - if old_type == "dsc": - new[pkg]["priority"] = priority - new[pkg]["section"] = section - new[pkg]["type"] = type - new[pkg]["component"] = component - new[pkg]["files"].append(file) - if f.has_key("othercomponents"): - new[pkg]["othercomponents"] = f["othercomponents"] - - for suite in changes["suite"].keys(): - suite_id = database.get_suite_id(suite) - for pkg in new.keys(): - component_id = database.get_component_id(new[pkg]["component"]) - type_id = database.get_override_type_id(new[pkg]["type"]) - q = projectB.query("SELECT package FROM override WHERE package = '%s' AND suite = %s AND component = %s AND type = %s" % (pkg, suite_id, component_id, type_id)) - ql = q.getresult() - if ql: - for file in new[pkg]["files"]: - if files[file].has_key("new"): - del files[file]["new"] - del new[pkg] - - if warn: - if changes["suite"].has_key("stable"): - print "WARNING: overrides will be added for stable!" - if changes["suite"].has_key("oldstable"): - print "WARNING: overrides will be added for OLDstable!" - for pkg in new.keys(): - if new[pkg].has_key("othercomponents"): - print "WARNING: %s already present in %s distribution." % (pkg, new[pkg]["othercomponents"]) - - return new - -################################################################################ - -def get_type (f): - # Determine the type - if f.has_key("dbtype"): - type = f["dbtype"] - elif f["type"] in [ "orig.tar.gz", "orig.tar.bz2", "tar.gz", "tar.bz2", "diff.gz", "diff.bz2", "dsc" ]: - type = "dsc" - else: - fubar("invalid type (%s) for new. Dazed, confused and sure as heck not continuing." % (type)) - - # Validate the override type - type_id = database.get_override_type_id(type) - if type_id == -1: - fubar("invalid type (%s) for new. Say wha?" % (type)) - - return type - -################################################################################ - -# check if section/priority values are valid - -def check_valid (new): - for pkg in new.keys(): - section = new[pkg]["section"] - priority = new[pkg]["priority"] - type = new[pkg]["type"] - new[pkg]["section id"] = database.get_section_id(section) - new[pkg]["priority id"] = database.get_priority_id(new[pkg]["priority"]) - # Sanity checks - di = section.find("debian-installer") != -1 - if (di and type != "udeb") or (not di and type == "udeb"): - new[pkg]["section id"] = -1 - if (priority == "source" and type != "dsc") or \ - (priority != "source" and type == "dsc"): - new[pkg]["priority id"] = -1 - -################################################################################ - # Dropped support for 1.4 and ``buggy dchanges 3.4'' (?!) compared to di.pl def build_file_list(changes, is_a_dsc=0): -- 2.39.2