From 6560f18e5fc261ac9daae2196fe08b3aca023093 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Sat, 27 Jun 2009 19:39:46 +0000 Subject: Bug #270953 - New !!atom blockers do not allow temporary simulaneous installation, so unlike !atom blockers, !!atom blockers aren't ignored when they match other packages occupying the same slot. Thanks to Sebastian Mingramm (few) for the initial patch. svn path=/main/trunk/; revision=13716 --- pym/_emerge/depgraph.py | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) (limited to 'pym/_emerge') diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py index 9e5ddac28..371c0b1ea 100644 --- a/pym/_emerge/depgraph.py +++ b/pym/_emerge/depgraph.py @@ -2446,11 +2446,13 @@ class depgraph(object): unresolved_blocks = False depends_on_order = set() for pkg in blocked_initial: - if pkg.slot_atom == parent.slot_atom: - # TODO: Support blocks within slots in cases where it - # might make sense. For example, a new version might - # require that the old version be uninstalled at build - # time. + if pkg.slot_atom == parent.slot_atom and \ + not blocker.atom.blocker.overlap.forbid: + # New !!atom blockers do not allow temporary + # simulaneous installation, so unlike !atom + # blockers, !!atom blockers aren't ignored + # when they match other packages occupying + # the same slot. continue if parent.installed: # Two currently installed packages conflict with @@ -2470,8 +2472,13 @@ class depgraph(object): # so apparently this one is unresolvable. unresolved_blocks = True for pkg in blocked_final: - if pkg.slot_atom == parent.slot_atom: - # TODO: Support blocks within slots. + if pkg.slot_atom == parent.slot_atom and \ + not blocker.atom.blocker.overlap.forbid: + # New !!atom blockers do not allow temporary + # simulaneous installation, so unlike !atom + # blockers, !!atom blockers aren't ignored + # when they match other packages occupying + # the same slot. continue if parent.operation == "nomerge" and \ pkg.operation == "nomerge": -- cgit v1.2.3-1-g7c22