summaryrefslogtreecommitdiffstats
path: root/pym/_emerge
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2008-11-11 19:59:49 +0000
committerZac Medico <zmedico@gentoo.org>2008-11-11 19:59:49 +0000
commitc07a9eee5040025d68121e41943929a96e0421c4 (patch)
treebe0ea8ccc79e92ec29d68a0bdcdbbe6d16b1308a /pym/_emerge
parent7fda15ffe221c8a4946aba3a10cc3c068616d797 (diff)
downloadportage-c07a9eee5040025d68121e41943929a96e0421c4.tar.gz
portage-c07a9eee5040025d68121e41943929a96e0421c4.tar.bz2
portage-c07a9eee5040025d68121e41943929a96e0421c4.zip
Make post_emerge() exit early if it detects that the vdb state hasn't changed.v2.2_rc14
This works by comparing a hash of the COUNTER values for all packages in the vdb. svn path=/main/trunk/; revision=11859
Diffstat (limited to 'pym/_emerge')
-rw-r--r--pym/_emerge/__init__.py9
1 files changed, 9 insertions, 0 deletions
diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py
index c5084ac7b..14a63a492 100644
--- a/pym/_emerge/__init__.py
+++ b/pym/_emerge/__init__.py
@@ -11236,6 +11236,12 @@ def post_emerge(root_config, myopts, mtimedb, retval):
_flush_elog_mod_echo()
+ counter_hash = settings.get("PORTAGE_COUNTER_HASH")
+ if counter_hash is not None and \
+ counter_hash == vardbapi._counter_hash():
+ # If vdb state has not changed then there's nothing else to do.
+ sys.exit(retval)
+
vdb_path = os.path.join(target_root, portage.VDB_PATH)
portage.util.ensure_dirs(vdb_path)
vdb_lock = None
@@ -13830,6 +13836,9 @@ def emerge_main():
mysettings = trees[myroot]["vartree"].settings
mysettings.unlock()
adjust_config(myopts, mysettings)
+ mysettings["PORTAGE_COUNTER_HASH"] = \
+ trees[myroot]["vartree"].dbapi._counter_hash()
+ mysettings.backup_changes("PORTAGE_COUNTER_HASH")
mysettings.lock()
del myroot, mysettings