From c1e83203c56cbb4a9e154c9d8428844a7424db59 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Mon, 14 Sep 2009 11:05:16 +0000 Subject: Reimplement the code from bug #283795 so that indirect deps are preserved for later use. TODO: Write code to add selected indirect virtual deps to the graph. This will take advantage of circular dependency avoidance that's done by dep_zapdeps. svn path=/main/trunk/; revision=14269 --- pym/_emerge/depgraph.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'pym/_emerge') diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py index b7aa82525..f76954fa8 100644 --- a/pym/_emerge/depgraph.py +++ b/pym/_emerge/depgraph.py @@ -1837,10 +1837,12 @@ class depgraph(object): pkgsettings = self._frozen_config.pkgsettings[root] if trees is None: trees = self._dynamic_config._filtered_trees + atom_graph = digraph() if True: try: if parent is not None: trees[root]["parent"] = parent + trees[root]["atom_graph"] = atom_graph if priority is not None: trees[root]["priority"] = priority if not strict: @@ -1851,12 +1853,26 @@ class depgraph(object): finally: if parent is not None: trees[root].pop("parent") + trees[root].pop("atom_graph") if priority is not None: trees[root].pop("priority") portage.dep._dep_check_strict = True if not mycheck[0]: raise portage.exception.InvalidDependString(mycheck[1]) + if parent is None: selected_atoms = mycheck[1] + else: + if parent.cpv in atom_graph: + # TODO: Write code to add selected indirect virtual deps to + # the graph. This will take advantage of circular dependency + # avoidance that's done by dep_zapdeps. For now, only return + # direct deps here, since we don't want to distort the + # dependency graph by mixing indirect deps. + direct_deps = set(atom_graph.child_nodes(parent.cpv)) + selected_atoms = [atom for atom in mycheck[1] \ + if atom in direct_deps] + else: + selected_atoms = [] return selected_atoms def _show_unsatisfied_dep(self, root, atom, myparent=None, arg=None): -- cgit v1.2.3-1-g7c22