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