summaryrefslogtreecommitdiffstats
path: root/bin/emerge
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2008-04-06 18:54:26 +0000
committerZac Medico <zmedico@gentoo.org>2008-04-06 18:54:26 +0000
commitf1f69d224d499e12cedc363b5459266bbfa58605 (patch)
tree91673db363237a48f62774300b929cf5de1ec629 /bin/emerge
parent4614f5371857b8cc6fa952e309cd9664c8c9c3e2 (diff)
downloadportage-f1f69d224d499e12cedc363b5459266bbfa58605.tar.gz
portage-f1f69d224d499e12cedc363b5459266bbfa58605.tar.bz2
portage-f1f69d224d499e12cedc363b5459266bbfa58605.zip
Fix the CompositDbapi.match() logic wrt "selective" behavior and installed
packages so that it correctly handles false argument matches due to PROVIDE when a corresponding new-style virtual exists. (trunk r9729) svn path=/main/branches/2.1.2/; revision=9730
Diffstat (limited to 'bin/emerge')
-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]