diff options
author | Zac Medico <zmedico@gentoo.org> | 2009-02-17 23:53:36 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2009-02-17 23:53:36 +0000 |
commit | ecb5f8ca5b5c30038480ec885fd453d0297b283c (patch) | |
tree | d107beacdfea827765991178866e90e9efa33f9c | |
parent | 5a491b9bc43a6ff59bae4c719f36907a21e9432a (diff) | |
download | portage-ecb5f8ca5b5c30038480ec885fd453d0297b283c.tar.gz portage-ecb5f8ca5b5c30038480ec885fd453d0297b283c.tar.bz2 portage-ecb5f8ca5b5c30038480ec885fd453d0297b283c.zip |
Bug #253904 - Add a lookahead mechanism inside
depgraph._dep_check_composite_db._visible() which masks package choices
that are likely to trigger slot conflicts. Thanks to Vlastimil Babka
<caster@g.o> for the suggestion.
svn path=/main/trunk/; revision=12623
-rw-r--r-- | pym/_emerge/__init__.py | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py index e63da7d5e..72be73e7c 100644 --- a/pym/_emerge/__init__.py +++ b/pym/_emerge/__init__.py @@ -8897,6 +8897,20 @@ class depgraph(object): return False except portage.exception.InvalidDependString: pass + in_graph = self._depgraph._slot_pkg_map[ + self._root].get(pkg.slot_atom) + if in_graph is None: + # Mask choices for packages which are not the highest visible + # version within their slot (since they usually trigger slot + # conflicts). + highest_visible, in_graph = self._depgraph._select_package( + self._root, pkg.slot_atom) + if pkg != highest_visible: + return False + elif in_graph != pkg: + # Mask choices for packages that would trigger a slot + # conflict with a previously selected package. + return False return True def _dep_expand(self, atom): |