Gentoo Archives: gentoo-portage-dev

From: Zac Medico <zmedico@g.o>
To: gentoo-portage-dev@l.g.o
Subject: Re: [gentoo-portage-dev] [PATCH] depgraph: select highest version involved in slot conflict (bug 554070)
Date: Mon, 05 Dec 2016 05:12:34
Message-Id: 6584353f-7717-1067-fb04-a6abe6214ae4@gentoo.org
In Reply to: Re: [gentoo-portage-dev] [PATCH] depgraph: select highest version involved in slot conflict (bug 554070) by Brian Dolbec
1 On 12/04/2016 07:43 PM, Brian Dolbec wrote:
2 > On Sun, 4 Dec 2016 18:54:37 -0800
3 > Zac Medico <zmedico@g.o> wrote:
4 >
5 >> Fix depgraph's package selection logic to choose the highest version
6 >> involved in a slot conflict, for correct operation of
7 >> conflict_downgrade logic in the dep_zapdeps function which was
8 >> introduced in commit a9064d08ef4c92a5d0d1bfb3dc8a01b7850812b0. This
9 >> will prevent incorrect re-ordering of || deps in dep_zapdeps, as
10 >> reported in bug 554070.
11 >>
12 >> X-Gentoo-Bug: 554070
13 >> X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=554070
14 >> Fixes a9064d08ef4c ("Solve more slot-operator conflicts (531656)")
15 >> ---
16 >> pym/_emerge/depgraph.py | 11 +++++++++--
17 >> 1 file changed, 9 insertions(+), 2 deletions(-)
18 >>
19 >> diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py
20 >> index 9161914..ee6cf68 100644
21 >> --- a/pym/_emerge/depgraph.py
22 >> +++ b/pym/_emerge/depgraph.py
23 >> @@ -6071,8 +6071,15 @@ class depgraph(object):
24 >> # will always end with a
25 >> break statement below # this point.
26 >> if find_existing_node:
27 >> - e_pkg =
28 >> next(self._dynamic_config._package_tracker.match(
29 >> - root,
30 >> pkg.slot_atom, installed=False), None)
31 >> + # Use reversed
32 >> iteration in order to get
33 >> + # descending order
34 >> here, so that the highest
35 >> + # version involved
36 >> in a slot conflict is
37 >> + # selected. This is
38 >> needed for correct operation
39 >> + # of
40 >> conflict_downgrade logic in the dep_zapdeps
41 >> + # function (see bug
42 >> 554070).
43 >> + e_pkg =
44 >> next(reversed(list(
45 >> +
46 >> self._dynamic_config._package_tracker.match(
47 >> + root,
48 >> pkg.slot_atom, installed=False))), None)
49 >> if not e_pkg:
50 >> break
51 >
52 > LGTM
53 >
54
55 Pushed:
56
57 https://gitweb.gentoo.org/proj/portage.git/commit/?id=ab07ac68fa1e04ed64e2e0f6c753ff169a32d517
58 --
59 Thanks,
60 Zac