1 |
commit: c5ad40dbe8f74dcdb2b08d42240e217a8ef440e6 |
2 |
Author: Zac Medico <zmedico <AT> gentoo <DOT> org> |
3 |
AuthorDate: Fri Mar 30 03:35:24 2018 +0000 |
4 |
Commit: Zac Medico <zmedico <AT> gentoo <DOT> org> |
5 |
CommitDate: Fri Mar 30 03:47:55 2018 +0000 |
6 |
URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=c5ad40db |
7 |
|
8 |
depgraph._serialize_tasks: resolve portage/repoman blockers (bug 651936) |
9 |
|
10 |
When ensuring that all runtime dependencies are installed before |
11 |
a new instance of portage, ignore uninstalls. This makes it possible |
12 |
to solve a blocker between a new version of portage and an older |
13 |
version of repoman, where an uninstall task for the older version |
14 |
of repoman appears in the runtime dependencies of the new instance |
15 |
of portage. |
16 |
|
17 |
Bug: https://bugs.gentoo.org/651936 |
18 |
|
19 |
pym/_emerge/depgraph.py | 12 +++++++----- |
20 |
1 file changed, 7 insertions(+), 5 deletions(-) |
21 |
|
22 |
diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py |
23 |
index 6af7d5714..963bf25f4 100644 |
24 |
--- a/pym/_emerge/depgraph.py |
25 |
+++ b/pym/_emerge/depgraph.py |
26 |
@@ -7671,11 +7671,13 @@ class depgraph(object): |
27 |
return True |
28 |
if node not in mergeable_nodes: |
29 |
return False |
30 |
- if node == replacement_portage and \ |
31 |
- mygraph.child_nodes(node, |
32 |
- ignore_priority=priority_range.ignore_medium_soft): |
33 |
- # Make sure that portage always has all of it's |
34 |
- # RDEPENDs installed first. |
35 |
+ if node == replacement_portage and any( |
36 |
+ getattr(rdep, 'operation', None) != 'uninstall' |
37 |
+ for rdep in mygraph.child_nodes(node, |
38 |
+ ignore_priority=priority_range.ignore_medium_soft)): |
39 |
+ # Make sure that portage always has all of its |
40 |
+ # RDEPENDs installed first, but ignore uninstalls |
41 |
+ # (these occur when new portage blocks older repoman). |
42 |
return False |
43 |
selected_nodes.add(node) |
44 |
for child in mygraph.child_nodes(node, |