trilinos: catch kokkos inconsistency with trilinos (#44209)
* trilinos: catch kokkos inconsistency with trilinos * trilinos: update kokkos version range
This commit is contained in:
parent
1ce09847d9
commit
b894f996c0
@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
import pathlib
|
import pathlib
|
||||||
|
import re
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
from spack.build_environment import dso_suffix
|
from spack.build_environment import dso_suffix
|
||||||
@ -400,7 +401,7 @@ class Trilinos(CMakePackage, CudaPackage, ROCmPackage):
|
|||||||
# ###################### Dependencies ##########################
|
# ###################### Dependencies ##########################
|
||||||
|
|
||||||
# External Kokkos
|
# 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.2.01", when="@15.1.0:15.1.1 +kokkos")
|
||||||
depends_on("kokkos@4.1.00", when="@14.4.0:15.0.0 +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 = self.define
|
||||||
define_from_variant = self.define_from_variant
|
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 _make_definer(prefix):
|
||||||
def define_enable(suffix, value=None):
|
def define_enable(suffix, value=None):
|
||||||
key = prefix + suffix
|
key = prefix + suffix
|
||||||
|
Loading…
Reference in New Issue
Block a user