Gentoo Archives: gentoo-portage-dev

From: Zac Medico <zmedico@g.o>
To: gentoo-portage-dev@l.g.o
Cc: Zac Medico <zmedico@g.o>
Subject: [gentoo-portage-dev] [PATCH] depgraph: respect <foo-version:= for slot operator rebuild (bug 717140)
Date: Sun, 12 Apr 2020 00:40:25
Message-Id: 20200412003953.30817-1-zmedico@gentoo.org
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

Replies