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] depgraph: make _minimize_children deterministic (bug 631894)
Date: Sun, 24 Sep 2017 18:57:46
Message-Id: 20170924185719.132949-1-zmedico@gentoo.org
1 In order for the eliminate_pkg loop to produce deterministic results,
2 the order of the pkgs list must not be random. Prefer to eliminate
3 installed packages first, in case rebuilds are needed, and also sort
4 in ascending order so that older versions are eliminated first.
5
6 X-Gentoo-bug: 631894
7 X-Gentoo-bug-url: https://bugs.gentoo.org/631894
8 ---
9 pym/_emerge/depgraph.py | 9 +++++++++
10 1 file changed, 9 insertions(+)
11
12 diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py
13 index b4fc5f297..785c036b8 100644
14 --- a/pym/_emerge/depgraph.py
15 +++ b/pym/_emerge/depgraph.py
16 @@ -3584,6 +3584,15 @@ class depgraph(object):
17 if atom_set.findAtomForPackage(pkg2, modified_use=self._pkg_use_enabled(pkg2)):
18 atom_pkg_graph.add(pkg2, atom)
19
20 + # In order for the following eliminate_pkg loop to produce
21 + # deterministic results, the order of the pkgs list must
22 + # not be random (bug 631894). Prefer to eliminate installed
23 + # packages first, in case rebuilds are needed, and also sort
24 + # in ascending order so that older versions are eliminated
25 + # first.
26 + pkgs = (sorted(pkg for pkg in pkgs if pkg.installed) +
27 + sorted(pkg for pkg in pkgs if not pkg.installed))
28 +
29 for pkg in pkgs:
30 eliminate_pkg = True
31 for atom in atom_pkg_graph.parent_nodes(pkg):
32 --
33 2.13.5

Replies