1 |
commit: 60564a32c71ce9362e9329c7fd87783699c2c4b4 |
2 |
Author: Zac Medico <zmedico <AT> gentoo <DOT> org> |
3 |
AuthorDate: Mon May 2 03:09:33 2011 +0000 |
4 |
Commit: Zac Medico <zmedico <AT> gentoo <DOT> org> |
5 |
CommitDate: Mon May 2 03:09:33 2011 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=60564a32 |
7 |
|
8 |
depgraph: queue ignored deps for later traversal |
9 |
|
10 |
This will fix an issue with some build-time deps being ignored by |
11 |
--complete-graph in cases when --with-bdeps is not enabled. It |
12 |
should help --rebuild to find more rebuilds in this case. |
13 |
|
14 |
--- |
15 |
pym/_emerge/depgraph.py | 41 ++++++++++++++++++++++++++++------------- |
16 |
1 files changed, 28 insertions(+), 13 deletions(-) |
17 |
|
18 |
diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py |
19 |
index 2401541..80d701c 100644 |
20 |
--- a/pym/_emerge/depgraph.py |
21 |
+++ b/pym/_emerge/depgraph.py |
22 |
@@ -374,6 +374,7 @@ class _dynamic_depgraph_config(object): |
23 |
|
24 |
self._autounmask = depgraph._frozen_config.myopts.get('--autounmask', 'n') == True |
25 |
self._success_without_autounmask = False |
26 |
+ self._traverse_ignored_deps = False |
27 |
|
28 |
for myroot in depgraph._frozen_config.trees: |
29 |
self.sets[myroot] = _depgraph_sets() |
30 |
@@ -898,8 +899,9 @@ class depgraph(object): |
31 |
|
32 |
self._rebuild.add(dep_pkg, dep) |
33 |
|
34 |
- if (not dep.collapsed_priority.ignored and |
35 |
- not self._add_pkg(dep_pkg, dep)): |
36 |
+ ignore = dep.collapsed_priority.ignored and \ |
37 |
+ not self._dynamic_config._traverse_ignored_deps |
38 |
+ if not ignore and not self._add_pkg(dep_pkg, dep): |
39 |
return 0 |
40 |
return 1 |
41 |
|
42 |
@@ -1300,7 +1302,7 @@ class depgraph(object): |
43 |
deps = ( |
44 |
(depend_root, edepend["DEPEND"], |
45 |
self._priority(buildtime=True, |
46 |
- optional=pkg.built, |
47 |
+ optional=(pkg.built or ignore_build_time_deps), |
48 |
ignored=ignore_build_time_deps), |
49 |
pkg.built or ignore_build_time_deps), |
50 |
(myroot, edepend["RDEPEND"], |
51 |
@@ -1479,11 +1481,17 @@ class depgraph(object): |
52 |
self._dynamic_config._ignored_deps.append(dep) |
53 |
|
54 |
if not ignored: |
55 |
- if not self._add_dep(dep, |
56 |
- allow_unsatisfied=allow_unsatisfied): |
57 |
- return 0 |
58 |
- if is_virt and dep.child is not None: |
59 |
- traversed_virt_pkgs.add(dep.child) |
60 |
+ if dep_priority.ignored: |
61 |
+ if is_virt and dep.child is not None: |
62 |
+ traversed_virt_pkgs.add(dep.child) |
63 |
+ dep.child = None |
64 |
+ self._dynamic_config._ignored_deps.append(dep) |
65 |
+ else: |
66 |
+ if not self._add_dep(dep, |
67 |
+ allow_unsatisfied=allow_unsatisfied): |
68 |
+ return 0 |
69 |
+ if is_virt and dep.child is not None: |
70 |
+ traversed_virt_pkgs.add(dep.child) |
71 |
|
72 |
selected_atoms.pop(pkg) |
73 |
|
74 |
@@ -1565,11 +1573,17 @@ class depgraph(object): |
75 |
self._dynamic_config._ignored_deps.append(dep) |
76 |
|
77 |
if not ignored: |
78 |
- if not self._add_dep(dep, |
79 |
- allow_unsatisfied=allow_unsatisfied): |
80 |
- return 0 |
81 |
- if is_virt and dep.child is not None: |
82 |
- traversed_virt_pkgs.add(dep.child) |
83 |
+ if dep_priority.ignored: |
84 |
+ if is_virt and dep.child is not None: |
85 |
+ traversed_virt_pkgs.add(dep.child) |
86 |
+ dep.child = None |
87 |
+ self._dynamic_config._ignored_deps.append(dep) |
88 |
+ else: |
89 |
+ if not self._add_dep(dep, |
90 |
+ allow_unsatisfied=allow_unsatisfied): |
91 |
+ return 0 |
92 |
+ if is_virt and dep.child is not None: |
93 |
+ traversed_virt_pkgs.add(dep.child) |
94 |
|
95 |
if debug: |
96 |
writemsg_level("Exiting... %s\n" % (pkg,), |
97 |
@@ -3916,6 +3930,7 @@ class depgraph(object): |
98 |
# Make the graph as complete as possible by traversing build-time |
99 |
# dependencies if they happen to be installed already. |
100 |
self._dynamic_config.myparams["bdeps"] = "y" |
101 |
+ self._dynamic_config._traverse_ignored_deps = True |
102 |
already_deep = self._dynamic_config.myparams.get("deep") is True |
103 |
if not already_deep: |
104 |
self._dynamic_config.myparams["deep"] = True |