summaryrefslogtreecommitdiff
path: root/var
diff options
context:
space:
mode:
authorJim Edwards <jedwards@ucar.edu>2022-11-19 03:50:01 -0700
committerGitHub <noreply@github.com>2022-11-19 03:50:01 -0700
commit790bd175e01466bd88b83b3d275d38654e428e95 (patch)
tree08d629867ed866952024525ebdca42404bd73416 /var
parent2f057d729da61e8c12828df44377f0a93fed820f (diff)
downloadspack-790bd175e01466bd88b83b3d275d38654e428e95.tar.gz
spack-790bd175e01466bd88b83b3d275d38654e428e95.tar.bz2
spack-790bd175e01466bd88b83b3d275d38654e428e95.tar.xz
spack-790bd175e01466bd88b83b3d275d38654e428e95.zip
parallelio: update package to use mpi-serial, add extra module info (#33153)
Diffstat (limited to 'var')
-rw-r--r--var/spack/repos/builtin/packages/parallelio/package.py34
1 files changed, 28 insertions, 6 deletions
diff --git a/var/spack/repos/builtin/packages/parallelio/package.py b/var/spack/repos/builtin/packages/parallelio/package.py
index 91c2e340d5..b479baa73d 100644
--- a/var/spack/repos/builtin/packages/parallelio/package.py
+++ b/var/spack/repos/builtin/packages/parallelio/package.py
@@ -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 @@ class Parallelio(CMakePackage):
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 @@ class Parallelio(CMakePackage):
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 @@ class Parallelio(CMakePackage):
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)