X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=daklib%2Fqueue.py;h=4061c05d5c6cfe83e7e083c98a2b0fd28ccced5c;hb=ba77095c326cc03fc5ab18423b874ff06e6fcdba;hp=698033464d8f7fd3a5725a4c343d2ae232f9abf4;hpb=7a45106601c9a030fc839d72a19c2f02fe125583;p=dak.git diff --git a/daklib/queue.py b/daklib/queue.py index 69803346..4061c05d 100755 --- a/daklib/queue.py +++ b/daklib/queue.py @@ -1,4 +1,5 @@ #!/usr/bin/env python +# vim:set et sw=4: # Queue utility functions for dak # Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006 James Troup @@ -23,18 +24,12 @@ import cPickle, errno, os, pg, re, stat, sys, time import apt_inst, apt_pkg import utils, database from dak_exceptions import * +from regexes import re_default_answer, re_fdnic, re_bin_only_nmu from types import * ############################################################################### -re_isanum = re.compile (r"^\d+$") -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): @@ -498,19 +493,18 @@ distribution.""" if changes["architecture"].has_key("source") and \ dsc.has_key("bts changelog"): - temp_filename = utils.temp_filename(Cnf["Dir::Queue::BTSVersionTrack"], - dotprefix=1, perms=0644) - version_history = utils.open_file(temp_filename, 'w') + (fd, temp_filename) = utils.temp_filename(Cnf["Dir::Queue::BTSVersionTrack"], prefix=".") + version_history = os.fdopen(temp_filename, 'w') version_history.write(dsc["bts changelog"]) version_history.close() filename = "%s/%s" % (Cnf["Dir::Queue::BTSVersionTrack"], changes_file[:-8]+".versions") os.rename(temp_filename, filename) + os.chmod(filename, "0644") # Write out the binary -> source mapping. - temp_filename = utils.temp_filename(Cnf["Dir::Queue::BTSVersionTrack"], - dotprefix=1, perms=0644) - debinfo = utils.open_file(temp_filename, 'w') + (fd, temp_filename) = utils.temp_filename(Cnf["Dir::Queue::BTSVersionTrack"], prefix=".") + debinfo = os.fdopen(temp_filename, 'w') for file_entry in file_keys: f = files[file_entry] if f["type"] == "deb": @@ -522,6 +516,7 @@ distribution.""" filename = "%s/%s" % (Cnf["Dir::Queue::BTSVersionTrack"], changes_file[:-8]+".debinfo") os.rename(temp_filename, filename) + os.chmod(filename, "0644") self.queue_build("accepted", Cnf["Dir::Queue::Accepted"]) @@ -669,7 +664,7 @@ distribution.""" # If we weren't given a manual rejection message, spawn an # editor so the user can add one in... if manual and not reject_message: - temp_filename = utils.temp_filename() + (fd, temp_filename) = utils.temp_filename() editor = os.environ.get("EDITOR","vi") answer = 'E' while answer == 'E': @@ -848,7 +843,8 @@ distribution.""" ################################################################################ - def cross_suite_version_check(self, query_result, file, new_version): + def cross_suite_version_check(self, query_result, file, new_version, + sourceful=False): """Ensure versions are newer than existing packages in target suites and that cross-suite version checking rules as set out in the conf file are satisfied.""" @@ -863,7 +859,7 @@ distribution.""" for entry in query_result: existent_version = entry[0] suite = entry[1] - if suite in must_be_newer_than and \ + if suite in must_be_newer_than and sourceful and \ apt_pkg.VersionCompare(new_version, existent_version) < 1: self.reject("%s: old version (%s) in %s >= new version (%s) targeted at %s." % (file, existent_version, suite, new_version, target_suite)) if suite in must_be_older_than and \ @@ -925,7 +921,8 @@ SELECT b.version, su.suite_name FROM binaries b, bin_associations ba, suite su, AND ba.bin = b.id AND ba.suite = su.id AND b.architecture = a.id""" % (files[file]["package"], files[file]["architecture"])) - self.cross_suite_version_check(q.getresult(), file, files[file]["version"]) + self.cross_suite_version_check(q.getresult(), file, + files[file]["version"], sourceful=False) # Check for any existing copies of the file q = self.projectB.query(""" @@ -950,7 +947,8 @@ SELECT b.id FROM binaries b, architecture a q = self.projectB.query(""" SELECT s.version, su.suite_name FROM source s, src_associations sa, suite su WHERE s.source = '%s' AND sa.source = s.id AND sa.suite = su.id""" % (dsc.get("source"))) - self.cross_suite_version_check(q.getresult(), file, dsc.get("version")) + self.cross_suite_version_check(q.getresult(), file, dsc.get("version"), + sourceful=True) return self.reject_message