X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=daklib%2Fqueue_install.py;h=e9d2a4d3fc179830c40bbf9e08e9b0da6607adf3;hb=2a795dda1eedc0d97277caafd3e8a21272a34f8c;hp=80787b5cb411c533bf243fa3ceb55c05925c5cc5;hpb=efd055264c79493ca82c5be1066a8188f1aa0ad8;p=dak.git diff --git a/daklib/queue_install.py b/daklib/queue_install.py index 80787b5c..e9d2a4d3 100755 --- a/daklib/queue_install.py +++ b/daklib/queue_install.py @@ -87,6 +87,12 @@ def is_unembargo(u): if not get_policy_queue("disembargo"): return False + # If we already are in newstage, then it means this just got passed through and accepted + # by a security team member. Don't try to accept it for disembargo again + dbc = get_dbchange(u.pkg.changes_file, session) + if dbc and dbc.in_queue.queue_name in [ 'newstage' ]: + return False + q = session.execute("SELECT package FROM disembargo WHERE package = :source AND version = :version", {'source': u.pkg.changes["source"], 'version': u.pkg.changes["version"]}) @@ -115,22 +121,41 @@ def is_unembargo(u): return ret def do_unembargo(u, summary, short_summary, chg, session=None): - return package_to_queue(u, summary, short_summary, - get_policy_queue('disembargo'), chg, session, - announce=None) + polq=get_policy_queue('disembargo') + package_to_queue(u, summary, short_summary, + polq, chg, session, + announce=None) + for suite_name in u.pkg.changes["distribution"].keys(): + suite = get_suite(suite_name, session) + for q in suite.copy_queues: + for f in u.pkg.files.keys(): + os.symlink(os.path.join(polq.path, f), os.path.join(q.path, f)) # ################################################################################# # def is_embargo(u): # if we are the security archive, we always have a embargo queue and its the # last in line, so if that exists, return true + # Of course do not return true when we accept from out of newstage, as that means + # it just left embargo and we want it in the archive if get_policy_queue('embargo'): + session = DBConn().session() + dbc = get_dbchange(u.pkg.changes_file, session) + if dbc and dbc.in_queue.queue_name in [ 'newstage' ]: + return False + return True def do_embargo(u, summary, short_summary, chg, session=None): - return package_to_queue(u, summary, short_summary, - get_policy_queue('embargo'), chg, session, - announce=None) + polq=get_policy_queue('embargo') + package_to_queue(u, summary, short_summary, + polq, chg, session, + announce=None) + for suite_name in u.pkg.changes["distribution"].keys(): + suite = get_suite(suite_name, session) + for q in suite.copy_queues: + for f in u.pkg.files.keys(): + os.symlink(os.path.join(polq.path, f), os.path.join(q.path, f)) ################################################################################ @@ -253,6 +278,7 @@ def acknowledge_new(u, summary, short_summary, chg, session): # FIXME: queues should be able to get autobuild # the current logic doesnt allow this, as buildd stuff is AFTER accept... +# embargo/disembargo use a workaround due to this # q-unapproved hax0ring QueueInfo = { "new": { "is": is_new, "process": acknowledge_new },