X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=dak%2Fprocess_unchecked.py;h=dc92f74fc5a2065d4d7259b788002f8966c16860;hb=a29878d1b68545cac92669617f94c81330ee4fc7;hp=4a4cfd6b341d35f1f4e07e4425d2d30349eb9aeb;hpb=9bac51669faa98711afc601788ef0354205863b1;p=dak.git diff --git a/dak/process_unchecked.py b/dak/process_unchecked.py index 4a4cfd6b..dc92f74f 100755 --- a/dak/process_unchecked.py +++ b/dak/process_unchecked.py @@ -36,6 +36,8 @@ import daklib.queue import daklib.utils from types import * +from syck import * + ################################################################################ @@ -998,6 +1000,60 @@ def check_timestamps(): except: reject("%s: deb contents timestamp check failed [%s: %s]" % (filename, sys.exc_type, sys.exc_value)) +################################################################################ +################################################################################ + +# We reject packages if the release team defined a transition for them +def check_transition(sourcepkg): + + # Only check if there is a file defined (and existant) with checks. It's a little bit + # specific to Debian, not much use for others, so return early there. + if not Cnf.has_key("Dinstall::Reject::ReleaseTransitions") or not os.path.exists("%s" % (Cnf["Dinstall::Reject::ReleaseTransitions"])): + return + + # Parse the yaml file + sourcefile = file(Cnf["Dinstall::Reject::ReleaseTransitions"], 'r') + sourcecontent = sourcefile.read() + try: + transitions = load(sourcecontent) + except error, msg: + # This shouldn't happen, the release team has a wrapper to check the file, but better + # safe then sorry + daklib.utils.warn("Not checking transitions, the transitions file is broken: %s." % (msg)) + return + + # Now look through all defined transitions + for trans in transitions: + t = transitions[trans] + source = t["source"] + new_vers = t["new"] + + # Will be None if nothing is in testing. + curvers = daklib.database.get_testing_version(source) + + if curvers and apt_pkg.VersionCompare(new_vers, curvers) == 1: + # This is still valid, the current version in database is older than + # the new version we wait for + + # Check if the source we look at is affected by this. + if sourcepkg in t['packages']: + # The source is affected, lets reject it. + reject("""%s: part of the %s transition. + + Your package is part of a testing transition to get %s migrated. + + Transition description: %s + + This transition will finish when %s, version %s, reaches testing (it currently + has version %s). + This transition is managed by the Release Team and %s + is the Release-Team member responsible for it. + Please contact them or debian-release@lists.debian.org if you + need further assistance. + """ + % (sourcepkg, trans, source, t["reason"], source, new_vers, curvers, t["rm"])) + return 0 + ################################################################################ def lookup_uid_from_fingerprint(fpr): @@ -1522,6 +1578,8 @@ def process_it (changes_file): check_urgency() check_timestamps() check_signed_by_key() + if changes["architecture"].has_key("source"): + check_transition(changes["source"]) Upload.update_subst(reject_message) action() except SystemExit: