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> |