Don't call FakeVartree.sync() redundantly when backtracking.
authorZac Medico <zmedico@gentoo.org>
Mon, 2 Nov 2009 01:45:57 +0000 (01:45 -0000)
committerZac Medico <zmedico@gentoo.org>
Mon, 2 Nov 2009 01:45:57 +0000 (01:45 -0000)
svn path=/main/trunk/; revision=14774

pym/_emerge/PackageVirtualDbapi.py
pym/_emerge/depgraph.py

index adf269116728cd9244ecf2f78611b51e7560041e..e557f0489830e9e373ff4fdbc9e1b2542fc1aa1d 100644 (file)
@@ -2,6 +2,7 @@
 # Distributed under the terms of the GNU General Public License v2
 # $Id$
 
+import sys
 import portage
 
 class PackageVirtualDbapi(portage.dbapi):
@@ -37,6 +38,12 @@ class PackageVirtualDbapi(portage.dbapi):
                obj._cpv_map = self._cpv_map.copy()
                return obj
 
+       def __bool__(self):
+               return bool(self._cpv_map)
+
+       if sys.hexversion < 0x3000000:
+               __nonzero__ = __bool__
+
        def __iter__(self):
                return iter(self._cpv_map.values())
 
index 72c147ee2b59bb35d0a44b09b979313451928f5a..5c66cf581b1d4cd381fcdea3c574d13503973bdd 100644 (file)
@@ -270,7 +270,10 @@ class depgraph(object):
                                "--buildpkgonly" not in self._frozen_config.myopts
 
                        fake_vartree = self._frozen_config.trees[myroot]["vartree"]
-                       fake_vartree.sync()
+                       if not fake_vartree.dbapi:
+                               # This needs to be called for the first depgraph, but not for
+                               # backtracking depgraphs that share the same frozen_config.
+                               fake_vartree.sync()
 
                        if preload_installed_pkgs:
                                vardb = fake_vartree.dbapi