commit:     44076b9432a1361a39515927de2b60baa2fbddb9
Author:     Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Sat Feb  1 21:23:39 2020 +0000
Commit:     Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Sat Feb  1 21:30:23 2020 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=44076b94

cpv_expand: treat GLEP 81 acct-* categories like virtual (bug 691798)

This solves common name collisions introduced by GLEP 81 user and group
management packages.

TODO: Provide user configuration so that users an ignore name
collisions with selected categories like app-emacs or dev-haskell.

Signed-off-by: Zac Medico <zmedico <AT> gentoo.org>

 lib/_emerge/depgraph.py         | 2 +-
 lib/portage/dbapi/cpv_expand.py | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/lib/_emerge/depgraph.py b/lib/_emerge/depgraph.py
index cae1c4470..1eaf20035 100644
--- a/lib/_emerge/depgraph.py
+++ b/lib/_emerge/depgraph.py
@@ -4212,7 +4212,7 @@ class depgraph(object):
                                if len(expanded_atoms) > 1:
                                        number_of_virtuals = 0
                                        for expanded_atom in expanded_atoms:
-                                               if 
expanded_atom.cp.startswith("virtual/"):
+                                               if 
expanded_atom.cp.startswith(("acct-group/", "acct-user/", "virtual/")):
                                                        number_of_virtuals += 1
                                                else:
                                                        candidate = 
expanded_atom

diff --git a/lib/portage/dbapi/cpv_expand.py b/lib/portage/dbapi/cpv_expand.py
index 70ee78245..ac2f6cc2e 100644
--- a/lib/portage/dbapi/cpv_expand.py
+++ b/lib/portage/dbapi/cpv_expand.py
@@ -72,9 +72,9 @@ def cpv_expand(mycpv, mydb=None, use_cache=1, settings=None):
                                        matches.append(x+"/"+myp)
                if len(matches) > 1:
                        virtual_name_collision = False
-                       if len(matches) == 2:
+                       if len(matches) > 1:
                                for x in matches:
-                                       if not x.startswith("virtual/"):
+                                       if not x.startswith(("acct-group/", 
"acct-user/", "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,

Reply via email to