From 251599fe919add04678e2d8bda1dc181d83b6de6 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Wed, 23 May 2007 20:39:13 +0000 Subject: In --tree output, keep track of which graph edges have already been displayed and try not to display a given edge more than once. (trunk r6555:6557) svn path=/main/branches/2.1.2/; revision=6604 --- bin/emerge | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'bin') diff --git a/bin/emerge b/bin/emerge index 9ae6dd10e..249f0e5a0 100755 --- a/bin/emerge +++ b/bin/emerge @@ -2340,6 +2340,7 @@ class depgraph: mygraph = self._parent_child_digraph i = 0 depth = 0 + shown_edges = set() for x in mylist: if "blocks" == x[0]: display_list.append((x, 0, True)) @@ -2354,6 +2355,7 @@ class depgraph: tree_nodes = tree_nodes[:depth] tree_nodes.append(graph_key) display_list.append((x, depth, True)) + shown_edges.add((graph_key, tree_nodes[depth-1])) else: traversed_nodes = set() # prevent endless circles traversed_nodes.add(graph_key) @@ -2366,15 +2368,22 @@ class depgraph: for node in parent_nodes: if node not in traversed_nodes and \ node not in child_nodes: + edge = (current_node, node) + if edge in shown_edges: + continue selected_parent = node break if not selected_parent: # A direct cycle is unavoidable. for node in parent_nodes: if node not in traversed_nodes: + edge = (current_node, node) + if edge in shown_edges: + continue selected_parent = node break if selected_parent: + shown_edges.add((current_node, selected_parent)) traversed_nodes.add(selected_parent) add_parents(selected_parent, False) display_list.append((list(current_node), -- cgit v1.2.3-1-g7c22