summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2011-01-02 01:52:02 -0800
committerZac Medico <zmedico@gentoo.org>2011-01-02 01:52:02 -0800
commit98a971cce1c180668e1d69f14e6c39500defba2b (patch)
tree5211367b1cb6f99f2fcb4ad997615c15fc205586
parentf3785f651bff9febc0bb3be4f0ee8e4d732495d5 (diff)
downloadportage-98a971cce1c180668e1d69f14e6c39500defba2b.tar.gz
portage-98a971cce1c180668e1d69f14e6c39500defba2b.tar.bz2
portage-98a971cce1c180668e1d69f14e6c39500defba2b.zip
depclean: account for more masks
Account for packages with masks (like KEYWORDS masks) that are usually ignored in visibility checks for installed packages, in order to handle cases like bug #350285.
-rw-r--r--pym/_emerge/depgraph.py14
1 files changed, 14 insertions, 0 deletions
diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py
index 6d04e7811..736a40447 100644
--- a/pym/_emerge/depgraph.py
+++ b/pym/_emerge/depgraph.py
@@ -3240,6 +3240,20 @@ class depgraph(object):
matches = vardb.match_pkgs(atom)
if not matches:
return None, None
+ if len(matches) > 1:
+ unmasked = [pkg for pkg in matches if \
+ self._pkg_visibility_check(pkg)]
+ if unmasked:
+ if len(unmasked) == 1:
+ matches = unmasked
+ else:
+ # Account for packages with masks (like KEYWORDS masks)
+ # that are usually ignored in visibility checks for
+ # installed packages, in order to handle cases like
+ # bug #350285.
+ unmasked = [pkg for pkg in matches if not pkg.masks]
+ if unmasked:
+ matches = unmasked
pkg = matches[-1] # highest match
in_graph = self._dynamic_config._slot_pkg_map[root].get(pkg.slot_atom)
return pkg, in_graph