diff options
author | Zac Medico <zmedico@gentoo.org> | 2023-11-28 15:58:23 -0800 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2023-11-28 16:00:18 -0800 |
commit | 9823f70c6e4ef3cdd6abb4d9fc599ce02a138125 (patch) | |
tree | 4e74476c0659a6562d01f5267f07706df4a9c116 /lib/_emerge/depgraph.py | |
parent | Cancel prefetchers that have not started yet (diff) | |
download | gentoo-portage-9823f70c6e4ef3cdd6abb4d9fc599ce02a138125.tar.xz gentoo-portage-9823f70c6e4ef3cdd6abb4d9fc599ce02a138125.zip |
Prefer installed leaves in runtime cycle topological sort
In order to avoid possibly merging a package too early, prefer
installed leaves in runtime cycle topological sort. This fixes
an AlternativesGzipTestCase failure that arose after 2e298ea7ba36
caused leaves to be selected in a slightly different order.
Bug: https://bugs.gentoo.org/917259
Signed-off-by: Zac Medico <zmedico@gentoo.org>
Diffstat (limited to 'lib/_emerge/depgraph.py')
-rw-r--r-- | lib/_emerge/depgraph.py | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/_emerge/depgraph.py b/lib/_emerge/depgraph.py index da37f980ada6..9f041f83a90e 100644 --- a/lib/_emerge/depgraph.py +++ b/lib/_emerge/depgraph.py @@ -9498,6 +9498,12 @@ class depgraph: if smallest_leaves is None: smallest_leaves = [cycle_digraph.order[-1]] + # Prefer installed leaves, in order to avoid + # merging something too early. + installed_leaves = [pkg for pkg in smallest_leaves if pkg.installed] + if installed_leaves: + smallest_leaves = installed_leaves + # Only harvest one node at a time, in order to # minimize the number of ignored dependencies. cycle_digraph.remove(smallest_leaves[0]) |