self._slot_collision_nodes = set()
self._parent_atoms = {}
self._slot_conflict_parent_atoms = set()
+ self._slot_conflict_handler = None
self._serialized_tasks_cache = None
self._scheduler_graph = None
self._displayed_list = None
self._show_merge_list()
- handler = slot_conflict_handler(self._dynamic_config._slot_collision_info, \
- self._dynamic_config._parent_atoms, self._frozen_config.myopts)
+ self._dynamic_config._slot_conflict_handler = \
+ slot_conflict_handler(self._dynamic_config._slot_collision_info, \
+ self._dynamic_config._parent_atoms, self._frozen_config.myopts)
+ handler = self._dynamic_config._slot_conflict_handler
conflict = handler.get_conflict()
writemsg(conflict, noiselevel=-1)
params = create_depgraph_params(options, action)
success, depgraph, favorites = backtrack_depgraph(
self.settings, self.trees, options, params, action, atoms, None)
+ depgraph.display_problems()
result = ResolverPlaygroundResult(atoms, success, depgraph, favorites)
portage.util.noiselimit = 0
"success": None,
"mergelist": None,
"use_changes": None,
- "unstable_keywords": None
+ "unstable_keywords": None,
+ "slot_collision_solutions": None,
}
self.all_permutations = kwargs.pop("all_permutations", False)
self.mergelist = None
self.use_changes = None
self.unstable_keywords = None
+ self.slot_collision_solutions = None
if self.depgraph._dynamic_config._serialized_tasks_cache is not None:
self.mergelist = []
self.unstable_keywords = set()
for pkg in self.depgraph._dynamic_config._needed_unstable_keywords:
self.unstable_keywords.add(pkg.cpv)
+
+ if self.depgraph._dynamic_config._slot_conflict_handler is not None:
+ self.slot_collision_solutions = []
+ handler = self.depgraph._dynamic_config._slot_conflict_handler
+
+ for solution in handler.solutions:
+ s = {}
+ for pkg in solution:
+ changes = {}
+ for flag, state in solution[pkg].items():
+ if state == "enabled":
+ changes[flag] = True
+ else:
+ changes[flag] = False
+ s[pkg.cpv] = changes
+ self.slot_collision_solutions.append(s)