diff options
author | Philipp Edelmann <pedelmann@lanl.gov> | 2024-05-20 19:23:02 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-05-20 19:23:02 -0600 |
commit | 21139945dfca0650229038d2310c10ef6982255f (patch) | |
tree | 1a2808ef40a3f5e962ba4ea1fc3fc01e2abf417c | |
parent | 900bd2f477b618620b2c776b91a2e57d0e4555f7 (diff) | |
download | spack-21139945dfca0650229038d2310c10ef6982255f.tar.gz spack-21139945dfca0650229038d2310c10ef6982255f.tar.bz2 spack-21139945dfca0650229038d2310c10ef6982255f.tar.xz spack-21139945dfca0650229038d2310c10ef6982255f.zip |
rayleigh: new package (#38338)
* rayleigh: new package
* Update var/spack/repos/builtin/packages/rayleigh/package.py
Co-authored-by: Wouter Deconinck <wdconinc@gmail.com>
* split edit into three methods
* add comments to clarify use of configure
* rayleigh: copyright year
---------
Co-authored-by: Wouter Deconinck <wdconinc@gmail.com>
-rw-r--r-- | var/spack/repos/builtin/packages/rayleigh/package.py | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/var/spack/repos/builtin/packages/rayleigh/package.py b/var/spack/repos/builtin/packages/rayleigh/package.py new file mode 100644 index 0000000000..2cc468ce1a --- /dev/null +++ b/var/spack/repos/builtin/packages/rayleigh/package.py @@ -0,0 +1,71 @@ +# Copyright 2013-2024 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) + +import os + +from spack.package import * + + +class Rayleigh(MakefilePackage): + """Rayleigh is a 3-D convection code designed for the study of + dynamo behavior in spherical geometry.""" + + homepage = "https://github.com/geodynamics/Rayleigh" + url = "https://github.com/geodynamics/Rayleigh/archive/refs/tags/v1.0.1.tar.gz" + git = "https://github.com/geodynamics/Rayleigh.git" + + maintainers("tukss") + + version("main", branch="main") + version("1.1.0", sha256="93fbbdbde6088807638e4dcbd4d622203fd4753c1831bab2cb8eaeca5cba45c3") + version("1.0.1", sha256="9c9e3b0b180f32a889f158e2ea2967f4ac2bb2124f5d264f230efb8c8f19ea36") + version("1.0.0", sha256="4f2e8249256adff8c4b0bc377ceacf8a6441dcee54b7d36c784f05a454dc6dcf") + version("0.9.1", sha256="ab96445fc61822fe2d2cba8729a85b36de6b541febf5759de6d614847844573f") + version("0.9.0", sha256="63a80d1619cb639f3cb01ab82a441b77d736eee94469c47c50ab740fa81c08f4") + + depends_on("mpi") + depends_on("fftw-api@3") + depends_on("lapack") + + def setup_build_environment(self, env): + spec = self.spec + if spec.satisfies("^cray-mpich"): + # The Cray wrapper takes care of linking MPI correctly for all compilers. + env.set("FC", "ftn") + else: + env.set("FC", spec["mpi"].mpifc) + + def edit(self, spec, prefix): + # Note that Rayleigh's configure script is a handcrafted file that is not generated + # by autotools. This is why we use MakefilePackage and call it manually. + # We pass in /dev/null as input to prevent interactive questions in configure. + configure("--prefix={}".format(prefix), *self.configure_args(), **{"input": os.devnull}) + + def configure_args(self): + spec = self.spec + args = [] + if spec.satisfies("^mkl"): + args.append("--with-mkl={}".format(spec["mkl"].prefix)) + else: + if not spec.satisfies("^cray-fftw"): + args.append("--with-fftw={}".format(spec["fftw"].prefix)) + + if spec.satisfies("^openblas"): + args.append("--openblas") + elif not spec.satisfies("^cray-libsci"): + args.append("--with-lapack={}".format(spec["lapack"].prefix)) + args.append("--with-blas={}".format(spec["blas"].prefix)) + else: + # Cray options are handled through modules and the compiler wrapper. + args.append("--LIBFLAGS=") + args.append("--INCLUDE=") + + args.append("--FFLAGS_DBG=-O0 -g") + args.append( + "--FFLAGS_OPT=-O3 {}".format( + spec.target.optimization_flags(spec.compiler.name, str(spec.compiler.version)) + ) + ) + return args |