summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorHarmen Stoppels <harmenstoppels@gmail.com>2023-01-02 19:04:55 +0100
committerGitHub <noreply@github.com>2023-01-02 19:04:55 +0100
commit2e8d165120fe74f84331ed1636f44fdd58b867d8 (patch)
treeef214d1619360c9af8501dc0d66b71a75d500250 /lib
parent6984ee291a79bcd57226ea84b1453b108c463072 (diff)
downloadspack-2e8d165120fe74f84331ed1636f44fdd58b867d8.tar.gz
spack-2e8d165120fe74f84331ed1636f44fdd58b867d8.tar.bz2
spack-2e8d165120fe74f84331ed1636f44fdd58b867d8.tar.xz
spack-2e8d165120fe74f84331ed1636f44fdd58b867d8.zip
environment view use new traversal (#34662)
Diffstat (limited to 'lib')
-rw-r--r--lib/spack/spack/environment/environment.py22
1 files changed, 11 insertions, 11 deletions
diff --git a/lib/spack/spack/environment/environment.py b/lib/spack/spack/environment/environment.py
index ea5728ad3c..4ef9e13dfa 100644
--- a/lib/spack/spack/environment/environment.py
+++ b/lib/spack/spack/environment/environment.py
@@ -532,18 +532,18 @@ class ViewDescriptor(object):
From the list of concretized user specs in the environment, flatten
the dags, and filter selected, installed specs, remove duplicates on dag hash.
"""
- specs = []
+ dag_hash = lambda spec: spec.dag_hash()
- for s in concretized_root_specs:
- if self.link == "all":
- specs.extend(s.traverse(deptype=("link", "run")))
- elif self.link == "run":
- specs.extend(s.traverse(deptype=("run")))
- else:
- specs.append(s)
-
- # De-dupe by dag hash
- specs = dedupe(specs, key=lambda s: s.dag_hash())
+ # With deps, requires traversal
+ if self.link == "all" or self.link == "run":
+ deptype = ("run") if self.link == "run" else ("link", "run")
+ specs = list(
+ spack.traverse.traverse_nodes(
+ concretized_root_specs, deptype=deptype, key=dag_hash
+ )
+ )
+ else:
+ specs = list(dedupe(concretized_root_specs, key=dag_hash))
# Filter selected, installed specs
with spack.store.db.read_transaction():