summaryrefslogtreecommitdiff
path: root/var
diff options
context:
space:
mode:
authorAlberto Chiusole <bebosudo@users.noreply.github.com>2018-11-13 06:54:11 +0100
committerPeter Scheibel <scheibel1@llnl.gov>2018-11-12 23:54:11 -0600
commitc7c3fab7445fbeff79fa645a1dad6c44887faaa1 (patch)
tree0ba5509f36e6d6367f6ebab0e171a5a6b35c0fd4 /var
parent91302f89e45c567e4239161e42ca2ecfa2665a25 (diff)
downloadspack-c7c3fab7445fbeff79fa645a1dad6c44887faaa1.tar.gz
spack-c7c3fab7445fbeff79fa645a1dad6c44887faaa1.tar.bz2
spack-c7c3fab7445fbeff79fa645a1dad6c44887faaa1.tar.xz
spack-c7c3fab7445fbeff79fa645a1dad6c44887faaa1.zip
Add 'pic' variant to netcdf packages (#9605)
Diffstat (limited to 'var')
-rw-r--r--var/spack/repos/builtin/packages/netcdf-cxx4/package.py15
-rw-r--r--var/spack/repos/builtin/packages/netcdf-fortran/package.py12
-rw-r--r--var/spack/repos/builtin/packages/netcdf/package.py6
3 files changed, 27 insertions, 6 deletions
diff --git a/var/spack/repos/builtin/packages/netcdf-cxx4/package.py b/var/spack/repos/builtin/packages/netcdf-cxx4/package.py
index 8d228cc3c0..fda760ec02 100644
--- a/var/spack/repos/builtin/packages/netcdf-cxx4/package.py
+++ b/var/spack/repos/builtin/packages/netcdf-cxx4/package.py
@@ -8,12 +8,18 @@ from spack import *
class NetcdfCxx4(AutotoolsPackage):
"""C++ interface for NetCDF4"""
+
homepage = "http://www.unidata.ucar.edu/software/netcdf"
url = "https://www.github.com/unidata/netcdf-cxx4/tarball/v4.3.0"
version('4.3.0', '0dde8b9763eecdafbd69d076e687337e')
version('4.2.1', 'd019853802092cf686254aaba165fc81')
+ # Usually the configure automatically inserts the pic flags, but we can
+ # force its usage with this variant.
+ variant('pic', default=True,
+ description='Produce position-independent code (for shared libs)')
+
depends_on('netcdf')
depends_on('automake', type='build')
@@ -22,8 +28,13 @@ class NetcdfCxx4(AutotoolsPackage):
force_autoreconf = True
- def configure_args(self):
- return ['CPPFLAGS=-I' + self.spec['netcdf'].prefix.include]
+ def flag_handler(self, name, flags):
+ if name == 'cflags' and '+pic' in self.spec:
+ flags.append(self.compiler.pic_flag)
+ elif name == 'cppflags':
+ flags.append('-I' + self.spec['netcdf'].prefix.include)
+
+ return (None, None, flags)
@property
def libs(self):
diff --git a/var/spack/repos/builtin/packages/netcdf-fortran/package.py b/var/spack/repos/builtin/packages/netcdf-fortran/package.py
index 64d4eca2a0..d622ef025a 100644
--- a/var/spack/repos/builtin/packages/netcdf-fortran/package.py
+++ b/var/spack/repos/builtin/packages/netcdf-fortran/package.py
@@ -15,14 +15,22 @@ class NetcdfFortran(AutotoolsPackage):
version('4.4.4', 'e855c789cd72e1b8bc1354366bf6ac72')
version('4.4.3', 'bfd4ae23a34635b273d3eb0d91cbde9e')
+ variant('pic', default=True,
+ description='Produce position-independent code (for shared libs)')
+
depends_on('netcdf')
# The default libtool.m4 is too old to handle NAG compiler properly:
# https://github.com/Unidata/netcdf-fortran/issues/94
patch('nag.patch', when='@:4.4.4%nag')
- def configure_args(self):
- return ['CPPFLAGS=-I' + self.spec['netcdf'].prefix.include]
+ def flag_handler(self, name, flags):
+ if name in ['cflags', 'fflags'] and '+pic' in self.spec:
+ flags.append(self.compiler.pic_flag)
+ elif name == 'cppflags':
+ flags.append('-I' + self.spec['netcdf'].prefix.include)
+
+ return (None, None, flags)
@property
def libs(self):
diff --git a/var/spack/repos/builtin/packages/netcdf/package.py b/var/spack/repos/builtin/packages/netcdf/package.py
index 8a806dbf95..769e23ca65 100644
--- a/var/spack/repos/builtin/packages/netcdf/package.py
+++ b/var/spack/repos/builtin/packages/netcdf/package.py
@@ -24,9 +24,9 @@ class Netcdf(AutotoolsPackage):
homepage = "http://www.unidata.ucar.edu/software/netcdf"
url = "http://www.gfd-dennou.org/arch/netcdf/unidata-mirror/netcdf-4.3.3.tar.gz"
+ version('4.6.1', 'ee81c593efc8a6229d9bcb350b6d7849')
# Version 4.4.1.1 is having problems in tests
# https://github.com/Unidata/netcdf-c/issues/343
- version('4.6.1', 'ee81c593efc8a6229d9bcb350b6d7849')
version('4.4.1.1', '503a2d6b6035d116ed53b1d80c811bda')
# netcdf@4.4.1 can crash on you (in real life and in tests). See:
# https://github.com/Unidata/netcdf-c/issues/282
@@ -40,6 +40,8 @@ class Netcdf(AutotoolsPackage):
variant('parallel-netcdf', default=False,
description='Enable parallel I/O for classic files')
variant('hdf4', default=False, description='Enable HDF4 support')
+ variant('pic', default=True,
+ description='Produce position-independent code (for shared libs)')
variant('shared', default=True, description='Enable shared library')
variant('dap', default=False, description='Enable DAP support')
@@ -155,7 +157,7 @@ class Netcdf(AutotoolsPackage):
config_args += self.enable_or_disable('shared')
- if '~shared' in self.spec:
+ if '~shared' in self.spec or '+pic' in self.spec:
# We don't have shared libraries but we still want it to be
# possible to use this library in shared builds
cflags.append(self.compiler.pic_flag)