Slot conflict "abi" backtrack nodes non-terminal.
authorZac Medico <zmedico@gentoo.org>
Sat, 23 Jun 2012 06:28:10 +0000 (23:28 -0700)
committerZac Medico <zmedico@gentoo.org>
Sat, 23 Jun 2012 06:28:10 +0000 (23:28 -0700)
pym/_emerge/depgraph.py
pym/_emerge/resolver/backtracking.py

index 75e3500de67f586fc2d2cb40c0764be39e2d2a05..07d30e64eac8b946471366af18d330efbf3ae83c 100644 (file)
@@ -881,8 +881,12 @@ class depgraph(object):
                        not self._accept_blocker_conflicts():
                        remaining = []
                        for pkg in conflict_pkgs:
-                               if not self._slot_conflict_backtrack_abi(pkg,
+                               if self._slot_conflict_backtrack_abi(pkg,
                                        slot_nodes, conflict_atoms):
+                                       backtrack_infos = self._dynamic_config._backtrack_infos
+                                       config = backtrack_infos.setdefault("config", {})
+                                       config.setdefault("slot_conflict_abi", set()).add(pkg)
+                               else:
                                        remaining.append(pkg)
                        if remaining:
                                self._slot_confict_backtrack(root, slot_atom,
index f39bad4139ffc68325366c60b8a4e9d84c982820..00a07bcb6191717d5d595b78478ad1d545dde83a 100644 (file)
@@ -186,6 +186,8 @@ class Backtracker(object):
                        elif change == "needed_use_config_changes":
                                for pkg, (new_use, new_changes) in data:
                                        para.needed_use_config_changes[pkg] = (new_use, new_changes)
+                       elif change == "slot_conflict_abi":
+                               new_node.terminal = False
                        elif change == "slot_abi_mask_built":
                                for pkg, mask_reasons in data.items():
                                        para.runtime_pkg_mask.setdefault(pkg,