Gentoo Archives: gentoo-portage-dev

From: Brian Dolbec <dolsen@g.o>
To: gentoo-portage-dev@l.g.o
Subject: Re: [gentoo-portage-dev] [PATCH] depgraph: make _minimize_children deterministic (bug 631894)
Date: Mon, 25 Sep 2017 06:11:16
Message-Id: 20170924231106.0239f353@professor-x
In Reply to: [gentoo-portage-dev] [PATCH] depgraph: make _minimize_children deterministic (bug 631894) by Zac Medico
1 On Sun, 24 Sep 2017 11:57:19 -0700
2 Zac Medico <zmedico@g.o> wrote:
3
4 > In order for the eliminate_pkg loop to produce deterministic results,
5 > the order of the pkgs list must not be random. Prefer to eliminate
6 > installed packages first, in case rebuilds are needed, and also sort
7 > in ascending order so that older versions are eliminated first.
8 >
9 > X-Gentoo-bug: 631894
10 > X-Gentoo-bug-url: https://bugs.gentoo.org/631894
11 > ---
12 > pym/_emerge/depgraph.py | 9 +++++++++
13 > 1 file changed, 9 insertions(+)
14 >
15 > diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py
16 > index b4fc5f297..785c036b8 100644
17 > --- a/pym/_emerge/depgraph.py
18 > +++ b/pym/_emerge/depgraph.py
19 > @@ -3584,6 +3584,15 @@ class depgraph(object):
20 > if
21 > atom_set.findAtomForPackage(pkg2,
22 > modified_use=self._pkg_use_enabled(pkg2)): atom_pkg_graph.add(pkg2,
23 > atom)
24 > + # In order for the following eliminate_pkg
25 > loop to produce
26 > + # deterministic results, the order of the
27 > pkgs list must
28 > + # not be random (bug 631894). Prefer to
29 > eliminate installed
30 > + # packages first, in case rebuilds are
31 > needed, and also sort
32 > + # in ascending order so that older versions
33 > are eliminated
34 > + # first.
35 > + pkgs = (sorted(pkg for pkg in pkgs if
36 > pkg.installed) +
37 > + sorted(pkg for pkg in pkgs if not
38 > pkg.installed)) +
39 > for pkg in pkgs:
40 > eliminate_pkg = True
41 > for atom in
42 > atom_pkg_graph.parent_nodes(pkg):
43
44
45 Looks good
46
47 --
48 Brian Dolbec <dolsen>

Replies