summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Kuberry <pakuber@sandia.gov>2024-05-16 15:36:11 -0400
committerGitHub <noreply@github.com>2024-05-16 13:36:11 -0600
commitb894f996c0401b32ca12fcbf5362eee7d0c84652 (patch)
treeef370bcb6f85ddc7eec6e4d12032999f847a8a77
parent1ce09847d9ea15c1c0cc64a293f3011b66f2f520 (diff)
downloadspack-b894f996c0401b32ca12fcbf5362eee7d0c84652.tar.gz
spack-b894f996c0401b32ca12fcbf5362eee7d0c84652.tar.bz2
spack-b894f996c0401b32ca12fcbf5362eee7d0c84652.tar.xz
spack-b894f996c0401b32ca12fcbf5362eee7d0c84652.zip
trilinos: catch kokkos inconsistency with trilinos (#44209)
* trilinos: catch kokkos inconsistency with trilinos * trilinos: update kokkos version range
-rw-r--r--var/spack/repos/builtin/packages/trilinos/package.py27
1 files changed, 26 insertions, 1 deletions
diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py
index acdacddc6d..ee5bc5dcb7 100644
--- a/var/spack/repos/builtin/packages/trilinos/package.py
+++ b/var/spack/repos/builtin/packages/trilinos/package.py
@@ -5,6 +5,7 @@
import os
import pathlib
+import re
import sys
from spack.build_environment import dso_suffix
@@ -400,7 +401,7 @@ class Trilinos(CMakePackage, CudaPackage, ROCmPackage):
# ###################### Dependencies ##########################
# External Kokkos
- depends_on("kokkos@4.3.00", when="@master: +kokkos")
+ depends_on("kokkos@4.3.01", when="@master: +kokkos")
depends_on("kokkos@4.2.01", when="@15.1.0:15.1.1 +kokkos")
depends_on("kokkos@4.1.00", when="@14.4.0:15.0.0 +kokkos")
@@ -605,6 +606,30 @@ class Trilinos(CMakePackage, CudaPackage, ROCmPackage):
define = self.define
define_from_variant = self.define_from_variant
+ if self.spec.satisfies("@master: +kokkos"):
+ with open(
+ os.path.join(self.stage.source_path, "packages", "kokkos", "CMakeLists.txt")
+ ) as f:
+ all_txt = f.read()
+ r = dict(
+ re.findall(r".*set\s?\(\s?Kokkos_VERSION_(MAJOR|MINOR|PATCH)\s?(\d+)", all_txt)
+ )
+ kokkos_version_in_trilinos_source = Version(
+ ".".join([r["MAJOR"], r["MINOR"], r["PATCH"].zfill(2)])
+ )
+ kokkos_version_specified = spec["kokkos"].version
+ if kokkos_version_in_trilinos_source != kokkos_version_specified:
+ raise InstallError(
+ "For Trilinos@[master,develop], ^kokkos version in spec must "
+ "match version in Trilinos source code. Specify ^kokkos@{0} ".format(
+ kokkos_version_in_trilinos_source
+ )
+ + "for trilinos@[master,develop] instead of ^kokkos@{0}.\n".format(
+ kokkos_version_specified
+ )
+ + "Trilinos recipe maintainers, please update the ^kokkos version range"
+ )
+
def _make_definer(prefix):
def define_enable(suffix, value=None):
key = prefix + suffix