summaryrefslogtreecommitdiff
path: root/pym
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2009-11-07 01:09:49 +0000
committerZac Medico <zmedico@gentoo.org>2009-11-07 01:09:49 +0000
commit964a5a7c2b9f07c7a54a25a8652f8fcedeab4136 (patch)
tree32d9ef1ecd78ab6bdb7e6a5deeefe362dfa8d51f /pym
parentEliminate duplicate code from the FakeVartree constructor which does the (diff)
downloadportage-multirepo-964a5a7c2b9f07c7a54a25a8652f8fcedeab4136.tar.gz
portage-multirepo-964a5a7c2b9f07c7a54a25a8652f8fcedeab4136.tar.bz2
portage-multirepo-964a5a7c2b9f07c7a54a25a8652f8fcedeab4136.zip
Move FakeVartree population out of the constructor by calling the sync()
method explicitly. This allows the depgraph constructor avoid populating the FakeVartree, and delay it until depgraph._load_vdb() is called. (trunk r14773) svn path=/main/branches/2.1.7/; revision=14786
Diffstat (limited to 'pym')
-rw-r--r--pym/_emerge/BlockerDB.py6
-rw-r--r--pym/_emerge/FakeVartree.py7
-rw-r--r--pym/_emerge/depgraph.py6
3 files changed, 10 insertions, 9 deletions
diff --git a/pym/_emerge/BlockerDB.py b/pym/_emerge/BlockerDB.py
index ff1e525a..4c99b5a7 100644
--- a/pym/_emerge/BlockerDB.py
+++ b/pym/_emerge/BlockerDB.py
@@ -29,15 +29,13 @@ class BlockerDB(object):
def _get_fake_vartree(self, acquire_lock=0):
fake_vartree = self._fake_vartree
if fake_vartree is None:
- fake_vartree = FakeVartree(self._root_config,
- acquire_lock=acquire_lock)
+ fake_vartree = FakeVartree(self._root_config)
self._fake_vartree = fake_vartree
self._dep_check_trees = { self._vartree.root : {
"porttree" : fake_vartree,
"vartree" : fake_vartree,
}}
- else:
- fake_vartree.sync(acquire_lock=acquire_lock)
+ fake_vartree.sync(acquire_lock=acquire_lock)
return fake_vartree
def findInstalledBlockers(self, new_pkg, acquire_lock=0):
diff --git a/pym/_emerge/FakeVartree.py b/pym/_emerge/FakeVartree.py
index 07703f3f..e1b81980 100644
--- a/pym/_emerge/FakeVartree.py
+++ b/pym/_emerge/FakeVartree.py
@@ -21,8 +21,9 @@ class FakeVartree(portage.vartree):
allows things like vardb global updates to be done in memory so that the
user doesn't necessarily need write access to the vardb in cases where
global updates are necessary (updates are performed when necessary if there
- is not a matching ebuild in the tree)."""
- def __init__(self, root_config, pkg_cache=None, acquire_lock=1):
+ is not a matching ebuild in the tree). Instances of this class are not
+ populated until the sync() method is called."""
+ def __init__(self, root_config, pkg_cache=None):
self._root_config = root_config
if pkg_cache is None:
pkg_cache = {}
@@ -49,8 +50,6 @@ class FakeVartree(portage.vartree):
self._portdb = portdb
self._global_updates = None
- self.sync()
-
def _match_wrapper(self, cpv, use_cache=1):
"""
Make sure the metadata in Package instances gets updated for any
diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py
index 5d76a49f..e7407893 100644
--- a/pym/_emerge/depgraph.py
+++ b/pym/_emerge/depgraph.py
@@ -269,10 +269,14 @@ class depgraph(object):
"--nodeps" not in self._frozen_config.myopts and \
"--buildpkgonly" not in self._frozen_config.myopts
+ fake_vartree = self._frozen_config.trees[myroot]["vartree"]
+ fake_vartree.sync()
+
if preload_installed_pkgs:
+ vardb = fake_vartree.dbapi
fakedb = self._dynamic_config._graph_trees[
myroot]["vartree"].dbapi
- vardb = self._frozen_config.trees[myroot]["vartree"].dbapi
+
for pkg in vardb:
self._spinner_update()
# This triggers metadata updates via FakeVartree.