Gentoo Archives: gentoo-portage-dev

From: Brian Dolbec <dolsen@g.o>
To: gentoo-portage-dev@l.g.o
Subject: Re: [gentoo-portage-dev] [PATCH] depgraph: respect <foo-version:= for slot operator rebuild (bug 717140)
Date: Sun, 12 Apr 2020 01:10:32
Message-Id: 20200411181009.6bfc3486@professor-x
In Reply to: [gentoo-portage-dev] [PATCH] depgraph: respect by Zac Medico
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 :)

Replies