diff options
author | Paul Kuberry <pakuber@sandia.gov> | 2024-05-16 15:36:11 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-05-16 13:36:11 -0600 |
commit | b894f996c0401b32ca12fcbf5362eee7d0c84652 (patch) | |
tree | ef370bcb6f85ddc7eec6e4d12032999f847a8a77 | |
parent | 1ce09847d9ea15c1c0cc64a293f3011b66f2f520 (diff) | |
download | spack-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.py | 27 |
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 |