提交 7be20695 编写于 作者: J Joerg Jaspert

Did a few style fixes. Moved determine_new and friends into daklib/queue....

Did a few style fixes. Moved determine_new and friends into daklib/queue. Removed some unneeded imports
上级 4c27b255
2007-12-30 Joerg Jaspert <joerg@debian.org>
* 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.
......
......@@ -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 "<h%d>%s</h%d>" % (level,html_escape(s),level)
print "<h%d>%s</h%d>" % (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)):
......
......@@ -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
......
......@@ -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
......
......@@ -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
......
......@@ -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):
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册