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 |