1 |
When searching for slot operator rebuilds, respect non slot-operator |
2 |
components of parent dependencies, so that a <foo-version:= dependency |
3 |
like the <dev-libs/libgit2-1:0=[ssh?] dependency from bug 717140 will |
4 |
not be completely ignored. This will prevent erroneous attempts to |
5 |
trigger slot operator rebuilds for upgrades that would break |
6 |
<foo-version:= dependencies (which triggered upgrade/downgrade loops |
7 |
when backtracking tried to resolve the breakage). |
8 |
|
9 |
Bug: https://bugs.gentoo.org/717140 |
10 |
Signed-off-by: Zac Medico <zmedico@g.o> |
11 |
--- |
12 |
lib/_emerge/depgraph.py | 12 +++++++++--- |
13 |
.../resolver/test_slot_operator_reverse_deps.py | 1 - |
14 |
2 files changed, 9 insertions(+), 4 deletions(-) |
15 |
|
16 |
diff --git a/lib/_emerge/depgraph.py b/lib/_emerge/depgraph.py |
17 |
index 6d1f62178..ec90e59df 100644 |
18 |
--- a/lib/_emerge/depgraph.py |
19 |
+++ b/lib/_emerge/depgraph.py |
20 |
@@ -2068,9 +2068,15 @@ class depgraph(object): |
21 |
for parent, atom in self._dynamic_config._parent_atoms.get(existing_pkg, []): |
22 |
if isinstance(parent, Package): |
23 |
if parent in built_slot_operator_parents: |
24 |
- # This parent may need to be rebuilt, so its |
25 |
- # dependencies aren't necessarily relevant. |
26 |
- continue |
27 |
+ # This parent may need to be rebuilt, therefore |
28 |
+ # discard its soname and built slot operator |
29 |
+ # dependency components which are not necessarily |
30 |
+ # relevant. |
31 |
+ if atom.soname: |
32 |
+ continue |
33 |
+ elif atom.package and atom.slot_operator_built: |
34 |
+ # This discards the slot/subslot component. |
35 |
+ atom = atom.with_slot("=") |
36 |
|
37 |
if replacement_parent is not None and \ |
38 |
(replacement_parent.slot_atom == parent.slot_atom |
39 |
diff --git a/lib/portage/tests/resolver/test_slot_operator_reverse_deps.py b/lib/portage/tests/resolver/test_slot_operator_reverse_deps.py |
40 |
index 5c5295510..e0e738d6b 100644 |
41 |
--- a/lib/portage/tests/resolver/test_slot_operator_reverse_deps.py |
42 |
+++ b/lib/portage/tests/resolver/test_slot_operator_reverse_deps.py |
43 |
@@ -122,7 +122,6 @@ class SlotOperatorReverseDepsLibGit2TestCase(TestCase): |
44 |
trigger an upgrade to dev-libs/libgit2-1.0.0-r1, ultimately |
45 |
resulting in an undesirable downgrade to dev-libs/libgit2-0.28.4-r1. |
46 |
""" |
47 |
- self.todo = True |
48 |
|
49 |
ebuilds = { |
50 |
|
51 |
-- |
52 |
2.24.1 |