Bug #271551 - Inside depgraph.select_files(), avoid bailing out due to an
authorZac Medico <zmedico@gentoo.org>
Fri, 9 Oct 2009 07:17:04 +0000 (07:17 -0000)
committerZac Medico <zmedico@gentoo.org>
Fri, 9 Oct 2009 07:17:04 +0000 (07:17 -0000)
ambiguous package name in cases when all but one of the resolved packages
are virtual. Thanks to Sebastian Mingramm (few) for this patch.

svn path=/main/trunk/; revision=14522

pym/_emerge/depgraph.py

index c384b5866a2575f9a0fd987af947ab02f85c29f2..d015d9dc1865d2c59851434240c1d658baa714d3 100644 (file)
@@ -1570,6 +1570,18 @@ class depgraph(object):
                                        expanded_atoms = [atom for atom in expanded_atoms \
                                                if atom.cp == installed_cp]
 
+                               # If a non-virtual package and one or more virtual packages
+                               # are in expanded_atoms, use the non-virtual package.
+                               if len(expanded_atoms) > 1:
+                                       number_of_virtuals = 0
+                                       for expanded_atom in expanded_atoms:
+                                               if expanded_atom.cp.startswith("virtual/"):
+                                                       number_of_virtuals += 1
+                                               else:
+                                                       candidate = expanded_atom
+                                       if len(expanded_atoms) - number_of_virtuals == 1:
+                                               expanded_atoms = [ candidate ]
+
                                if len(expanded_atoms) > 1:
                                        print()
                                        print()