trilinos: catch kokkos inconsistency with trilinos (#44209)

* trilinos: catch kokkos inconsistency with trilinos

* trilinos: update kokkos version range
This commit is contained in:
Paul Kuberry 2024-05-16 15:36:11 -04:00 committed by GitHub
parent 1ce09847d9
commit b894f996c0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -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 @@ def cmake_args(self):
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