From bb3dafa3b5d978b7e68eceeb7faf8b5d156f3058 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Mon, 29 Dec 2014 20:55:02 -0800 Subject: Reduce number of immediate expand/contracts. --- lib/spack/spack/spec.py | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) (limited to 'lib') diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 2cd7bfb6be..a8d080b0d2 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -1444,18 +1444,30 @@ class Spec(object): frontier.pop(i) elif len(frontier[i]) > 1: - name = frontier[i].pop(0) - deps = [name] - + # Expand forawrd after doing all back connections out.write(indent) out.write("| " * i) - out.write("|\ ") - out.write("\ " * (len(frontier) - i - 1)) - out.write("\n") + out.write("|\\") + + if (i+1 < len(frontier) and len(frontier[i+1]) == 1 + and frontier[i+1][0] in frontier[i]): + # We need to connect to the element to the right. + # Keep lines straight by connecting directly and + # avoiding immediate expand/contract. + name = frontier[i+1][0] + frontier[i].remove(name) + out.write("| " * (len(frontier) - i - 1)) + out.write("\n") - connect_deps(i, deps, label="expansion") - - # Handle any back edges to the right + else: + # Just allow the expansion here. + name = frontier[i].pop(0) + deps = [name] + out.write(" \\" * (len(frontier) - i - 1)) + out.write("\n") + connect_deps(i, deps, label="expansion") + + # Handle any remaining back edges to the right j = i+1 while j < len(frontier): deps = frontier.pop(j) -- cgit v1.2.3-60-g2f50