diff options
author | Zac Medico <zmedico@gentoo.org> | 2017-09-24 11:52:22 -0700 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2017-09-24 19:03:08 -0700 |
commit | 5b286b267cb5cc69cac1c99ec8704ff0e0463e11 (patch) | |
tree | 4ae38c60e1f5ab6f404a7e0f374d3cc1a57d22bc | |
parent | postinst-qa-check.d: remove redundant local vars and obsolete comments (diff) | |
download | portage-5b286b267cb5cc69cac1c99ec8704ff0e0463e11.tar.gz portage-5b286b267cb5cc69cac1c99ec8704ff0e0463e11.tar.bz2 portage-5b286b267cb5cc69cac1c99ec8704ff0e0463e11.zip |
depgraph: make _minimize_children deterministic (bug 631894)
In order for the eliminate_pkg loop to produce deterministic results,
the order of the pkgs list must not be random. Prefer to eliminate
installed packages first, in case rebuilds are needed, and also sort
in ascending order so that older versions are eliminated first.
X-Gentoo-bug: 631894
X-Gentoo-bug-url: https://bugs.gentoo.org/631894
Reviewed-by: Manuel RĂ¼ger <mrueg@gentoo.org>
-rw-r--r-- | pym/_emerge/depgraph.py | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py index b4fc5f297..785c036b8 100644 --- a/pym/_emerge/depgraph.py +++ b/pym/_emerge/depgraph.py @@ -3584,6 +3584,15 @@ class depgraph(object): if atom_set.findAtomForPackage(pkg2, modified_use=self._pkg_use_enabled(pkg2)): atom_pkg_graph.add(pkg2, atom) + # In order for the following eliminate_pkg loop to produce + # deterministic results, the order of the pkgs list must + # not be random (bug 631894). Prefer to eliminate installed + # packages first, in case rebuilds are needed, and also sort + # in ascending order so that older versions are eliminated + # first. + pkgs = (sorted(pkg for pkg in pkgs if pkg.installed) + + sorted(pkg for pkg in pkgs if not pkg.installed)) + for pkg in pkgs: eliminate_pkg = True for atom in atom_pkg_graph.parent_nodes(pkg): |