From 0fdc3bf4202d3c7e953a2dba74009460fb6761d1 Mon Sep 17 00:00:00 2001 From: Todd Gamblin Date: Mon, 16 May 2022 02:36:41 -0700 Subject: bugfix: use deterministic edge order for `spack graph` (#30681) Previously we sorted by hash values for `spack graph`, but changing hashes can make the test brittle and the node order seem nondeterministic to users. - [x] Sort nodes in `spack graph` by the default edge order, which takes into account parent and child names as well as dependency types. - [x] Update ASCII test output for new order. --- lib/spack/spack/graph.py | 8 +++++--- lib/spack/spack/test/graph.py | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) (limited to 'lib') diff --git a/lib/spack/spack/graph.py b/lib/spack/spack/graph.py index 502e5534eb..d1e95c6f52 100644 --- a/lib/spack/spack/graph.py +++ b/lib/spack/spack/graph.py @@ -493,9 +493,11 @@ class AsciiGraph(object): # Replace node with its dependencies self._frontier.pop(i) - deps = node.dependencies(deptype=self.deptype) - if deps: - deps = sorted((d.dag_hash() for d in deps), reverse=True) + edges = sorted( + node.edges_to_dependencies(deptype=self.deptype), reverse=True + ) + if edges: + deps = [e.spec.dag_hash() for e in edges] self._connect_deps(i, deps, "new-deps") # anywhere. elif self._frontier: diff --git a/lib/spack/spack/test/graph.py b/lib/spack/spack/test/graph.py index 185f1375a2..f3a7db1ea0 100644 --- a/lib/spack/spack/test/graph.py +++ b/lib/spack/spack/test/graph.py @@ -104,7 +104,7 @@ o | mpich / o dyninst |\ -o | libdwarf +| o libdwarf |/ o libelf ''' -- cgit v1.2.3-60-g2f50