diff options
author | Zac Medico <zmedico@gentoo.org> | 2006-10-31 13:45:19 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2006-10-31 13:45:19 +0000 |
commit | bd5e3c6cd5b15fb8a5bfcf19bbcc779cd742fe3d (patch) | |
tree | 71c6a35f515b3d401e32db2eafadd7bedf73444f | |
parent | 0512bd0c41d6bb77f2923ba1fcdc1c223f868994 (diff) | |
download | portage-bd5e3c6cd5b15fb8a5bfcf19bbcc779cd742fe3d.tar.gz portage-bd5e3c6cd5b15fb8a5bfcf19bbcc779cd742fe3d.tar.bz2 portage-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
-rwxr-xr-x | bin/dispatch-conf | 26 | ||||
-rw-r--r-- | cnf/dispatch-conf.conf | 3 |
2 files changed, 29 insertions, 0 deletions
diff --git a/bin/dispatch-conf b/bin/dispatch-conf index 2309b680f..c9f3655f0 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 diff --git a/cnf/dispatch-conf.conf b/cnf/dispatch-conf.conf index 11123b2a8..b1ece73bb 100644 --- a/cnf/dispatch-conf.conf +++ b/cnf/dispatch-conf.conf @@ -34,3 +34,6 @@ replace-unmodified=no # Per-session log file of changes made to configuration files #log-file=/var/log/dispatch-conf.log + +# List of frozen files for which dispatch-conf will automatically zap updates +#frozen-files="" |