summaryrefslogtreecommitdiffstats
path: root/bin/emerge
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2006-12-07 22:23:57 +0000
committerZac Medico <zmedico@gentoo.org>2006-12-07 22:23:57 +0000
commit70ba8f079933e40497649c419898bb2b2e1ce81d (patch)
treebde23876c74077f2c50e58a39f3d3c96a8550367 /bin/emerge
parente32ddbb0b19dbe110faee7f516756e3753cdb270 (diff)
downloadportage-70ba8f079933e40497649c419898bb2b2e1ce81d.tar.gz
portage-70ba8f079933e40497649c419898bb2b2e1ce81d.tar.bz2
portage-70ba8f079933e40497649c419898bb2b2e1ce81d.zip
Enable FakeVartree to populate the virtuals so that the vdb doesn't have to be scanned separately.
svn path=/main/trunk/; revision=5207
Diffstat (limited to 'bin/emerge')
-rwxr-xr-xbin/emerge11
1 files changed, 7 insertions, 4 deletions
diff --git a/bin/emerge b/bin/emerge
index 44a9a6f80..88dea39c5 100755
--- a/bin/emerge
+++ b/bin/emerge
@@ -699,7 +699,7 @@ class DepPriority(object):
return "medium"
return "soft"
-class FakeVartree(object):
+class FakeVartree(portage.vartree):
"""This is implements an in-memory copy of a vartree instance that provides
all the interfaces required for use by the depgraph. The vardb is locked
during the constructor call just long enough to read a copy of the
@@ -718,7 +718,8 @@ class FakeVartree(object):
try:
if os.access(vdb_path, os.W_OK):
vdb_lock = portage_locks.lockdir(vdb_path)
- mykeys = ["SLOT", "USE", "IUSE", "DEPEND", "RDEPEND", "PDEPEND"]
+ mykeys = ["SLOT", "PROVIDE", "USE", "IUSE",
+ "DEPEND", "RDEPEND", "PDEPEND"]
real_dbapi = real_vartree.dbapi
for cpv in real_dbapi.cpv_all():
metadata = dict(zip(mykeys, real_dbapi.aux_get(cpv, mykeys)))
@@ -726,6 +727,10 @@ class FakeVartree(object):
finally:
if vdb_lock:
portage_locks.unlockdir(vdb_lock)
+ # Populate the old-style virtuals using the cached values.
+ if not self.settings.treeVirtuals:
+ self.settings.treeVirtuals = portage_util.map_dictlist_vals(
+ portage.getCPFromCPV, self.get_all_provides())
class depgraph:
@@ -752,8 +757,6 @@ class depgraph:
self.trees[myroot][tree] = trees[myroot][tree]
self.trees[myroot]["vartree"] = \
FakeVartree(trees[myroot]["vartree"])
- # Make sure the virtuals are populated before cloning.
- trees[myroot]["vartree"].settings.getvirtuals()
self.pkgsettings[myroot] = portage.config(
clone=self.trees[myroot]["vartree"].settings)
self.pkg_node_map[myroot] = {}