X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=daklib%2Fqueue.py;h=a5a8eab4a2518e703d3a8c4f9884b588c60b9201;hb=e2e32f8130e1e9a69acc5a5cb24f9d3de3330a42;hp=6e1f3893d66c5ad01ab93da39eda638be5f6e8cb;hpb=e7858bde0c543619876753639a40e031079dae41;p=dak.git diff --git a/daklib/queue.py b/daklib/queue.py old mode 100644 new mode 100755 index 6e1f3893..a5a8eab4 --- 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: + utils.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: + utils.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 @@ -176,6 +279,8 @@ class Upload: Subst["__MAINTAINER_FROM__"] = changes["changedby2047"] Subst["__MAINTAINER_TO__"] = "%s, %s" % (changes["changedby2047"], changes["maintainer2047"]) + if "sponsoremail" in changes: + Subst["__MAINTAINER_TO__"] += ", %s"%changes["sponsoremail"] Subst["__MAINTAINER__"] = changes.get("changed-by", "Unknown") else: Subst["__MAINTAINER_FROM__"] = changes["maintainer2047"]