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 2/2 v2] depgraph: fix missed llvm update (bug 584626)
Date: Thu, 23 Jun 2016 10:11:29
Message-Id: 1466676671-11646-1-git-send-email-zmedico@gentoo.org
In Reply to: [gentoo-portage-dev] [PATCH 2/2] depgraph: fix missed llvm update (bug 584626) by Zac Medico
1 Fix check_reverse_dependencies to ignore dependencies of parent packages
2 for which updates are desirable. This solves a missed llvm update by
3 ignoring a reverse dependency from the installed instance of clang,
4 since an update to a newer version of clang is desirable.
5
6 In order to cope with this change, there are 2 existing unit tests
7 that require larger --backtrack settings in order to succeed.
8
9 X-Gentoo-Bug: 584626
10 X-Gentoo-Bug-url: https://bugs.gentoo.org/show_bug.cgi?id=584626
11 ---
12 [PATCH 2/2 v2]
13 * use > operator instead of >= in _upgrade_available
14 * simplify check_reverse_dependencies changes, using _too_deep
15
16 pym/_emerge/depgraph.py | 21 +++++++++++++++++++++
17 .../resolver/soname/test_slot_conflict_reinstall.py | 1 +
18 .../tests/resolver/test_slot_conflict_rebuild.py | 2 +-
19 .../resolver/test_slot_operator_reverse_deps.py | 6 +++++-
20 4 files changed, 28 insertions(+), 2 deletions(-)
21
22 diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py
23 index f78f08d..c1c37b4 100644
24 --- a/pym/_emerge/depgraph.py
25 +++ b/pym/_emerge/depgraph.py
26 @@ -1822,6 +1822,15 @@ class depgraph(object):
27 # necessarily relevant.
28 continue
29
30 + if (not self._too_deep(parent.depth) and
31 + not self._frozen_config.excluded_pkgs.
32 + findAtomForPackage(parent,
33 + modified_use=self._pkg_use_enabled(parent)) and
34 + self._upgrade_available(parent)):
35 + # This parent may be irrelevant, since an
36 + # update is available (see bug 584626).
37 + continue
38 +
39 atom_set = InternalPackageSet(initial_atoms=(atom,),
40 allow_repo=True)
41 if not atom_set.findAtomForPackage(candidate_pkg,
42 @@ -2113,6 +2122,18 @@ class depgraph(object):
43
44 self._dynamic_config._need_restart = True
45
46 + def _upgrade_available(self, pkg):
47 + """
48 + Detect cases where an upgrade of the given package is available
49 + within the same slot.
50 + """
51 + for available_pkg in self._iter_similar_available(pkg,
52 + pkg.slot_atom):
53 + if available_pkg > pkg:
54 + return True
55 +
56 + return False
57 +
58 def _downgrade_probe(self, pkg):
59 """
60 Detect cases where a downgrade of the given package is considered
61 diff --git a/pym/portage/tests/resolver/soname/test_slot_conflict_reinstall.py b/pym/portage/tests/resolver/soname/test_slot_conflict_reinstall.py
62 index 40e6995..f474761 100644
63 --- a/pym/portage/tests/resolver/soname/test_slot_conflict_reinstall.py
64 +++ b/pym/portage/tests/resolver/soname/test_slot_conflict_reinstall.py
65 @@ -89,6 +89,7 @@ class SonameSlotConflictReinstallTestCase(TestCase):
66 "--ignore-soname-deps": "n",
67 "--update": True,
68 "--usepkgonly": True,
69 + "--backtrack": 10,
70 },
71 success = True,
72 mergelist = [
73 diff --git a/pym/portage/tests/resolver/test_slot_conflict_rebuild.py b/pym/portage/tests/resolver/test_slot_conflict_rebuild.py
74 index b39eaf0..2dfa79c 100644
75 --- a/pym/portage/tests/resolver/test_slot_conflict_rebuild.py
76 +++ b/pym/portage/tests/resolver/test_slot_conflict_rebuild.py
77 @@ -91,7 +91,7 @@ class SlotConflictRebuildTestCase(TestCase):
78 # upgrade and we don't want to trigger unnecessary rebuilds.
79 ResolverPlaygroundTestCase(
80 ["@world"],
81 - options = {"--update": True, "--deep": True},
82 + options = {"--update": True, "--deep": True, "--backtrack": 4},
83 success = True,
84 mergelist = ["app-misc/D-2", "app-misc/E-0"]),
85
86 diff --git a/pym/portage/tests/resolver/test_slot_operator_reverse_deps.py b/pym/portage/tests/resolver/test_slot_operator_reverse_deps.py
87 index 72879f8..ce614a4 100644
88 --- a/pym/portage/tests/resolver/test_slot_operator_reverse_deps.py
89 +++ b/pym/portage/tests/resolver/test_slot_operator_reverse_deps.py
90 @@ -79,7 +79,11 @@ class SlotOperatorReverseDepsTestCase(TestCase):
91 ["@world"],
92 options = {"--update": True, "--deep": True},
93 success = True,
94 - mergelist = [],
95 + mergelist = [
96 + 'sys-devel/llvm-3.8.0-r2',
97 + 'sys-devel/clang-3.8.0-r100',
98 + 'media-libs/mesa-11.2.2',
99 + ],
100 ),
101
102 ResolverPlaygroundTestCase(
103 --
104 2.7.4