Add a vardbapi._pkgs_changed attribute to use instead of PORTAGE_COUNTER_HASH
authorZac Medico <zmedico@gentoo.org>
Sat, 5 Sep 2009 22:25:05 +0000 (22:25 -0000)
committerZac Medico <zmedico@gentoo.org>
Sat, 5 Sep 2009 22:25:05 +0000 (22:25 -0000)
for emerge to check whether any packages have been added/removed. This is an
optimization, since vardbapi._counter_hash() can be somewhat slow on embedded
systems. Thanks to Marat Radchenko <slonopotamusorama@gmail.com> for
reporting.

svn path=/main/trunk/; revision=14203

pym/_emerge/main.py
pym/portage/__init__.py
pym/portage/dbapi/vartree.py

index 57277ecfbc04ab2b5e56ac92586d2b3f358269bd..6307904b759784ce564d1848279ed80c313d7792 100644 (file)
@@ -314,9 +314,7 @@ def post_emerge(root_config, myopts, mtimedb, retval):
 
        _flush_elog_mod_echo()
 
-       counter_hash = settings.get("PORTAGE_COUNTER_HASH")
-       if "--pretend" in myopts or (counter_hash is not None and \
-               counter_hash == vardbapi._counter_hash()):
+       if not vardbapi._pkgs_changed:
                display_news_notification(root_config, myopts)
                # If vdb state has not changed then there's nothing else to do.
                sys.exit(retval)
@@ -1075,11 +1073,6 @@ def emerge_main():
                mysettings =  trees[myroot]["vartree"].settings
                mysettings.unlock()
                adjust_config(myopts, mysettings)
-               if '--pretend' not in myopts and myaction in \
-                       (None, 'clean', 'depclean', 'prune', 'unmerge'):
-                       mysettings["PORTAGE_COUNTER_HASH"] = \
-                               trees[myroot]["vartree"].dbapi._counter_hash()
-                       mysettings.backup_changes("PORTAGE_COUNTER_HASH")
                mysettings.lock()
                del myroot, mysettings
 
index f6cf25f53898b5d8483beef3a21b45039c552d91..255b005bf73131d1aceb70776fbe96269ec055d0 100644 (file)
@@ -1438,7 +1438,6 @@ class config(object):
                "GENTOO_MIRRORS", "NOCONFMEM", "O",
                "PORTAGE_BACKGROUND",
                "PORTAGE_BINHOST_CHUNKSIZE", "PORTAGE_CALLER",
-               "PORTAGE_COUNTER_HASH",
                "PORTAGE_ELOG_CLASSES",
                "PORTAGE_ELOG_MAILFROM", "PORTAGE_ELOG_MAILSUBJECT",
                "PORTAGE_ELOG_MAILURI", "PORTAGE_ELOG_SYSTEM",
index 15ec5b7983976f95cbe15df2abda642c9a1b5938..b60316ee5756e5eb55db2692a8d9bf3837080322 100644 (file)
@@ -790,6 +790,10 @@ class vardbapi(dbapi):
                self.root = _unicode_decode(root,
                        encoding=_encodings['content'], errors='strict')
 
+               # Used by emerge to check whether any packages
+               # have been added or removed.
+               self._pkgs_changed = False
+
                #cache for category directory mtimes
                self.mtdircache = {}
 
@@ -1041,9 +1045,11 @@ class vardbapi(dbapi):
                self._aux_cache_obj = None
 
        def _add(self, pkg_dblink):
+               self._pkgs_changed = True
                self._clear_pkg_cache(pkg_dblink)
 
        def _remove(self, pkg_dblink):
+               self._pkgs_changed = True
                self._clear_pkg_cache(pkg_dblink)
 
        def _clear_pkg_cache(self, pkg_dblink):