提交 b46b317a 编写于 作者: J Joerg Jaspert

Added a transition check feature for the release team, together with an

example transition yaml file.
上级 0429d821
2008-03-02 Joerg Jaspert <joerg@debian.org>
* dak/process_unchecked.py (check_transition): Added. Checks if a
release team member defined a transition, and rejects based on
that data.
(process_it): Use it.
2008-02-06 Joerg Jaspert <joerg@debian.org> 2008-02-06 Joerg Jaspert <joerg@debian.org>
* daklib/utils.py (check_signature): Make variable key available, * daklib/utils.py (check_signature): Make variable key available,
......
...@@ -27,6 +27,7 @@ Dinstall ...@@ -27,6 +27,7 @@ Dinstall
StableDislocationSupport "false"; StableDislocationSupport "false";
DefaultSuite "unstable"; DefaultSuite "unstable";
UserExtensions "/srv/ftp.debian.org/dak/config/debian/extensions.py"; UserExtensions "/srv/ftp.debian.org/dak/config/debian/extensions.py";
ReleaseTransitions "/srv/ftp.debian.org/testing/hints/transitions.yaml";
QueueBuildSuites QueueBuildSuites
{ {
unstable; unstable;
......
...@@ -36,6 +36,8 @@ import daklib.queue ...@@ -36,6 +36,8 @@ import daklib.queue
import daklib.utils import daklib.utils
from types import * from types import *
from syck import *
################################################################################ ################################################################################
...@@ -1139,6 +1141,79 @@ def upload_too_new(): ...@@ -1139,6 +1141,79 @@ def upload_too_new():
os.chdir(cwd) os.chdir(cwd)
return too_new return too_new
################################################################################
################################################################################
# We reject packages if the release team defined a transition for them
def check_transition():
to_dump = 0
# Only check if there is a file defined 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"):
return
# No need to do anything if this upload has no source included
if not changes["architecture"].has_key("source"):
return
# We first load the current set of transitions, if any
if not os.path.exists("%s" % (Cnf["Dinstall::Reject::ReleaseTransitions"])):
# Nothing to do, no file exists
return
# Parse the yaml file
sourcefile = file(Cnf["Dinstall::Reject::ReleaseTransitions"], 'r')
transitions = load(sourcefile)
# Now look through all defined transitions
for trans in transition:
t = transition[trans]
# We check if the transition is still valid
# If not we remove the whole setting from the dictionary and later dump it,
# so we don't process it again.
source = t["source"]
new_vers = t["new"]
q = Upload.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 s.source='%s'"""
% (source))
ql = q.getresult()
if ql:
current_vers = ql[0][0]
if apt_pkg.VersionCompare(new_vers, current_vers) == 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 changes["source"] 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 reason: %s
This transition will finish when %s, version %s, reaches testing.
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.
"""
% (changes["source"], trans, source, t["reason"], source, new_vers, t["rm"]))
return 0
else:
# We either have the wanted or a newer version in testing, or the package got
# removed completly. In that case we don't need to keep the transition blocker
del transition[trans]
to_dump = 1
if to_dump:
destfile = file(Cnf["Dinstall::Reject::ReleaseTransitions"], 'w')
dump(transition, destfile)
################################################################################ ################################################################################
def action (): def action ():
...@@ -1522,6 +1597,7 @@ def process_it (changes_file): ...@@ -1522,6 +1597,7 @@ def process_it (changes_file):
check_urgency() check_urgency()
check_timestamps() check_timestamps()
check_signed_by_key() check_signed_by_key()
check_transition()
Upload.update_subst(reject_message) Upload.update_subst(reject_message)
action() action()
except SystemExit: except SystemExit:
......
# vim:syntax=yaml:
# Dont use tabs for indentation, use spaces.
# Or if you use tabs - use them throughout the file. One style of
# indentation pleae, not multiple.
#
# Strings should be within "", but normally work without.
# Exception: Version-numbers with an epoch really do want to be in ""
#
# keys:
#
# short_tag: A short tag for the transition, like apt_update
# reason: One-line reason what is intended with it
# source: Source package that needs to transition
# new: New version of the target package
# rm: Name of the Release Team member responsible for this transition
# packages: Array of package names that are affected by this transition
#
#
# The following example wants to update apt to version 0.7.12, the
# responsible Release Team member is Andreas Barth, and it affects some
# apt related packages.
apt_update:
reason: "Apt needs to transition to testing to get foo and bar done"
source: apt
new: 0.7.12
rm: Andreas Barth
packages:
- apt
- synaptic
- cron-apt
- debtags
- feta
- apticron
- aptitude
foo_broken:
reason: "Something else thats broken"
source: foo
new: 1.3-1
rm: Someone
packages:
- foo
- baz
- bar
bar_breaks_it:
reason: We dont want bar to break it
source: bar
new: "9:99"
rm: Ganneff
packages:
- kdelibs
- qt4-x11
- libqt-perl
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册