diff options
author | Sebastian Luther <SebastianLuther@gmx.de> | 2010-08-12 12:32:02 +0200 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2010-08-12 03:40:45 -0700 |
commit | b110b9f829e67e05900e8af039622113ff48f76e (patch) | |
tree | cad8a2476a26257ce62154b8ec04d9dc4fe96e18 | |
parent | a1b9a2d52517c71931c78389dbb943c0eb374070 (diff) | |
download | portage-b110b9f829e67e05900e8af039622113ff48f76e.tar.gz portage-b110b9f829e67e05900e8af039622113ff48f76e.tar.bz2 portage-b110b9f829e67e05900e8af039622113ff48f76e.zip |
autounmask: Print use flag that trigger a given dep in comments
-rw-r--r-- | pym/_emerge/depgraph.py | 35 |
1 files changed, 33 insertions, 2 deletions
diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py index 5412aa417..56ea1bd19 100644 --- a/pym/_emerge/depgraph.py +++ b/pym/_emerge/depgraph.py @@ -16,7 +16,7 @@ from portage import digraph from portage.const import PORTAGE_PACKAGE_ATOM from portage.dbapi import dbapi from portage.dbapi.dep_expand import dep_expand -from portage.dep import Atom +from portage.dep import Atom, extract_affecting_use from portage.eapi import eapi_has_strong_blocks, eapi_has_required_use from portage.output import bold, blue, colorize, create_color_func, darkblue, \ darkgreen, green, nc_len, red, teal, turquoise, yellow @@ -5080,14 +5080,44 @@ class depgraph(object): msg = "#" node = pkg first = True + child = None + all_parents = self._dynamic_config._parent_atoms while node is not None: traversed_nodes.add(node) if node is not pkg: + for ppkg, patom in all_parents[child]: + if ppkg == node: + atom = patom.unevaluated_atom + break + + dep_strings = set() + for priority in self._dynamic_config.digraph.nodes[node][0][child]: + if priority.buildtime: + dep_strings.add(node.metadata["DEPEND"]) + if priority.runtime: + dep_strings.add(node.metadata["RDEPEND"]) + if priority.runtime_post: + dep_strings.add(node.metadata["PDEPEND"]) + + affecting_use = set() + for dep_str in dep_strings: + affecting_use.update(extract_affecting_use(dep_str, atom)) + + pkg_name = node.cpv + if affecting_use: + usedep = [] + for flag in affecting_use: + if flag in node.use.enabled: + usedep.append(flag) + else: + usedep.append("-"+flag) + pkg_name += "[%s]" % ",".join(usedep) + if first: first = False else: msg += ", " - msg += 'required by =%s' % node.cpv + msg += 'required by =%s' % pkg_name if node not in self._dynamic_config.digraph: # The parent is not in the graph due to backtracking. @@ -5108,6 +5138,7 @@ class depgraph(object): break if parent not in traversed_nodes: selected_parent = parent + child = node node = selected_parent msg += "\n" return msg |