Gentoo Archives: gentoo-commits

From: Thomas Sachau <tommy@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/portage:multilib commit in: pym/_emerge/
Date: Sun, 06 Feb 2011 13:15:34
Message-Id: 6709704ffe68937e35d6e945043b5da50b5941c2.tommy@gentoo
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") % \