diff --git a/lib/spack/spack/build_environment.py b/lib/spack/spack/build_environment.py index 9908ad9834d..d38617628bd 100644 --- a/lib/spack/spack/build_environment.py +++ b/lib/spack/spack/build_environment.py @@ -923,7 +923,9 @@ def effective_deptypes( in reverse so that dependents override dependencies, not the other way around.""" topo_sorted_edges = traverse.traverse_topo_edges_generator( traverse.with_artificial_edges(specs), - visitor=EnvironmentVisitor(*specs, context=context), + visitor=traverse.CoverEdgesVisitor( + EnvironmentVisitor(*specs, context=context), key=traverse.by_dag_hash + ), key=traverse.by_dag_hash, root=True, all_edges=True, diff --git a/lib/spack/spack/traverse.py b/lib/spack/spack/traverse.py index e143a214543..d9f76072025 100644 --- a/lib/spack/spack/traverse.py +++ b/lib/spack/spack/traverse.py @@ -381,7 +381,7 @@ def traverse_topo_edges_generator(edges, visitor, key=id, root=True, all_edges=F Arguments: edges (list): List of EdgeAndDepth instances - visitor: visitor instance that defines the sub-DAG to traverse + visitor: visitor that produces unique edges defining the (sub)DAG of interest. key: function that takes a spec and outputs a key for uniqueness test. root (bool): Yield the root nodes themselves all_edges (bool): When ``False`` only one in-edge per node is returned, when