diff options
author | Zac Medico <zmedico@gentoo.org> | 2007-05-03 09:24:13 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2007-05-03 09:24:13 +0000 |
commit | 1e768383340ea4b0550f841ddb9a69bca033c79d (patch) | |
tree | 57dda11c4f698dd3ca25fee4424e30ce28c6ad95 | |
parent | f40175fcbd5a83735af0e0feee24f648478658eb (diff) | |
download | portage-1e768383340ea4b0550f841ddb9a69bca033c79d.tar.gz portage-1e768383340ea4b0550f841ddb9a69bca033c79d.tar.bz2 portage-1e768383340ea4b0550f841ddb9a69bca033c79d.zip |
For bug #176765, when a new package is blocked by another one that is being replaced, handle another case where the conflict can be avoided. (trunk r6472:6473)
svn path=/main/branches/2.1.2/; revision=6474
-rwxr-xr-x | bin/emerge | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/bin/emerge b/bin/emerge index c5c7845a0..73dbe451f 100755 --- a/bin/emerge +++ b/bin/emerge @@ -1899,7 +1899,7 @@ class depgraph: # this block. upgrade_node = \ self.pkg_node_map[proot][upgrade_matches[0]] - depends_on_order.add(upgrade_node) + depends_on_order.add((upgrade_node, parent)) continue # None of the above blocker resolutions techniques apply, # so apparently this one is unresolvable. @@ -1915,13 +1915,27 @@ class depgraph: # This blocker will be handled the next time that a # merge of either package is triggered. continue + if not parent_static and pstatus == "nomerge" and \ + slot_atom in modified_slots[myroot]: + replacement = final_db.match(pslot_atom) + if replacement: + replacement_node = \ + self.pkg_node_map[proot][replacement[0]] + if replacement_node not in \ + self.blocker_parents[blocker]: + # Apparently a replacement may be able to + # invalidate this block. + blocked_node = self.pkg_node_map[proot][cpv] + depends_on_order.add( + (replacement_node, blocked_node)) + continue # None of the above blocker resolutions techniques apply, # so apparently this one is unresolvable. unresolved_blocks = True if not unresolved_blocks and depends_on_order: - for node in depends_on_order: + for node, pnode in depends_on_order: # Enforce correct merge order with a hard dep. - self.digraph.addnode(node, parent, + self.digraph.addnode(node, pnode, priority=DepPriority(buildtime=True)) # Count references to this blocker so that it can be # invalidated after nodes referencing it have been |