1 |
commit: 6709704ffe68937e35d6e945043b5da50b5941c2 |
2 |
Author: Zac Medico <zmedico <AT> gentoo <DOT> org> |
3 |
AuthorDate: Wed Feb 2 05:33:10 2011 +0000 |
4 |
Commit: Thomas Sachau <tommy <AT> gentoo <DOT> org> |
5 |
CommitDate: Wed Feb 2 05:33:10 2011 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=6709704f |
7 |
|
8 |
_get_dep_chain: allow SetArg for first node |
9 |
|
10 |
--- |
11 |
pym/_emerge/depgraph.py | 29 +++++++++++++++-------------- |
12 |
1 files changed, 15 insertions(+), 14 deletions(-) |
13 |
|
14 |
diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py |
15 |
index 16326ee..bcbc41d 100644 |
16 |
--- a/pym/_emerge/depgraph.py |
17 |
+++ b/pym/_emerge/depgraph.py |
18 |
@@ -2202,7 +2202,8 @@ class depgraph(object): |
19 |
|
20 |
return selected_atoms |
21 |
|
22 |
- def _get_dep_chain(self, pkg, target_atom=None, unsatisfied_dependency=False): |
23 |
+ def _get_dep_chain(self, start_node, target_atom=None, |
24 |
+ unsatisfied_dependency=False): |
25 |
""" |
26 |
Returns a list of (atom, node_type) pairs that represent a dep chain. |
27 |
If target_atom is None, the first package shown is pkg's parent. |
28 |
@@ -2213,17 +2214,17 @@ class depgraph(object): |
29 |
""" |
30 |
traversed_nodes = set() |
31 |
dep_chain = [] |
32 |
- node = pkg |
33 |
- first = True |
34 |
+ node = start_node |
35 |
child = None |
36 |
all_parents = self._dynamic_config._parent_atoms |
37 |
|
38 |
- if target_atom is not None: |
39 |
+ if target_atom is not None and isinstance(node, Package): |
40 |
affecting_use = set() |
41 |
for dep_str in "DEPEND", "RDEPEND", "PDEPEND": |
42 |
- affecting_use.update(extract_affecting_use(pkg.metadata[dep_str], target_atom)) |
43 |
- affecting_use.difference_update(pkg.use.mask, node.use.force) |
44 |
- pkg_name = _unicode_decode("%s") % (pkg.cpv,) |
45 |
+ affecting_use.update(extract_affecting_use( |
46 |
+ node.metadata[dep_str], target_atom)) |
47 |
+ affecting_use.difference_update(node.use.mask, node.use.force) |
48 |
+ pkg_name = _unicode_decode("%s") % (node.cpv,) |
49 |
if affecting_use: |
50 |
usedep = [] |
51 |
for flag in affecting_use: |
52 |
@@ -2233,7 +2234,7 @@ class depgraph(object): |
53 |
usedep.append("-"+flag) |
54 |
pkg_name += "[%s]" % ",".join(usedep) |
55 |
|
56 |
- dep_chain.append((pkg_name, pkg.type_name)) |
57 |
+ dep_chain.append((pkg_name, node.type_name)) |
58 |
|
59 |
while node is not None: |
60 |
traversed_nodes.add(node) |
61 |
@@ -2241,7 +2242,7 @@ class depgraph(object): |
62 |
if isinstance(node, DependencyArg): |
63 |
dep_chain.append((_unicode_decode("%s") % (node,), "argument")) |
64 |
|
65 |
- elif node is not pkg: |
66 |
+ elif node is not start_node: |
67 |
for ppkg, patom in all_parents[child]: |
68 |
if ppkg == node: |
69 |
atom = patom.unevaluated_atom |
70 |
@@ -2297,14 +2298,14 @@ class depgraph(object): |
71 |
selected_parent = None |
72 |
break |
73 |
else: |
74 |
- if unsatisfied_dependency and node is pkg: |
75 |
+ if unsatisfied_dependency and node is start_node: |
76 |
# Make sure that pkg doesn't satisfy parent's dependency. |
77 |
# This ensures that we select the correct parent for use |
78 |
# flag changes. |
79 |
- for ppkg, atom in all_parents[pkg]: |
80 |
+ for ppkg, atom in all_parents[start_node]: |
81 |
if parent is ppkg: |
82 |
atom_set = InternalPackageSet(initial_atoms=(atom,)) |
83 |
- if not atom_set.findAtomForPackage(pkg): |
84 |
+ if not atom_set.findAtomForPackage(start_node): |
85 |
selected_parent = parent |
86 |
child = node |
87 |
break |
88 |
@@ -2672,11 +2673,11 @@ class depgraph(object): |
89 |
writemsg_stdout(" nothing similar found.\n" |
90 |
, noiselevel=-1) |
91 |
msg = [] |
92 |
- if not isinstance(myparent, DependencyArg): |
93 |
+ if not isinstance(myparent, AtomArg): |
94 |
# It's redundant to show parent for AtomArg since |
95 |
# it's the same as 'xinfo' displayed above. |
96 |
dep_chain = self._get_dep_chain(myparent, atom) |
97 |
- |
98 |
+ |
99 |
for node, node_type in dep_chain: |
100 |
msg.append('(dependency required by "%s" [%s])' % \ |
101 |
(colorize('INFORM', _unicode_decode("%s") % \ |