X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=dak%2Fedit_transitions.py;h=e283a46a3499153a86c9491a95f284b26811cdd4;hb=74dbcfb0868204288f5142a7b7cec4a18ce31836;hp=15cc8dc4d2a34f2cc5d0ce71c914fd67fd19dcb4;hpb=a6324611e898de79f2bb7947775984e28f4b2ede;p=dak.git diff --git a/dak/edit_transitions.py b/dak/edit_transitions.py index 15cc8dc4..e283a46a 100755 --- a/dak/edit_transitions.py +++ b/dak/edit_transitions.py @@ -24,7 +24,7 @@ ################################################################################ -import os, pg, sys, time +import os, pg, sys, time, errno import apt_pkg import daklib.database import daklib.utils @@ -102,11 +102,11 @@ def lock_file(lockfile): def edit_transitions(): trans_file = Cnf["Dinstall::Reject::ReleaseTransitions"] - tempfile = "./%s.transition.tmp" % (os.getpid() ) - - lockfile="%s.lock" % (tempfile) + lockfile="/tmp/transitions.lock" lock_file(lockfile) + tempfile = "./%s.transition.tmp" % (os.getpid() ) + daklib.utils.copy(trans_file, tempfile) editor = os.environ.get("EDITOR", "vi") @@ -144,7 +144,11 @@ def edit_transitions(): break # We seem to be done and also have a working file. Copy over. - daklib.utils.copy(tempfile, trans_file, True) + # We are not using daklib.utils.copy here, as we use sudo to get this file copied, to + # limit the rights needed to edit transitions + os.spawnl(os.P_WAIT, "/usr/bin/sudo", "/usr/bin/sudo", "-u", "dak", "-H", + "cp", tempfile, trans_file) + os.unlink(tempfile) os.unlink(lockfile) @@ -230,7 +234,6 @@ def check_transitions(transitions): print "Transition source %s not in testing, transition still ongoing." % (source) else: compare = apt_pkg.VersionCompare(current, expected) - print "Apt compare says: %s" % (compare) if compare < 0: # This is still valid, the current version in database is older than # the new version we wait for @@ -266,14 +269,25 @@ def check_transitions(transitions): print "Committing" for remove in to_remove: del transitions[remove] - destfile = file(Cnf["Dinstall::Reject::ReleaseTransitions"], 'w') + + lockfile="/tmp/transitions.lock" + lock_file(lockfile) + tempfile = "./%s.transition.tmp" % (os.getpid() ) + + destfile = file(tempfile, 'w') syck.dump(transitions, destfile) + destfile.close() + + os.spawnl(os.P_WAIT, "/usr/bin/sudo", "/usr/bin/sudo", "-u", "dak", "-H", + "cp", tempfile, Cnf["Dinstall::Reject::ReleaseTransitions"]) + + os.unlink(tempfile) + os.unlink(lockfile) print "Done" else: print "WTF are you typing?" sys.exit(0) - ################################################################################ def main():