summaryrefslogtreecommitdiffstats
path: root/pym/_emerge
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2009-02-17 23:53:36 +0000
committerZac Medico <zmedico@gentoo.org>2009-02-17 23:53:36 +0000
commitecb5f8ca5b5c30038480ec885fd453d0297b283c (patch)
treed107beacdfea827765991178866e90e9efa33f9c /pym/_emerge
parent5a491b9bc43a6ff59bae4c719f36907a21e9432a (diff)
downloadportage-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
Diffstat (limited to 'pym/_emerge')
-rw-r--r--pym/_emerge/__init__.py14
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):