summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xbin/emerge20
1 files changed, 16 insertions, 4 deletions
diff --git a/bin/emerge b/bin/emerge
index 01cbf8dbc..a4865d1ab 100755
--- a/bin/emerge
+++ b/bin/emerge
@@ -1480,11 +1480,23 @@ class CompositeDbapi(object):
else:
if pkg.installed and "selective" not in self._depgraph.myparams:
try:
- if self._depgraph._set_atoms.findAtomForPackage(
- pkg.cpv, pkg.metadata):
- ret = []
+ arg = self._depgraph._set_atoms.findAtomForPackage(
+ pkg.cpv, pkg.metadata)
except portage_exception.InvalidDependString:
- pass
+ arg = None
+ arg_cp = None
+ else:
+ arg_cp = portage.dep_getkey(arg)
+ if arg and arg_cp != pkg.cp:
+ # If this argument matches via PROVIDE but there is a
+ # new-style virtual available, then the argument does
+ # not really apply to this package.
+ virt_pkg, virt_existing = \
+ self._depgraph._select_package(self._root, arg_cp)
+ if virt_pkg and virt_pkg.cp == arg_cp:
+ arg = None
+ if arg:
+ ret = []
if ret is None:
self._cpv_tree_map[pkg.cpv] = \
self._depgraph.pkg_tree_map[pkg.type_name]