summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkjrstory <kjrstory@gmail.com>2024-10-10 23:19:05 +0900
committerGitHub <noreply@github.com>2024-10-10 08:19:05 -0600
commitbc662b876429e52b6574b600717dc11e738861cc (patch)
treea59d1e92ed7e98d8888f4a7cd964bb99558beae9
parent7a8955597db3a5532af589373202187f31a51a59 (diff)
downloadspack-bc662b876429e52b6574b600717dc11e738861cc.tar.gz
spack-bc662b876429e52b6574b600717dc11e738861cc.tar.bz2
spack-bc662b876429e52b6574b600717dc11e738861cc.tar.xz
spack-bc662b876429e52b6574b600717dc11e738861cc.zip
su2 fixes and improvements: AD, scipy/numpy, and Mutationpp setup, environment variable (#46774)
* su2 fixes and improvements: AD, scipy/numpy, and Mutationpp setup, environment variable * su2: Conflict %gcc@13: when @:7, mpp was added with @7.1.0 * py-scipy: SciPy 1.14: requires GCC >= 9.1 --------- Co-authored-by: Bernhard Kaindl <bernhardkaindl7@gmail.com>
-rw-r--r--var/spack/repos/builtin/packages/medipack/package.py10
-rw-r--r--var/spack/repos/builtin/packages/py-scipy/package.py3
-rw-r--r--var/spack/repos/builtin/packages/su2/package.py67
3 files changed, 56 insertions, 24 deletions
diff --git a/var/spack/repos/builtin/packages/medipack/package.py b/var/spack/repos/builtin/packages/medipack/package.py
index 02c046215b..ec07e792fb 100644
--- a/var/spack/repos/builtin/packages/medipack/package.py
+++ b/var/spack/repos/builtin/packages/medipack/package.py
@@ -13,12 +13,14 @@ class Medipack(CMakePackage):
homepage = "https://github.com/SciCompKL/MeDiPack"
url = "https://github.com/SciCompKL/MeDiPack/archive/refs/tags/v1.2.2.tar.gz"
+ version("1.3.0", sha256="81daf8391ca00286a1276408badc7f1c9f76af889eb16940601c0ffb5f229e1d")
version("1.2.2", sha256="8937fa1025c6fb12f516cacf38a7f776221e7e818b30f17ce334c63f78513aa7")
version("1.2.1", sha256="c746196b98cfe24a212584cdb88bd12ebb14f4a54728070d605e0c6d0e75db8a")
depends_on("cxx", type="build") # generated
depends_on("cmake@3.12:", type="build", when="@1.2.2:")
+ depends_on("mpi")
build_system(
conditional("cmake", when="@1.2.2:"),
@@ -27,7 +29,7 @@ class Medipack(CMakePackage):
)
def install(self, spec, prefix):
- mkdirp(join_path(prefix, "include"))
- install_tree(join_path(self.stage.source_path, "include"), join_path(prefix, "include"))
- mkdirp(join_path(prefix, "src"))
- install_tree(join_path(self.stage.source_path, "src"), join_path(prefix, "src"))
+ mkdirp(self.prefix.include)
+ install_tree(join_path(self.stage.source_path, "include"), self.prefix.include)
+ mkdirp(self.prefix.src)
+ install_tree(join_path(self.stage.source_path, "src"), self.prefix.src)
diff --git a/var/spack/repos/builtin/packages/py-scipy/package.py b/var/spack/repos/builtin/packages/py-scipy/package.py
index 2d81ea8a63..11161d997f 100644
--- a/var/spack/repos/builtin/packages/py-scipy/package.py
+++ b/var/spack/repos/builtin/packages/py-scipy/package.py
@@ -136,7 +136,8 @@ class PyScipy(PythonPackage):
# meson.build
# https://docs.scipy.org/doc/scipy/dev/toolchain.html#compilers
- conflicts("%gcc@:7", when="@1.10:", msg="SciPy requires GCC >= 8.0")
+ conflicts("%gcc@:7", when="@1.10:", msg="SciPy 1.10-1.13 requires GCC >= 8.0")
+ conflicts("%gcc@:9.0", when="@1.14:", msg="SciPy 1.14: requires GCC >= 9.1")
conflicts("%gcc@:4.7", when="@:1.9", msg="SciPy requires GCC >= 4.8")
conflicts("%apple-clang@:9", when="@1.10:", msg="SciPy requires Apple Clang >= 10")
conflicts(
diff --git a/var/spack/repos/builtin/packages/su2/package.py b/var/spack/repos/builtin/packages/su2/package.py
index 5ec32895a4..4b0d056ae7 100644
--- a/var/spack/repos/builtin/packages/su2/package.py
+++ b/var/spack/repos/builtin/packages/su2/package.py
@@ -38,6 +38,9 @@ class Su2(MesonPackage):
version("7.0.0", sha256="6207dcca15eaebc11ce12b2866c937b4ad9b93274edf6f23d0487948ac3963b8")
version("6.2.0", sha256="ffc953326e8432a1a6534556a5f6cf086046d3149cfcec6b4e7390eebe30ce2e")
+ # @:7 is missing few <cstdint> includes, causing a few files to fail with %gcc@13:
+ conflicts("%gcc@13:", when="@:7")
+
depends_on("c", type="build") # generated
depends_on("cxx", type="build") # generated
depends_on("fortran", type="build") # generated
@@ -60,6 +63,8 @@ class Su2(MesonPackage):
depends_on("meson@0.61.1:", type=("build"))
depends_on("python@3:", type=("build", "run"))
+ depends_on("py-numpy", type="run")
+ depends_on("py-scipy", type="run")
depends_on("zlib-api")
depends_on("pkgconfig")
depends_on("mpi", when="+mpi")
@@ -69,14 +74,12 @@ class Su2(MesonPackage):
depends_on("openblas", when="+openblas ~mkl")
depends_on("cmake", type="build", when="+mpp")
- depends_on("codipack@:1.9.3", when="+autodiff")
- depends_on("codipack@:1.9.3", when="+directdiff")
- depends_on("medipack", when="+autodiff +mpi")
- depends_on("medipack", when="+directdiff +mpi")
+ for diff_type in ("+autodiff", "+directdiff"):
+ with when(diff_type):
+ depends_on("codipack@1.9.3", when="@:7.5.1")
+ depends_on("codipack@2.2.0:", when="@8.0.0:")
+ depends_on("medipack", when="+mpi")
depends_on("opdilib", when="+autodiff +openmp")
- depends_on("opdilib", when="+directdiff +openmp")
- depends_on("codipack@openmp", when="+autodiff +openmp")
- depends_on("codipack@openmp", when="+directdiff +openmp")
# Remove the part that fixes the meson version to 0.61.1.
# This fix is considered meaningless and will be removed in the next version(@7.6:) of SU2.
@@ -93,17 +96,13 @@ class Su2(MesonPackage):
"meson.build",
)
- if (
- self.spec.satisfies("+autodiff") or self.spec.satisfies("+directdiff")
- ) and self.spec.satisfiles("+mpi"):
- filter_file(
- "externals/medi/include", self.spec["medipack"].prefix.include, "meson.build"
- )
- filter_file("externals/medi/src", self.spec["medipack"].prefix.src, "meson.build")
+ if self.spec.satisfies("+mpi"):
+ filter_file(
+ "externals/medi/include", self.spec["medipack"].prefix.include, "meson.build"
+ )
+ filter_file("externals/medi/src", self.spec["medipack"].prefix.src, "meson.build")
- if (
- self.spec.satisfies("+autodiff") or self.spec.satisfies("+directdiff")
- ) and self.spec.satisfies("+openmp"):
+ if self.spec.satisfies("+autodiff") and self.spec.satisfies("+openmp"):
filter_file(
"externals/opdi/include", self.spec["opdilib"].prefix.include, "meson.build"
)
@@ -113,6 +112,13 @@ class Su2(MesonPackage):
"meson.build",
)
+ if self.spec.satisfies("+mpp") and self.spec.satisfies("@8.0:"):
+ filter_file(
+ r"join_paths\(meson\.project_source_root\(\), 'ninja'\)",
+ f"join_paths('{self.spec['ninja'].prefix.bin}', 'ninja')",
+ "meson.build",
+ )
+
def meson_args(self):
args = [
"-Dwith-omp={}".format("+openmp" in self.spec),
@@ -123,16 +129,39 @@ class Su2(MesonPackage):
"-Denable-pywrapper={}".format("+pywrapper" in self.spec),
"-Denable-mkl={}".format("+mkl" in self.spec),
"-Denable-openblas={}".format("+openblas" in self.spec),
- "-Denable-mpp={}".format("+mpp" in self.spec),
"-Denable-mixedprec={}".format("+midexprec" in self.spec),
]
+ if self.spec.version >= Version("7.1.0"):
+ args.append("-Denable-mpp={}".format("+mpp" in self.spec))
if "+mkl" in self.spec:
args.append("-Dmkl_root=" + self.spec["intel-oneapi-mkl"].prefix)
if "+mpi" in self.spec:
- args.append("-Dwith-mpi=enabled")
+ args.append("-Dwith-mpi=auto")
else:
args.append("-Dwith-mpi=disabled")
return args
+
+ @run_after("install")
+ def install_mpp(self):
+ if "+mpp" in self.spec:
+ mkdirp(join_path(self.prefix, "mpp-data"))
+ mkdirp(join_path(self.prefix, "lib"))
+ install_tree(
+ join_path(self.stage.source_path, "subprojects", "Mutationpp", "data"),
+ join_path(self.prefix, "mpp-data"),
+ )
+ install_tree(
+ join_path(self.build_directory, "subprojects", "Mutationpp"), self.prefix.lib
+ )
+
+ def setup_run_environment(self, env):
+ env.set("su2_run", self.prefix.bin)
+ env.set("su2_home", self.prefix)
+ env.prepend_path("path", self.prefix.bin)
+ env.prepend_path("pythonpath", self.prefix.bin)
+ if "+mpp" in self.spec:
+ env.set("mpp_data_directory", join_path(self.prefix, "mpp-data"))
+ env.prepend_path("ld_library_path", self.prefix.lib)