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
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)))
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:
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] = {}
self.dirVirtuals[virt].reverse()
# Repoman does not use user or tree virtuals.
- if self.local_config:
+ if self.local_config and not self.treeVirtuals:
temp_vartree = vartree(myroot, None,
categories=self.categories, settings=self)
# Reduce the provides into a list by CP.
def get_provide(self,mycpv):
myprovides=[]
try:
- mylines = grabfile(self.root+VDB_PATH+"/"+mycpv+"/PROVIDE")
+ mylines, myuse = self.dbapi.aux_get(mycpv, ["PROVIDE","USE"])
if mylines:
- myuse = grabfile(self.root+VDB_PATH+"/"+mycpv+"/USE")
- myuse = string.split(string.join(myuse))
- mylines = string.join(mylines)
+ myuse = myuse.split()
mylines = flatten(portage_dep.use_reduce(portage_dep.paren_reduce(mylines), uselist=myuse))
for myprovide in mylines:
mys = catpkgsplit(myprovide)