X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;ds=sidebyside;f=daklib%2Fqueue.py;h=0fe175f80de54f0eabcc61b0d7231aaac36618af;hb=255e810a2463fee08bd37234e1c50a92f886417e;hp=bd6560be2494378d79016eceded04693bf014dd8;hpb=707183e8538ece020a741fee60e56c73ae3a61c6;p=dak.git diff --git a/daklib/queue.py b/daklib/queue.py index bd6560be..0fe175f8 100755 --- a/daklib/queue.py +++ b/daklib/queue.py @@ -91,7 +91,7 @@ def get_type(f, session): # Determine what parts in a .changes are NEW -def determine_new(changes, files, warn=1): +def determine_new(changes, files, warn=1, session = None): """ Determine what parts in a C{changes} file are NEW. @@ -110,8 +110,6 @@ def determine_new(changes, files, warn=1): """ new = {} - session = DBConn().session() - # Build up a list of potentially new things for name, f in files.items(): # Skip byhand elements @@ -181,13 +179,11 @@ def determine_new(changes, files, warn=1): if new[pkg].has_key("othercomponents"): print "WARNING: %s already present in %s distribution." % (pkg, new[pkg]["othercomponents"]) - session.close() - return new ################################################################################ -def check_valid(new): +def check_valid(new, session = None): """ Check if section and priority for NEW packages exist in database. Additionally does sanity checks: @@ -204,13 +200,13 @@ def check_valid(new): priority_name = new[pkg]["priority"] file_type = new[pkg]["type"] - section = get_section(section_name) + section = get_section(section_name, session) if section is None: new[pkg]["section id"] = -1 else: new[pkg]["section id"] = section.section_id - priority = get_priority(priority_name) + priority = get_priority(priority_name, session) if priority is None: new[pkg]["priority id"] = -1 else: @@ -454,7 +450,7 @@ class Upload(object): # Check the .changes is non-empty if not self.pkg.files: - self.rejects.append("%s: nothing to do (Files field is empty)." % (base_filename)) + self.rejects.append("%s: nothing to do (Files field is empty)." % (os.path.basename(self.pkg.changes_file))) return False # Changes was syntactically valid even if we'll reject @@ -569,8 +565,8 @@ class Upload(object): architecture = control.Find("Architecture") upload_suite = self.pkg.changes["distribution"].keys()[0] - if architecture not in [a.arch_string for a in get_suite_architectures(default_suite, session)] \ - and architecture not in [a.arch_string for a in get_suite_architectures(upload_suite, session)]: + if architecture not in [a.arch_string for a in get_suite_architectures(default_suite, session = session)] \ + and architecture not in [a.arch_string for a in get_suite_architectures(upload_suite, session = session)]: self.rejects.append("Unknown architecture '%s'." % (architecture)) # Ensure the architecture of the .deb is one of the ones @@ -674,7 +670,7 @@ class Upload(object): entry["new"] = 1 else: dsc_file_exists = False - for myq in ["Embargoed", "Unembargoed", "ProposedUpdates", "OldProposedUpdates"]: + for myq in ["Embargoed", "Unembargoed", "ProposedUpdates", "OldProposedUpdates", "Lenny-Volatile-Proposed-Updates"]: if cnf.has_key("Dir::Queue::%s" % (myq)): if os.path.exists(os.path.join(cnf["Dir::Queue::" + myq], dsc_filename)): dsc_file_exists = True @@ -779,7 +775,7 @@ class Upload(object): location = cnf["Dir::Pool"] l = get_location(location, entry["component"], session=session) if l is None: - self.rejects.append("[INTERNAL ERROR] couldn't determine location (Component: %)" % entry["component"]) + self.rejects.append("[INTERNAL ERROR] couldn't determine location (Component: %s)" % entry["component"]) entry["location id"] = -1 else: entry["location id"] = l.location_id @@ -1899,8 +1895,8 @@ distribution.""" # Make sure that our source object is up-to-date session.expire(source) - # Add changelog information to the database - self.store_changelog() + # Add changelog information to the database + self.store_changelog() # Install the files into the pool for newfile, entry in self.pkg.files.items(): @@ -2686,6 +2682,15 @@ distribution.""" session = DBConn().session() + # Check if upload already has a changelog entry + query = """SELECT changelog_id FROM changes WHERE source = :source + AND version = :version AND architecture = :architecture AND changelog_id != 0""" + if session.execute(query, {'source': self.pkg.changes['source'], \ + 'version': self.pkg.changes['version'], \ + 'architecture': " ".join(self.pkg.changes['architecture'].keys())}).rowcount: + session.commit() + return + # Add current changelog text into changelogs_text table, return created ID query = "INSERT INTO changelogs_text (changelog) VALUES (:changelog) RETURNING id" ID = session.execute(query, {'changelog': self.pkg.changes['changes']}).fetchone()[0]