summaryrefslogtreecommitdiff
path: root/var
diff options
context:
space:
mode:
authorTodd Gamblin <tgamblin@llnl.gov>2024-11-13 23:20:03 -0800
committerGitHub <noreply@github.com>2024-11-13 23:20:03 -0800
commitd091172d67f94ee8e7b99c0d3b95dacb0d200e03 (patch)
tree5dd16ec6eb347e226c9f5ee5a3a6cffc367db47f /var
parentab513690873b6a242e992dc48aa3fc95acf68f89 (diff)
downloadspack-d091172d67f94ee8e7b99c0d3b95dacb0d200e03.tar.gz
spack-d091172d67f94ee8e7b99c0d3b95dacb0d200e03.tar.bz2
spack-d091172d67f94ee8e7b99c0d3b95dacb0d200e03.tar.xz
spack-d091172d67f94ee8e7b99c0d3b95dacb0d200e03.zip
Spec: prefer a splice-specific method to `__len__` (#47585)
Automatic splicing say `Spec` grow a `__len__` method but it's only used in one place and it's not clear the semantics are useful elsewhere. It also runs the risk of Specs one day being confused for other types of containers. Rather than introduce a new function for one algorithm, let's use a more specific method in the splice code. - [x] Use topological ordering in `_resolve_automatic_splices` instead of sorting by node count - [x] delete `Spec.__len__()` and `Spec.__bool__()` --------- Signed-off-by: Todd Gamblin <tgamblin@llnl.gov> Co-authored-by: Greg Becker <becker33@llnl.gov> Co-authored-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
Diffstat (limited to 'var')
-rw-r--r--var/spack/repos/builtin.mock/packages/splice-depends-on-t/package.py22
1 files changed, 22 insertions, 0 deletions
diff --git a/var/spack/repos/builtin.mock/packages/splice-depends-on-t/package.py b/var/spack/repos/builtin.mock/packages/splice-depends-on-t/package.py
new file mode 100644
index 0000000000..9f38da0daa
--- /dev/null
+++ b/var/spack/repos/builtin.mock/packages/splice-depends-on-t/package.py
@@ -0,0 +1,22 @@
+# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other
+# Spack Project Developers. See the top-level COPYRIGHT file for details.
+#
+# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+
+from spack.package import *
+
+
+class SpliceDependsOnT(Package):
+ """Package that depends on splice-t"""
+
+ homepage = "http://www.example.com"
+ url = "http://www.example.com/splice-depends-on-t-1.0.tar.gz"
+
+ version("1.0", md5="0123456789abcdef0123456789abcdef")
+
+ depends_on("splice-t")
+
+ def install(self, spec, prefix):
+ with open(prefix.join("splice-depends-on-t"), "w") as f:
+ f.write("splice-depends-on-t: {0}".format(prefix))
+ f.write("splice-t: {0}".format(spec["splice-t"].prefix))