Index: pym/_emerge/__init__.py =================================================================== --- pym/_emerge/__init__.py (revision 12347) +++ pym/_emerge/__init__.py (revision 12349) @@ -6838,7 +6838,7 @@ selected_nodes = list(selected_nodes) selected_nodes.sort(cmp_circular_bias) - if not selected_nodes and not myblocker_uninstalls.is_empty(): + if not selected_nodes and myblocker_uninstalls.leaf_nodes(): # An Uninstall task needs to be executed in order to # avoid conflict if possible. min_parent_deps = None @@ -7007,15 +7007,17 @@ except KeyError: pass else: + uninst_task = node ignored_uninstall_tasks.add(node) break - # After dropping an Uninstall task, reset - # the state variables for leaf node selection and - # continue trying to select leaf nodes. - prefer_asap = True - accept_root_node = False - continue + if uninst_task is not None: + # After dropping an Uninstall task, reset + # the state variables for leaf node selection and + # continue trying to select leaf nodes. + prefer_asap = True + accept_root_node = False + continue if not selected_nodes: self._circular_deps_for_display = mygraph