X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=dak%2Foverride.py;h=2e10bca17b5c314f8ef6237b0363b2ddff09dd11;hb=d9822f04453a1b62ca0aa66e2efeea35f654778f;hp=9b4b3f6d09344638a321b87cac5b42bdf3fd9515;hpb=ff8d2de3b422e7f142b43dc5af4c2ff6bd32234e;p=dak.git diff --git a/dak/override.py b/dak/override.py old mode 100755 new mode 100644 index 9b4b3f6d..2e10bca1 --- a/dak/override.py +++ b/dak/override.py @@ -68,16 +68,16 @@ def main (): ('s',"suite","Override::Options::Suite", "HasArg"), ] for i in ["help", "no-action"]: - if not Cnf.has_key("Override::Options::%s" % (i)): - Cnf["Override::Options::%s" % (i)] = "" + if not Cnf.has_key("Override::Options::%s" % (i)): + Cnf["Override::Options::%s" % (i)] = "" if not Cnf.has_key("Override::Options::Suite"): - Cnf["Override::Options::Suite"] = "unstable" + Cnf["Override::Options::Suite"] = "unstable" arguments = apt_pkg.ParseCommandLine(Cnf,Arguments,sys.argv) Options = Cnf.SubTree("Override::Options") if Options["Help"]: - usage() + usage() projectB = pg.connect(Cnf["DB::Name"], Cnf["DB::Host"], int(Cnf["DB::Port"])) daklib.database.init(Cnf, projectB) @@ -106,31 +106,51 @@ def main (): daklib.utils.fubar("%s is not a valid section or priority" % (arg)) # Retrieve current section/priority... - # TODO: fetch dsc records and update them too, if needed. - q = projectB.query(""" + oldsection, oldsourcesection, oldpriority = None, None, None + for type in ['source', 'binary']: + eqdsc = '!=' + if type == 'source': + eqdsc = '=' + q = projectB.query(""" SELECT priority.priority AS prio, section.section AS sect, override_type.type AS type FROM override, priority, section, suite, override_type WHERE override.priority = priority.id AND override.type = override_type.id - AND override_type.type != 'dsc' + AND override_type.type %s 'dsc' AND override.section = section.id AND override.package = %s AND override.suite = suite.id AND suite.suite_name = %s - """ % (pg._quote(package,"str"), pg._quote(suite,"str"))) + """ % (eqdsc, pg._quote(package,"str"), pg._quote(suite,"str"))) - if q.ntuples() == 0: - daklib.utils.fubar("Unable to find package %s" % (package)) - if q.ntuples() > 1: - daklib.utils.fubar("%s is ambiguous. Matches %d packages" % (package,q.ntuples())) + if q.ntuples() == 0: + continue + if q.ntuples() > 1: + daklib.utils.fubar("%s is ambiguous. Matches %d packages" % (package,q.ntuples())) - r = q.getresult() - oldsection = r[0][1] - oldpriority = r[0][0] + r = q.getresult() + if type == 'binary': + oldsection = r[0][1] + oldpriority = r[0][0] + else: + oldsourcesection = r[0][1] + + if not oldpriority and not oldsourcesection: + daklib.utils.fubar("Unable to find package %s" % (package)) + if oldsection and oldsourcesection and oldsection != oldsourcesection: + # When setting overrides, both source & binary will become the same section + daklib.utils.warn("Source is in section '%s' instead of '%s'" % (oldsourcesection, oldsection)) + if not oldsection: + oldsection = oldsourcesection if not arguments: - print "%s is in section '%s' at priority '%s'" % ( - package,oldsection,oldpriority) + if oldpriority: + print "%s is in section '%s' at priority '%s'" % ( + package,oldsection,oldpriority) + elif oldsourcesection: + # no use printing this line if also binary + print "%s is in section '%s'" % ( + package,oldsourcesection) sys.exit(0) # At this point, we have a new section and priority... check they're valid... @@ -159,6 +179,9 @@ def main (): print "I: Doing nothing" sys.exit(0) + if newpriority and not oldpriority: + daklib.utils.fubar("Trying to set priority of a source-only package") + # If we're in no-action mode if Options["No-Action"]: if newpriority != oldpriority: @@ -192,9 +215,10 @@ def main (): UPDATE override SET priority=%d WHERE package=%s + AND override.type != %d AND suite = (SELECT id FROM suite WHERE suite_name=%s)""" % ( newprioid, - pg._quote(package,"str"), + pg._quote(package,"str"), daklib.database.get_override_type_id("dsc"), pg._quote(suite,"str") )) Logger.log(["changed priority",package,oldpriority,newpriority]) @@ -207,7 +231,7 @@ def main (): newsecid, pg._quote(package,"str"), pg._quote(suite,"str") )) - Logger.log(["changed priority",package,oldsection,newsection]) + Logger.log(["changed section",package,oldsection,newsection]) projectB.query("COMMIT WORK") if Options.has_key("Done"):