summaryrefslogtreecommitdiff
path: root/var
diff options
context:
space:
mode:
authorSergey Kosukhin <sergey.kosukhin@mpimet.mpg.de>2020-08-22 23:06:17 +0200
committerGitHub <noreply@github.com>2020-08-22 16:06:17 -0500
commit9fdb945383471eaaceb98652837ba1a314477d36 (patch)
tree20f5c03b884f16f7c8a661c560922dac6fe3d58c /var
parentdc5176fbae424fbec701e4a30dd3f1d13fc27e3e (diff)
downloadspack-9fdb945383471eaaceb98652837ba1a314477d36.tar.gz
spack-9fdb945383471eaaceb98652837ba1a314477d36.tar.bz2
spack-9fdb945383471eaaceb98652837ba1a314477d36.tar.xz
spack-9fdb945383471eaaceb98652837ba1a314477d36.zip
NetCDF: fix constraints. (#16719)
Diffstat (limited to 'var')
-rw-r--r--var/spack/repos/builtin/packages/netcdf-c/package.py19
-rw-r--r--var/spack/repos/builtin/packages/netcdf-fortran/package.py40
2 files changed, 19 insertions, 40 deletions
diff --git a/var/spack/repos/builtin/packages/netcdf-c/package.py b/var/spack/repos/builtin/packages/netcdf-c/package.py
index 6d149926bc..610143491b 100644
--- a/var/spack/repos/builtin/packages/netcdf-c/package.py
+++ b/var/spack/repos/builtin/packages/netcdf-c/package.py
@@ -97,26 +97,15 @@ class NetcdfC(AutotoolsPackage):
# High-level API of HDF5 1.8.9 or later is required for netCDF-4 support:
# http://www.unidata.ucar.edu/software/netcdf/docs/getting_and_building_netcdf.html
- depends_on('hdf5@1.8.9:+hl~mpi', when='~mpi')
- depends_on('hdf5@1.8.9:+hl+mpi', when='+mpi')
+ depends_on('hdf5@1.8.9:+hl')
# Starting version 4.4.0, it became possible to disable parallel I/O even
# if HDF5 supports it. For previous versions of the library we need
- # HDF5 without mpi support to disable parallel I/O.
- # The following doesn't work if hdf5+mpi by default and netcdf-c~mpi is
- # specified in packages.yaml
- # depends_on('hdf5~mpi', when='@:4.3~mpi')
- # Thus, we have to introduce a conflict
- conflicts('~mpi', when='@:4.3^hdf5+mpi',
- msg='netcdf-c@:4.3~mpi requires hdf5~mpi')
+ # HDF5 without mpi support to disable parallel I/O:
+ depends_on('hdf5~mpi', when='@:4.3~mpi')
# We need HDF5 with mpi support to enable parallel I/O.
- # The following doesn't work if hdf5~mpi by default and netcdf-c+mpi is
- # specified in packages.yaml
- # depends_on('hdf5+mpi', when='+mpi')
- # Thus, we have to introduce a conflict
- conflicts('+mpi', when='^hdf5~mpi',
- msg='netcdf-c+mpi requires hdf5+mpi')
+ depends_on('hdf5+mpi', when='+mpi')
# NetCDF 4.4.0 and prior have compatibility issues with HDF5 1.10 and later
# https://github.com/Unidata/netcdf-c/issues/250
diff --git a/var/spack/repos/builtin/packages/netcdf-fortran/package.py b/var/spack/repos/builtin/packages/netcdf-fortran/package.py
index 74347136dd..d04dd73ca0 100644
--- a/var/spack/repos/builtin/packages/netcdf-fortran/package.py
+++ b/var/spack/repos/builtin/packages/netcdf-fortran/package.py
@@ -22,19 +22,12 @@ class NetcdfFortran(AutotoolsPackage):
version('4.4.4', sha256='b2d395175f8d283e68c8be516e231a96b191ade67ad0caafaf7fa01b1e6b5d75')
version('4.4.3', sha256='330373aa163d5931e475b5e83da5c1ad041e855185f24e6a8b85d73b48d6cda9')
- variant('mpi', default=True,
- description='Enable parallel I/O for netcdf-4')
variant('pic', default=True,
description='Produce position-independent code (for shared libs)')
variant('shared', default=True, description='Enable shared library')
variant('doc', default=False, description='Enable building docs')
- # We need to build with MPI wrappers if parallel I/O features is enabled:
- # https://www.unidata.ucar.edu/software/netcdf/docs/building_netcdf_fortran.html
- depends_on('mpi', when='+mpi')
-
- depends_on('netcdf-c~mpi~parallel-netcdf', when='~mpi')
- depends_on('netcdf-c+mpi', when='+mpi')
+ depends_on('netcdf-c')
depends_on('doxygen', when='+doc', type='build')
# The default libtool.m4 is too old to handle NAG compiler properly:
@@ -66,17 +59,15 @@ class NetcdfFortran(AutotoolsPackage):
def flag_handler(self, name, flags):
config_flags = None
- if '+pic' in self.spec:
- # Unlike NetCDF-C, we add PIC flag only when +pic. Adding the
- # flags also when ~shared would make it impossible to build a
- # static-only version of the library with NAG.
- if name == 'cflags':
- config_flags = [self.compiler.cc_pic_flag]
- elif name == 'fflags':
- config_flags = [self.compiler.f77_pic_flag]
-
- if name == 'cppflags':
- config_flags = [self.spec['netcdf-c'].headers.cpp_flags]
+ if name == 'cflags':
+ if '+pic' in self.spec:
+ flags.append(self.compiler.cc_pic_flag)
+ elif name == 'fflags':
+ if '+pic' in self.spec:
+ flags.append(self.compiler.f77_pic_flag)
+ if self.spec.satisfies('%gcc@10:'):
+ # https://github.com/Unidata/netcdf-fortran/issues/212
+ flags.append('-fallow-argument-mismatch')
elif name == 'ldflags':
# We need to specify LDFLAGS to get correct dependency_libs
# in libnetcdff.la, so packages that use libtool for linking
@@ -84,11 +75,6 @@ class NetcdfFortran(AutotoolsPackage):
# building takes place outside of Spack environment, i.e.
# without Spack's compiler wrappers.
config_flags = [self.spec['netcdf-c'].libs.search_flags]
- elif name == 'fflags' and self.spec.satisfies('%gcc@10:'):
- # https://github.com/Unidata/netcdf-fortran/issues/212
- if config_flags is None:
- config_flags = []
- config_flags.append('-fallow-argument-mismatch')
return flags, None, config_flags
@@ -122,7 +108,11 @@ class NetcdfFortran(AutotoolsPackage):
config_args = self.enable_or_disable('shared')
config_args.append('--enable-static')
- if '+mpi' in self.spec:
+ # We need to build with MPI wrappers if either of the parallel I/O
+ # features is enabled in netcdf-c:
+ # https://www.unidata.ucar.edu/software/netcdf/docs/building_netcdf_fortran.html
+ netcdf_c_spec = self.spec['netcdf-c']
+ if '+mpi' in netcdf_c_spec or '+parallel-netcdf' in netcdf_c_spec:
config_args.append('CC=%s' % self.spec['mpi'].mpicc)
config_args.append('FC=%s' % self.spec['mpi'].mpifc)
config_args.append('F77=%s' % self.spec['mpi'].mpif77)