+2008-03-11 Joerg Jaspert <joerg@debian.org>
+
+ * dak/process_unchecked.py: Import syck module directly, not "from
+ syck import *"
+ (check_transition): Do the check for sourceful upload in here
+ Also adjust the syck loading commands, rename new_vers to
+ expected, curvers to current, to make it more clear what they mean.
+
+ * daklib/database.py (get_suite_version): Renamed from
+ get_testing_version. Also changed the cache variables name
+
+ * The above changes are based on modifications from Anthony.
+
2008-03-02 Joerg Jaspert <joerg@debian.org>
* debian/control (Suggests): Add python-syck to Depends:
import commands, errno, fcntl, os, re, shutil, stat, sys, time, tempfile, traceback
import apt_inst, apt_pkg
+import syck
import daklib.database
import daklib.logging
import daklib.queue
import daklib.utils
from types import *
-from syck import *
################################################################################
# We reject packages if the release team defined a transition for them
def check_transition(sourcepkg):
+ # No sourceful upload -> no need to do anything else, direct return
+ if changes["architecture"].has_key("source"):
+ return
- # Only check if there is a file defined (and existant) with checks. It's a little bit
+ # Also 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
sourcefile = file(Cnf["Dinstall::Reject::ReleaseTransitions"], 'r')
sourcecontent = sourcefile.read()
try:
- transitions = load(sourcecontent)
+ transitions = syck.load(sourcecontent)
except error, msg:
- # This shouldn't happen, the release team has a wrapper to check the file, but better
- # safe then sorry
+ # This shouldn't happen, there is a wrapper to edit the file which checks it, but we prefer
+ # to be safe than ending up rejecting everything.
daklib.utils.warn("Not checking transitions, the transitions file is broken: %s." % (msg))
return
for trans in transitions:
t = transitions[trans]
source = t["source"]
- new_vers = t["new"]
+ expected = t["new"]
# Will be None if nothing is in testing.
- curvers = daklib.database.get_testing_version(source)
- if not curvers == None:
- compare = apt_pkg.VersionCompare(curvers, new_vers)
+ current = daklib.database.get_suite_version(source, "testing")
+ if not current == None:
+ compare = apt_pkg.VersionCompare(current, expected)
- if curvers == None or compare < 0:
+ if current == None or compare < 0:
# This is still valid, the current version in testing is older than
# the new version we wait for, or there is none in testing yet
is the Release-Team member responsible for it.
Please contact %s or debian-release@lists.debian.org if you
need further assistance.
- """ % (sourcepkg, trans, source, curvers, new_vers, t["reason"], t["rm"], t["rm"]))
+ """ % (sourcepkg, trans, source, current, expected, t["reason"], t["rm"], t["rm"]))
return 0
################################################################################
check_urgency()
check_timestamps()
check_signed_by_key()
- if changes["architecture"].has_key("source"):
- check_transition(changes["source"])
+ check_transition(changes["source"])
Upload.update_subst(reject_message)
action()
except SystemExit:
fingerprint_id_cache = {}
queue_id_cache = {}
uid_id_cache = {}
-testing_version_cache = {}
+suite_version_cache = {}
################################################################################
return source_id
-def get_testing_version(source):
- global testing_version_cache
+def get_suite_version(source, suite):
+ global suite_version_cache
+ cache_key = "%s_%s" % (source, suite)
- if testing_version_cache.has_key(source):
- return testing_version_cache[source]
+ if suite_version_cache.has_key(cache_key):
+ return suite_version_cache[cache_key]
q = projectB.query("""
SELECT s.version FROM source s, suite su, src_associations sa
WHERE sa.source=s.id
AND sa.suite=su.id
- AND su.suite_name='testing'
+ AND su.suite_name='%s'
AND s.source='%s'"""
- % (source))
+ % (suite, source))
if not q.getresult():
return None
version = q.getresult()[0][0]
- testing_version_cache[source] = version
+ suite_version_cache[cache_key] = version
return version