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>
This commit is contained in:
parent
7a8955597d
commit
bc662b8764
@ -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)
|
||||
|
@ -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(
|
||||
|
@ -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 @@ def patch(self):
|
||||
"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 @@ def patch(self):
|
||||
"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 @@ def meson_args(self):
|
||||
"-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)
|
||||
|
Loading…
Reference in New Issue
Block a user