Gentoo Archives: gentoo-portage-dev

From: Zac Medico <zmedico@g.o>
To: gentoo-portage-dev@l.g.o
Cc: Zac Medico <zmedico@g.o>
Subject: [gentoo-portage-dev] [PATCH 2/3] depgraph: fix _validate_blockers to revert state from previous calls
Date: Wed, 19 Apr 2017 05:01:14
Message-Id: 20170419050007.7904-2-zmedico@gentoo.org
In Reply to: [gentoo-portage-dev] [PATCH 1/3] digraph: add update and clear methods by Zac Medico
1 Since the _solve_non_slot_operator_slot_conflicts method can
2 remove packages from the graph, it's possible that some of the
3 state changes made by previous _validate_blockers calls are
4 no longer valid. Therefore, revert state when appropriate.
5 ---
6 pym/_emerge/depgraph.py | 6 ++++++
7 1 file changed, 6 insertions(+)
8
9 diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py
10 index 8a614c4..3232816 100644
11 --- a/pym/_emerge/depgraph.py
12 +++ b/pym/_emerge/depgraph.py
13 @@ -6901,6 +6901,12 @@ class depgraph(object):
14 self._dynamic_config._blocker_uninstalls = digraph()
15 self._dynamic_config.digraph.difference_update(previous_uninstall_tasks)
16
17 + # Revert state from previous calls.
18 + self._dynamic_config._blocker_parents.update(
19 + self._dynamic_config._irrelevant_blockers)
20 + self._dynamic_config._irrelevant_blockers.clear()
21 + self._dynamic_config._unsolvable_blockers.clear()
22 +
23 for blocker in self._dynamic_config._blocker_parents.leaf_nodes():
24 self._spinner_update()
25 root_config = self._frozen_config.roots[blocker.root]
26 --
27 2.10.2