For bug #165382, don't raise a ValueError in cpv_expand() if there are only two match...
authorZac Medico <zmedico@gentoo.org>
Mon, 5 Feb 2007 06:27:35 +0000 (06:27 -0000)
committerZac Medico <zmedico@gentoo.org>
Mon, 5 Feb 2007 06:27:35 +0000 (06:27 -0000)
svn path=/main/trunk/; revision=5890

pym/portage/__init__.py

index 43649ab45e6f18838eb8e84f0f8a139b4c4dbe61..913c705637813d1c0f0cfebc0f803cce454a9cd7 100644 (file)
@@ -4446,8 +4446,18 @@ def cpv_expand(mycpv, mydb=None, use_cache=1, settings=None):
                        for x in settings.categories:
                                if mydb.cp_list(x+"/"+myp,use_cache=use_cache):
                                        matches.append(x+"/"+myp)
-               if (len(matches)>1):
-                       raise ValueError, matches
+               if len(matches) > 1:
+                       if len(matches) == 2:
+                               for x in matches:
+                                       if not x.startswith("virtual/"):
+                                               # Assume that the non-virtual is desired.  This helps
+                                               # avoid the ValueError for invalid deps that come from
+                                               # installed packages (during reverse blocker detection,
+                                               # for example).
+                                               mykey = x
+                                               break
+                       if mykey is None:
+                               raise ValueError, matches
                elif matches:
                        mykey=matches[0]