diff options
author | kjrstory <kjrstory@gmail.com> | 2024-10-10 23:19:05 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-10-10 08:19:05 -0600 |
commit | bc662b876429e52b6574b600717dc11e738861cc (patch) | |
tree | a59d1e92ed7e98d8888f4a7cd964bb99558beae9 | |
parent | 7a8955597db3a5532af589373202187f31a51a59 (diff) | |
download | spack-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.py | 10 | ||||
-rw-r--r-- | var/spack/repos/builtin/packages/py-scipy/package.py | 3 | ||||
-rw-r--r-- | var/spack/repos/builtin/packages/su2/package.py | 67 |
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) |