diff options
author | Todd Gamblin <tgamblin@llnl.gov> | 2024-11-13 23:20:03 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-11-13 23:20:03 -0800 |
commit | d091172d67f94ee8e7b99c0d3b95dacb0d200e03 (patch) | |
tree | 5dd16ec6eb347e226c9f5ee5a3a6cffc367db47f /var | |
parent | ab513690873b6a242e992dc48aa3fc95acf68f89 (diff) | |
download | spack-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.py | 22 |
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)) |