summaryrefslogtreecommitdiff
path: root/var/spack
diff options
context:
space:
mode:
authorMassimiliano Culpo <massimiliano.culpo@gmail.com>2023-03-08 13:00:53 +0100
committerGitHub <noreply@github.com>2023-03-08 13:00:53 +0100
commitd54611af2c56a04ed0990055d357b30b54b30a5d (patch)
tree3694b3d7f9a7406a90f2030e17aa3c390682af64 /var/spack
parent39adb65dc7f377662a2bbb3b4377b4627cf64d31 (diff)
downloadspack-d54611af2c56a04ed0990055d357b30b54b30a5d.tar.gz
spack-d54611af2c56a04ed0990055d357b30b54b30a5d.tar.bz2
spack-d54611af2c56a04ed0990055d357b30b54b30a5d.tar.xz
spack-d54611af2c56a04ed0990055d357b30b54b30a5d.zip
Split `satisfies(..., strict=True/False)` into two functions (#35681)
This commit formalizes `satisfies(lhs, rhs, strict=True/False)` and splits it into two functions: `satisfies(lhs, rhs)` and `intersects(lhs, rhs)`. - `satisfies(lhs, rhs)` means: all concrete specs matching the left hand side also match the right hand side - `intersects(lhs, rhs)` means: there exist concrete specs matching both lhs and rhs. `intersects` now has the property that it's commutative, which previously was not guaranteed. For abstract specs, `intersects(lhs, rhs)` implies that `constrain(lhs, rhs)` works. What's *not* done in this PR is ensuring that `intersects(concrete, abstract)` returns false when the abstract spec has additional properties not present in the concrete spec, but `constrain(concrete, abstract)` will raise an error. To accomplish this, some semantics have changed, as well as bugfixes to ArchSpec: - GitVersion is now interpreted as a more constrained version - Compiler flags are interpreted as strings since their order is important - Abstract specs respect variant type (bool / multivalued)
Diffstat (limited to 'var/spack')
-rw-r--r--var/spack/repos/builtin.mock/packages/v1-consumer/package.py18
-rw-r--r--var/spack/repos/builtin/packages/gcc/package.py2
-rw-r--r--var/spack/repos/builtin/packages/intel-tbb/package.py4
-rw-r--r--var/spack/repos/builtin/packages/macsio/package.py2
-rw-r--r--var/spack/repos/builtin/packages/openmpi/package.py2
-rw-r--r--var/spack/repos/builtin/packages/python/package.py4
6 files changed, 25 insertions, 7 deletions
diff --git a/var/spack/repos/builtin.mock/packages/v1-consumer/package.py b/var/spack/repos/builtin.mock/packages/v1-consumer/package.py
new file mode 100644
index 0000000000..230ede4871
--- /dev/null
+++ b/var/spack/repos/builtin.mock/packages/v1-consumer/package.py
@@ -0,0 +1,18 @@
+# Copyright 2013-2023 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 V1Consumer(Package):
+ """Mimic the real netlib-lapack, that may be built on top of an
+ optimized blas.
+ """
+
+ homepage = "https://dev.null"
+
+ version("1.0")
+
+ depends_on("v2")
+ depends_on("v1")
diff --git a/var/spack/repos/builtin/packages/gcc/package.py b/var/spack/repos/builtin/packages/gcc/package.py
index ad77652ddb..516c8df9da 100644
--- a/var/spack/repos/builtin/packages/gcc/package.py
+++ b/var/spack/repos/builtin/packages/gcc/package.py
@@ -575,7 +575,7 @@ class Gcc(AutotoolsPackage, GNUMirrorPackage):
"languages=d": "d",
"languages=fortran": "fortran",
}.items():
- if spec.satisfies(constraint, strict=True):
+ if spec.satisfies(constraint):
msg = "{0} not in {1}"
assert key in compilers, msg.format(key, spec)
diff --git a/var/spack/repos/builtin/packages/intel-tbb/package.py b/var/spack/repos/builtin/packages/intel-tbb/package.py
index 399c2569ba..1df6522993 100644
--- a/var/spack/repos/builtin/packages/intel-tbb/package.py
+++ b/var/spack/repos/builtin/packages/intel-tbb/package.py
@@ -200,7 +200,7 @@ class CMakeBuilder(spack.build_systems.cmake.CMakeBuilder, SetupEnvironment):
# pkg-config generation is introduced in May 5, 2021.
# It must not be overwritten by spack-generated tbb.pc.
# https://github.com/oneapi-src/oneTBB/commit/478de5b1887c928e52f029d706af6ea640a877be
- if self.spec.satisfies("@:2021.2.0", strict=True):
+ if self.spec.satisfies("@:2021.2.0"):
mkdirp(self.prefix.lib.pkgconfig)
with open(join_path(self.prefix.lib.pkgconfig, "tbb.pc"), "w") as f:
@@ -296,7 +296,7 @@ class MakefileBuilder(spack.build_systems.makefile.MakefileBuilder, SetupEnviron
# install debug libs if they exist
install(join_path("build", "*debug", lib_name + "_debug.*"), prefix.lib)
- if spec.satisfies("@2017.8,2018.1:", strict=True):
+ if spec.satisfies("@2017.8,2018.1:"):
# Generate and install the CMake Config file.
cmake_args = (
"-DTBB_ROOT={0}".format(prefix),
diff --git a/var/spack/repos/builtin/packages/macsio/package.py b/var/spack/repos/builtin/packages/macsio/package.py
index e2e91b90c9..188e817b1c 100644
--- a/var/spack/repos/builtin/packages/macsio/package.py
+++ b/var/spack/repos/builtin/packages/macsio/package.py
@@ -21,7 +21,7 @@ class Macsio(CMakePackage):
version("1.0", sha256="1dd0df28f9f31510329d5874c1519c745b5c6bec12e102cea3e9f4b05e5d3072")
variant("mpi", default=True, description="Build MPI plugin")
- variant("silo", default=True, description="Build with SILO plugin")
+ variant("silo", default=False, description="Build with SILO plugin")
# TODO: multi-level variants for hdf5
variant("hdf5", default=False, description="Build HDF5 plugin")
variant("zfp", default=False, description="Build HDF5 with ZFP compression")
diff --git a/var/spack/repos/builtin/packages/openmpi/package.py b/var/spack/repos/builtin/packages/openmpi/package.py
index f2d4640742..43936b6ff2 100644
--- a/var/spack/repos/builtin/packages/openmpi/package.py
+++ b/var/spack/repos/builtin/packages/openmpi/package.py
@@ -954,7 +954,7 @@ class Openmpi(AutotoolsPackage, CudaPackage):
config_args.extend(self.with_or_without("schedulers"))
config_args.extend(self.enable_or_disable("memchecker"))
- if spec.satisfies("+memchecker", strict=True):
+ if spec.satisfies("+memchecker"):
config_args.extend(["--enable-debug"])
# Package dependencies
diff --git a/var/spack/repos/builtin/packages/python/package.py b/var/spack/repos/builtin/packages/python/package.py
index 747c5cd6e6..d4f74ec9a2 100644
--- a/var/spack/repos/builtin/packages/python/package.py
+++ b/var/spack/repos/builtin/packages/python/package.py
@@ -352,7 +352,7 @@ class Python(Package):
# Fix for following issues for python with aocc%3.2.0:
# https://github.com/spack/spack/issues/29115
# https://github.com/spack/spack/pull/28708
- if self.spec.satisfies("%aocc@3.2.0", strict=True):
+ if self.spec.satisfies("%aocc@3.2.0"):
if name == "cflags":
flags.extend(["-mllvm", "-disable-indvar-simplify=true"])
@@ -473,7 +473,7 @@ class Python(Package):
config_args.append("--with-lto")
config_args.append("--with-computed-gotos")
- if spec.satisfies("@3.7 %intel", strict=True):
+ if spec.satisfies("@3.7 %intel"):
config_args.append("--with-icc={0}".format(spack_cc))
if "+debug" in spec: