From: Zac Medico Date: Sun, 2 Jan 2011 09:52:02 +0000 (-0800) Subject: depclean: account for more masks X-Git-Tag: v2.2.0_alpha12~10 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=98a971cce1c180668e1d69f14e6c39500defba2b;p=portage.git 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. --- 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