summaryrefslogtreecommitdiffstats
path: root/pym/_emerge/depgraph.py
diff options
context:
space:
mode:
authorSebastian Luther <SebastianLuther@gmx.de>2010-09-20 08:25:37 +0200
committerZac Medico <zmedico@gentoo.org>2010-09-19 23:34:53 -0700
commit4bc78ab0b563697b98527eebcdfe474863383cf0 (patch)
tree68a44f3e39e7cb0933b6231841cfdd706af55229 /pym/_emerge/depgraph.py
parent146dea1276fcecb641ee57f080a4d8f2ccce1396 (diff)
downloadportage-4bc78ab0b563697b98527eebcdfe474863383cf0.tar.gz
portage-4bc78ab0b563697b98527eebcdfe474863383cf0.tar.bz2
portage-4bc78ab0b563697b98527eebcdfe474863383cf0.zip
Always mask the higher version when backtracking due to a slot conflict
Diffstat (limited to 'pym/_emerge/depgraph.py')
-rw-r--r--pym/_emerge/depgraph.py14
1 files changed, 10 insertions, 4 deletions
diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py
index 529dd2ae9..9122232ff 100644
--- a/pym/_emerge/depgraph.py
+++ b/pym/_emerge/depgraph.py
@@ -906,21 +906,27 @@ class depgraph(object):
conflict_atoms = self._dynamic_config._slot_conflict_parent_atoms.intersection(parent_atoms)
if conflict_atoms:
parent_atoms = conflict_atoms
- if pkg >= existing_node:
+
+ if pkg > existing_node:
+ to_be_masked = pkg
+ else:
+ to_be_masked = existing_node
+
+ if pkg.cpv == existing_node.cpv:
# We only care about the parent atoms
# when they trigger a downgrade.
parent_atoms = set()
self._dynamic_config._runtime_pkg_mask.setdefault(
- existing_node, {})["slot conflict"] = parent_atoms
+ to_be_masked, {})["slot conflict"] = parent_atoms
self._dynamic_config._need_restart = True
if "--debug" in self._frozen_config.myopts:
msg = []
msg.append("")
msg.append("")
msg.append("backtracking due to slot conflict:")
- msg.append(" package: %s" % existing_node)
- msg.append(" slot: %s" % existing_node.slot_atom)
+ msg.append(" package: %s" % to_be_masked)
+ msg.append(" slot: %s" % to_be_masked.slot_atom)
msg.append(" parents: %s" % \
[(str(parent), atom) \
for parent, atom in parent_atoms])