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,
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,