diff options
author | Zac Medico <zmedico@gentoo.org> | 2018-03-29 20:35:24 -0700 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2018-03-29 20:47:55 -0700 |
commit | c5ad40dbe8f74dcdb2b08d42240e217a8ef440e6 (patch) | |
tree | ab92f0e8892823aceca815d418bf2eb38dc7a809 | |
parent | repoman man/repoman.1: Add "BEHAVIOR" section (fix bug 650520) (diff) | |
download | portage-c5ad40db.tar.gz portage-c5ad40db.tar.bz2 portage-c5ad40db.zip |
depgraph._serialize_tasks: resolve portage/repoman blockers (bug 651936)
When ensuring that all runtime dependencies are installed before
a new instance of portage, ignore uninstalls. This makes it possible
to solve a blocker between a new version of portage and an older
version of repoman, where an uninstall task for the older version
of repoman appears in the runtime dependencies of the new instance
of portage.
Bug: https://bugs.gentoo.org/651936
-rw-r--r-- | pym/_emerge/depgraph.py | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py index 6af7d5714..963bf25f4 100644 --- a/pym/_emerge/depgraph.py +++ b/pym/_emerge/depgraph.py @@ -7671,11 +7671,13 @@ class depgraph(object): return True if node not in mergeable_nodes: return False - if node == replacement_portage and \ - mygraph.child_nodes(node, - ignore_priority=priority_range.ignore_medium_soft): - # Make sure that portage always has all of it's - # RDEPENDs installed first. + if node == replacement_portage and any( + getattr(rdep, 'operation', None) != 'uninstall' + for rdep in mygraph.child_nodes(node, + ignore_priority=priority_range.ignore_medium_soft)): + # Make sure that portage always has all of its + # RDEPENDs installed first, but ignore uninstalls + # (these occur when new portage blocks older repoman). return False selected_nodes.add(node) for child in mygraph.child_nodes(node, |