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 |