parallelio: update package to use mpi-serial, add extra module info (#33153)

This commit is contained in:
Jim Edwards 2022-11-19 03:50:01 -07:00 committed by GitHub
parent 2f057d729d
commit 790bd175e0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -29,14 +29,17 @@ class Parallelio(CMakePackage):
variant(
"fortran", default=True, description="enable fortran interface (requires netcdf fortran)"
)
variant("mpi", default=True, description="Use mpi to build, otherwise use mpi-serial")
depends_on("mpi")
depends_on("netcdf-c +mpi", type="link")
depends_on("mpi", when="+mpi")
depends_on("mpi-serial", when="~mpi")
depends_on("netcdf-c +mpi", type="link", when="+mpi")
depends_on("netcdf-c ~mpi", type="link", when="~mpi")
depends_on("netcdf-fortran", type="link", when="+fortran")
depends_on("parallel-netcdf", type="link", when="+pnetcdf")
# Allow argument mismatch in gfortran versions > 10 for mpi library compatibility
patch("gfortran.patch", when="+fortran %gcc@10:")
patch("gfortran.patch", when="@:2.5.8 +fortran %gcc@10:")
resource(name="genf90", git="https://github.com/PARALLELIO/genf90.git", tag="genf90_200608")
@ -44,9 +47,8 @@ def cmake_args(self):
define = self.define
define_from_variant = self.define_from_variant
spec = self.spec
env["CC"] = spec["mpi"].mpicc
env["FC"] = spec["mpi"].mpifc
src = self.stage.source_path
args = [
define("NetCDF_C_PATH", spec["netcdf-c"].prefix),
define("USER_CMAKE_MODULE_PATH", join_path(src, "cmake")),
@ -66,7 +68,18 @@ def cmake_args(self):
define("NetCDF_Fortran_PATH", spec["netcdf-fortran"].prefix),
]
)
if spec.satisfies("+mpi"):
env["CC"] = spec["mpi"].mpicc
env["FC"] = spec["mpi"].mpifc
else:
env["FFLAGS"] = "-DNO_MPIMOD"
args.extend(
[
define("PIO_USE_MPISERIAL", True),
define("PIO_ENABLE_TESTS", False),
define("MPISERIAL_PATH", spec["mpi-serial"].prefix),
]
)
args.extend(
[
define_from_variant("PIO_ENABLE_TIMING", "timing"),
@ -80,3 +93,12 @@ def url_for_version(self, version):
return "https://github.com/NCAR/ParallelIO/archive/pio{0}.tar.gz".format(
version.underscored
)
def setup_run_environment(self, env):
env.set("PIO_VERSION_MAJOR", "2")
valid_values = "netcdf"
if self.spec.satisfies("+mpi"):
valid_values += ",netcdf4p,netcdf4c"
if self.spec.satisfies("+pnetcdf"):
valid_values += ",pnetcdf"
env.set("PIO_TYPENAME_VALID_VALUES", valid_values)