From: Zac Medico Date: Sat, 27 Jun 2009 19:39:46 +0000 (-0000) Subject: Bug #270953 - New !!atom blockers do not allow temporary simulaneous X-Git-Tag: v2.2_rc34~137 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=6560f18e5fc261ac9daae2196fe08b3aca023093;p=portage.git 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 --- 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":