X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=katie.py;h=7f428318ffea66b24e305932eda4975e1730a04a;hb=9540d873fa78598454af57f5f8a4875969ed0439;hp=f952b34f088ea0b43e0acac5c5adb0fe6f01217b;hpb=00e76986e61d5dc2a84f62109423f0ef45d1c830;p=dak.git diff --git a/katie.py b/katie.py index f952b34f..7f428318 100644 --- a/katie.py +++ b/katie.py @@ -2,7 +2,7 @@ # Utility functions for katie # Copyright (C) 2001, 2002, 2003, 2004, 2005 James Troup -# $Id: katie.py,v 1.53 2005-01-18 22:18:55 troup Exp $ +# $Id: katie.py,v 1.59 2005-12-17 10:57:03 rmurray Exp $ # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -31,9 +31,7 @@ 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_of_mu = re.compile(r"\.\d+\.\d+$"); -re_bin_only_nmu_of_nmu = re.compile(r"\.\d+$"); - +re_bin_only_nmu = re.compile(r"\+b\d+$"); ############################################################################### # Convenience wrapper to carry around all the package information in @@ -451,26 +449,41 @@ distribution."""; changes_file[:-8]+".debinfo"); os.rename(temp_filename, filename); - ## Special support to enable clean auto-building of accepted packages + self.queue_build("accepted", Cnf["Dir::Queue::Accepted"]) + + ########################################################################### + + def queue_build (self, queue, path): + Cnf = self.Cnf + Subst = self.Subst + files = self.pkg.files + changes = self.pkg.changes + changes_file = self.pkg.changes_file + dsc = self.pkg.dsc + file_keys = files.keys() + + ## Special support to enable clean auto-building of queued packages + queue_id = db_access.get_or_set_queue_id(queue) + self.projectB.query("BEGIN WORK"); for suite in changes["distribution"].keys(): - if suite not in Cnf.ValueList("Dinstall::AcceptedAutoBuildSuites"): + if suite not in Cnf.ValueList("Dinstall::QueueBuildSuites"): continue; suite_id = db_access.get_suite_id(suite); - dest_dir = Cnf["Dir::AcceptedAutoBuild"]; - if Cnf.FindB("Dinstall::SecurityAcceptedAutoBuild"): + dest_dir = Cnf["Dir::QueueBuild"]; + if Cnf.FindB("Dinstall::SecurityQueueBuild"): dest_dir = os.path.join(dest_dir, suite); for file in file_keys: - src = os.path.join(Cnf["Dir::Queue::Accepted"], file); + src = os.path.join(path, file); dest = os.path.join(dest_dir, file); - if Cnf.FindB("Dinstall::SecurityAcceptedAutoBuild"): + if Cnf.FindB("Dinstall::SecurityQueueBuild"): # Copy it since the original won't be readable by www-data utils.copy(src, dest); else: # Create a symlink to it os.symlink(src, dest); # Add it to the list of packages for later processing by apt-ftparchive - self.projectB.query("INSERT INTO accepted_autobuild (suite, filename, in_accepted) VALUES (%s, '%s', 't')" % (suite_id, dest)); + self.projectB.query("INSERT INTO queue_build (suite, queue, filename, in_queue) VALUES (%s, %s, '%s', 't')" % (suite_id, queue_id, dest)); # If the .orig.tar.gz is in the pool, create a symlink to # it (if one doesn't already exist) if self.pkg.orig_tar_id: @@ -489,10 +502,10 @@ distribution."""; src = os.path.join(ql[0][0], ql[0][1]); os.symlink(src, dest); # Add it to the list of packages for later processing by apt-ftparchive - self.projectB.query("INSERT INTO accepted_autobuild (suite, filename, in_accepted) VALUES (%s, '%s', 't')" % (suite_id, dest)); + self.projectB.query("INSERT INTO queue_build (suite, queue, filename, in_queue) VALUES (%s, %s, '%s', 't')" % (suite_id, queue_id, dest)); # if it does, update things to ensure it's not removed prematurely else: - self.projectB.query("UPDATE accepted_autobuild SET in_accepted = 't', last_used = NULL WHERE filename = '%s' AND suite = %s" % (dest, suite_id)); + self.projectB.query("UPDATE queue_build SET in_queue = 't', last_used = NULL WHERE filename = '%s' AND suite = %s" % (dest, suite_id)); self.projectB.query("COMMIT WORK"); @@ -660,8 +673,7 @@ distribution."""; # upload being processed. # # (1) exact match => 1.0-3 - # (2) Bin-only NMU of an MU => 1.0-3.0.1 - # (3) Bin-only NMU of a sourceful-NMU => 1.0-3.1.1 + # (2) Bin-only NMU => 1.0-3+b1 , 1.0-3.1+b1 def source_exists (self, package, source_version, suites = ["any"]): okay = 1 @@ -694,17 +706,13 @@ distribution."""; continue # Try (2) - orig_source_version = re_bin_only_nmu_of_mu.sub('', source_version) - if orig_source_version in ql: - continue - - # Try (3) - orig_source_version = re_bin_only_nmu_of_nmu.sub('', source_version) + orig_source_version = re_bin_only_nmu.sub('', source_version) if orig_source_version in ql: continue # No source found... okay = 0 + break return okay ################################################################################ @@ -813,7 +821,8 @@ distribution."""; # # And - we really should complain to the dorks who configured dak self.reject("%s is mapped to, but not enhanced by %s - adding anyways" % (suite, addsuite), "Warning: ") - self.pkg.changes["distribution"][addsuite] = 1 + self.pkg.changes.setdefault("propdistribution", {}) + self.pkg.changes["propdistribution"][addsuite] = 1 cansave = 1 elif not target_version: # not targets_version is true when the package is NEW @@ -822,17 +831,18 @@ distribution."""; self.reject("Won't propogate NEW packages.") elif apt_pkg.VersionCompare(new_version, add_version) < 0: # propogation would be redundant. no need to reject though. - #self.reject("ignoring versionconflict: %s: old version (%s) in %s <= new version (%s) targeted at %s." % (file, existent_version, suite, new_version, target_suite), "Warning: "); - self.reject("foo", "Warning: ") + self.reject("ignoring versionconflict: %s: old version (%s) in %s <= new version (%s) targeted at %s." % (file, existent_version, suite, new_version, target_suite), "Warning: ") cansave = 1 elif apt_pkg.VersionCompare(new_version, add_version) > 0 and \ - apt_pkg.VersionCompare(add_version, target_version) == 0: + apt_pkg.VersionCompare(add_version, target_version) >= 0: # propogate!! - self.pkg.changes["distribution"][addsuite] = 1 + self.reject("Propogating upload to %s" % (addsuite), "Warning: ") + self.pkg.changes.setdefault("propdistribution", {}) + self.pkg.changes["propdistribution"][addsuite] = 1 cansave = 1 if not cansave: - self.reject("%s: old version (%s) in %s <= new version (%s) targeted at %s." % (file, existent_version, suite, new_version, target_suite)); + self.reject("%s: old version (%s) in %s <= new version (%s) targeted at %s." % (file, existent_version, suite, new_version, target_suite)) ################################################################################