diff --git a/pym/portage.py b/pym/portage.py index a69f1b2..88f9535 100644 --- a/pym/portage.py +++ b/pym/portage.py @@ -1591,6 +1591,9 @@ class config: virts = flatten(portage_dep.use_reduce(portage_dep.paren_reduce(provides), uselist=myuse.split())) cp = dep_getkey(mycpv) + if cp.startswith("virtual/"): + # Bridge new-style virtual into old-style. + virts.append(cp) for virt in virts: virt = dep_getkey(virt) if not self.treeVirtuals.has_key(virt): @@ -1829,7 +1832,13 @@ class config: ptVirtuals.setdefault(virt, []) ptVirtuals[virt].append(cp) - return stack_dictlist([ptVirtuals, self.treeVirtuals, self.dirVirtuals]) + virtuals = stack_dictlist([ptVirtuals, self.treeVirtuals, + self.dirVirtuals]) + # Bridge new-style virtuals into old-style. + for k, v in virtuals.iteritems(): + if k not in v: + v.append(k) + return virtuals def __delitem__(self,mykey): self.modifying() @@ -4651,6 +4660,9 @@ class vartree(packagetree): if not mys: mys = string.split(myprovide, "/") myprovides += [mys[0] + "/" + mys[1]] + if mycpv.startswith("virtual/"): + # Bridge new-style virtual into old-style. + myprovides.append(dep_getkey(mycpv)) return myprovides except SystemExit, e: raise