summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2009-04-11 02:19:27 +0000
committerZac Medico <zmedico@gentoo.org>2009-04-11 02:19:27 +0000
commit4423a7e1f03c96c0d9dc64af271fb01342a85cfc (patch)
tree8926e78ca11a6989de40cabfa8b250e61c3995b0
parentde6a4dfb660f0f0f2901e9f540a3146c38be2500 (diff)
downloadportage-4423a7e1f03c96c0d9dc64af271fb01342a85cfc.tar.gz
portage-4423a7e1f03c96c0d9dc64af271fb01342a85cfc.tar.bz2
portage-4423a7e1f03c96c0d9dc64af271fb01342a85cfc.zip
Filter virtuals when expanding atoms if it helps to avoid an ambiguity.
svn path=/main/trunk/; revision=13314
-rw-r--r--pym/_emerge/__init__.py9
1 files changed, 9 insertions, 0 deletions
diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py
index 5c9f83744..c8bdfae96 100644
--- a/pym/_emerge/__init__.py
+++ b/pym/_emerge/__init__.py
@@ -5602,6 +5602,15 @@ class depgraph(object):
atom_cp = portage.dep_getkey(atom)
if vardb.cp_list(atom_cp):
installed_cp_set.add(atom_cp)
+
+ if len(installed_cp_set) > 1:
+ non_virtual_cps = set()
+ for atom_cp in installed_cp_set:
+ if not atom_cp.startswith("virtual/"):
+ non_virtual_cps.add(atom_cp)
+ if len(non_virtual_cps) == 1:
+ installed_cp_set = non_virtual_cps
+
if len(expanded_atoms) > 1 and len(installed_cp_set) == 1:
installed_cp = iter(installed_cp_set).next()
expanded_atoms = [atom for atom in expanded_atoms \