summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2006-10-31 13:45:19 +0000
committerZac Medico <zmedico@gentoo.org>2006-10-31 13:45:19 +0000
commitbd5e3c6cd5b15fb8a5bfcf19bbcc779cd742fe3d (patch)
tree71c6a35f515b3d401e32db2eafadd7bedf73444f /bin/dispatch-conf
parentFix a KeyError when the profile doesn't define default USE. (diff)
downloadportage-idfetch-bd5e3c6cd5b15fb8a5bfcf19bbcc779cd742fe3d.tar.gz
portage-idfetch-bd5e3c6cd5b15fb8a5bfcf19bbcc779cd742fe3d.tar.bz2
portage-idfetch-bd5e3c6cd5b15fb8a5bfcf19bbcc779cd742fe3d.zip
Add support for frozen config files for which updates are automatically zapped. Thanks to Bo Ørsted Andresen for the initial patch from bug #151685.
svn path=/main/trunk/; revision=4887
Diffstat (limited to 'bin/dispatch-conf')
-rwxr-xr-xbin/dispatch-conf26
1 files changed, 26 insertions, 0 deletions
diff --git a/bin/dispatch-conf b/bin/dispatch-conf
index 2309b680..c9f3655f 100755
--- a/bin/dispatch-conf
+++ b/bin/dispatch-conf
@@ -12,6 +12,9 @@
# dialog menus
#
+if not hasattr(__builtins__, "set"):
+ from sets import Set as set
+
from stat import *
from random import *
import atexit, commands, os, re, shutil, stat, string, sys
@@ -105,6 +108,10 @@ class dispatch:
return False
+ # config file freezing support
+ frozen_files = set(self.options.get("frozen-files", "").split())
+ auto_zapped = []
+
#
# Remove new configs identical to current
# and
@@ -148,6 +155,18 @@ class dispatch:
if os.path.exists(mrgconf):
os.unlink(mrgconf)
return False
+ elif conf['current'] in frozen_files:
+ """Frozen files are automatically zapped. The new config has
+ already been archived with a .new suffix. When zapped, it is
+ left with the .new suffix (post_process is skipped), since it
+ hasn't been merged into the current config."""
+ auto_zapped.append(conf['current'])
+ os.unlink(conf['new'])
+ try:
+ os.unlink(mrgconf)
+ except OSError:
+ pass
+ return False
elif unmodified or same_cvs or same_wsc or conf ['dir'] in portage.settings ['CONFIG_PROTECT_MASK'].split ():
self.replace(newconf, conf['current'])
self.post_process(conf['current'])
@@ -238,6 +257,13 @@ class dispatch:
else:
continue
+ if auto_zapped:
+ print
+ print " One or more updates are frozen and have been automatically zapped:"
+ print
+ for frozen in auto_zapped:
+ print " * '%s'" % frozen
+ print
def replace (self, newconf, curconf):
"""Replace current config with the new/merged version. Also logs