X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=dak%2Fcontrol_suite.py;h=c6084d8bb2bf3e958714acff62cd9897b096f4eb;hb=c85fbd74d65ed0c0878d9ba1125186ec151cbe4e;hp=64e82534200e98d36b7d23098fa004465c198d3a;hpb=7aaaad3135c9164390af5897925660842368660b;p=dak.git diff --git a/dak/control_suite.py b/dak/control_suite.py index 64e82534..c6084d8b 100755 --- a/dak/control_suite.py +++ b/dak/control_suite.py @@ -1,6 +1,6 @@ #!/usr/bin/env python -# Manipulate suite tags +""" Manipulate suite tags """ # Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006 James Troup # This program is free software; you can redistribute it and/or modify @@ -43,9 +43,9 @@ import pg, sys import apt_pkg -import dak.lib.database as database -import dak.lib.logging as logging -import dak.lib.utils as utils +from daklib import database +from daklib import logging +from daklib import utils ####################################################################################### @@ -77,13 +77,12 @@ def get_id (package, version, architecture): ql = q.getresult() if not ql: - utils.warn("Couldn't find '%s~%s~%s'." % (package, version, architecture)) + utils.warn("Couldn't find '%s_%s_%s'." % (package, version, architecture)) return None if len(ql) > 1: - utils.warn("Found more than one match for '%s~%s~%s'." % (package, version, architecture)) + utils.warn("Found more than one match for '%s_%s_%s'." % (package, version, architecture)) return None - id = ql[0][0] - return id + return ql[0][0] ####################################################################################### @@ -119,25 +118,25 @@ def set_suite (file, suite_id): for key in current.keys(): if not desired.has_key(key): (package, version, architecture) = key.split() - id = current[key] + pkid = current[key] if architecture == "source": - q = projectB.query("DELETE FROM src_associations WHERE id = %s" % (id)) + q = projectB.query("DELETE FROM src_associations WHERE id = %s" % (pkid)) else: - q = projectB.query("DELETE FROM bin_associations WHERE id = %s" % (id)) - Logger.log(["removed",key,id]) + q = projectB.query("DELETE FROM bin_associations WHERE id = %s" % (pkid)) + Logger.log(["removed", key, pkid]) # Check to see which packages need added and add them for key in desired.keys(): if not current.has_key(key): (package, version, architecture) = key.split() - id = get_id (package, version, architecture) - if not id: + pkid = get_id (package, version, architecture) + if not pkid: continue if architecture == "source": - q = projectB.query("INSERT INTO src_associations (suite, source) VALUES (%s, %s)" % (suite_id, id)) + q = projectB.query("INSERT INTO src_associations (suite, source) VALUES (%s, %s)" % (suite_id, pkid)) else: - q = projectB.query("INSERT INTO bin_associations (suite, bin) VALUES (%s, %s)" % (suite_id, id)) - Logger.log(["added",key,id]) + q = projectB.query("INSERT INTO bin_associations (suite, bin) VALUES (%s, %s)" % (suite_id, pkid)) + Logger.log(["added", key, pkid]) projectB.query("COMMIT WORK") @@ -163,13 +162,13 @@ def process_file (file, suite, action): (package, version, architecture) = split_line - id = get_id(package, version, architecture) - if not id: + pkid = get_id(package, version, architecture) + if not pkid: continue if architecture == "source": # Find the existing assoications ID, if any - q = projectB.query("SELECT id FROM src_associations WHERE suite = %s and source = %s" % (suite_id, id)) + q = projectB.query("SELECT id FROM src_associations WHERE suite = %s and source = %s" % (suite_id, pkid)) ql = q.getresult() if not ql: assoication_id = None @@ -178,19 +177,19 @@ def process_file (file, suite, action): # Take action if action == "add": if assoication_id: - utils.warn("'%s~%s~%s' already exists in suite %s." % (package, version, architecture, suite)) + utils.warn("'%s_%s_%s' already exists in suite %s." % (package, version, architecture, suite)) continue else: - q = projectB.query("INSERT INTO src_associations (suite, source) VALUES (%s, %s)" % (suite_id, id)) + q = projectB.query("INSERT INTO src_associations (suite, source) VALUES (%s, %s)" % (suite_id, pkid)) elif action == "remove": if assoication_id == None: - utils.warn("'%s~%s~%s' doesn't exist in suite %s." % (package, version, architecture, suite)) + utils.warn("'%s_%s_%s' doesn't exist in suite %s." % (package, version, architecture, suite)) continue else: q = projectB.query("DELETE FROM src_associations WHERE id = %s" % (assoication_id)) else: # Find the existing assoications ID, if any - q = projectB.query("SELECT id FROM bin_associations WHERE suite = %s and bin = %s" % (suite_id, id)) + q = projectB.query("SELECT id FROM bin_associations WHERE suite = %s and bin = %s" % (suite_id, pkid)) ql = q.getresult() if not ql: assoication_id = None @@ -199,13 +198,13 @@ def process_file (file, suite, action): # Take action if action == "add": if assoication_id: - utils.warn("'%s~%s~%s' already exists in suite %s." % (package, version, architecture, suite)) + utils.warn("'%s_%s_%s' already exists in suite %s." % (package, version, architecture, suite)) continue else: - q = projectB.query("INSERT INTO bin_associations (suite, bin) VALUES (%s, %s)" % (suite_id, id)) + q = projectB.query("INSERT INTO bin_associations (suite, bin) VALUES (%s, %s)" % (suite_id, pkid)) elif action == "remove": if assoication_id == None: - utils.warn("'%s~%s~%s' doesn't exist in suite %s." % (package, version, architecture, suite)) + utils.warn("'%s_%s_%s' doesn't exist in suite %s." % (package, version, architecture, suite)) continue else: q = projectB.query("DELETE FROM bin_associations WHERE id = %s" % (assoication_id)) @@ -242,14 +241,18 @@ def main (): ('s',"set", "Control-Suite::Options::Set", "HasArg")] for i in ["add", "help", "list", "remove", "set", "version" ]: - if not Cnf.has_key("Control-Suite::Options::%s" % (i)): - Cnf["Control-Suite::Options::%s" % (i)] = "" - - file_list = apt_pkg.ParseCommandLine(Cnf,Arguments,sys.argv) + if not Cnf.has_key("Control-Suite::Options::%s" % (i)): + Cnf["Control-Suite::Options::%s" % (i)] = "" + + try: + file_list = apt_pkg.ParseCommandLine(Cnf,Arguments,sys.argv); + except SystemError, e: + print "%s\n" % e + usage(1) Options = Cnf.SubTree("Control-Suite::Options") if Options["Help"]: - usage() + usage() projectB = pg.connect(Cnf["DB::Name"], Cnf["DB::Host"],int(Cnf["DB::Port"])) @@ -272,16 +275,16 @@ def main (): utils.fubar("No action specified.") # Safety/Sanity check - if action == "set" and suite != "testing": - utils.fubar("Will not reset a suite other than testing.") + if action == "set" and suite not in ["testing", "etch-m68k"]: + utils.fubar("Will not reset suite %s" % (suite)) if action == "list": get_list(suite) else: Logger = logging.Logger(Cnf, "control-suite") if file_list: - for file in file_list: - process_file(utils.open_file(file), suite, action) + for f in file_list: + process_file(utils.open_file(f), suite, action) else: process_file(sys.stdin, suite, action) Logger.close() @@ -290,4 +293,3 @@ def main (): if __name__ == '__main__': main() -