spack/var/spack/repos/builtin/packages/parallel-netcdf/package.py
Jon Rood 5cd593743e PNetCDF package: enable option required by NetCDF (#11420)
The --enable-relax-coord-bound option was added in 1.8.0. NetCDF
4.6.3 enabled relax coords by default and required it from PNetCDF.
PNetCDF 1.10.0 enabled it by default but for versions between 1.8.0
and 1.10.0 it should be enabled explicitly.
2019-05-15 05:15:38 +09:00

81 lines
3.3 KiB
Python

# Copyright 2013-2019 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack import *
class ParallelNetcdf(AutotoolsPackage):
"""PnetCDF (Parallel netCDF) is a high-performance parallel I/O
library for accessing files in format compatibility with Unidata's
NetCDF, specifically the formats of CDF-1, 2, and 5.
"""
homepage = "https://parallel-netcdf.github.io/"
git = "https://github.com/Parallel-NetCDF/PnetCDF"
url = "https://parallel-netcdf.github.io/Release/pnetcdf-1.11.0.tar.gz"
list_url = "https://parallel-netcdf.github.io/wiki/Download.html"
def url_for_version(self, version):
if version >= Version('1.11.0'):
url = "https://parallel-netcdf.github.io/Release/pnetcdf-{0}.tar.gz"
else:
url = "https://parallel-netcdf.github.io/Release/parallel-netcdf-{0}.tar.gz"
return url.format(version.dotted)
version('develop', branch='develop')
version('master', branch='master')
version('1.11.1', sha256='0c587b707835255126a23c104c66c9614be174843b85b897b3772a590be45779')
version('1.11.0', sha256='a18a1a43e6c4fd7ef5827dbe90e9dcf1363b758f513af1f1356ed6c651195a9f')
version('1.10.0', sha256='ed189228b933cfeac3b7b4f8944eb00e4ff2b72cf143365b1a77890980663a09')
version('1.9.0', sha256='356e1e1fae14bc6c4236ec11435cfea0ff6bde2591531a4a329f9508a01fbe98')
version('1.8.1', sha256='8d7d4c9c7b39bb1cbbcf087e0d726551c50f0cc30d44aed3df63daf3772c9043')
version('1.8.0', sha256='ac00bb2333bee96354de9d9c32d3dfdaa919d878098762f146996578b7f0ede9')
version('1.7.0', sha256='52f0d106c470a843c6176318141f74a21e6ece3f70ee8fe261c6b93e35f70a94')
version('1.6.1', sha256='8cf1af7b640475e3cc931e5fbcfe52484c5055f2fab526691933c02eda388aae')
variant('cxx', default=True, description='Build the C++ Interface')
variant('fortran', default=True, description='Build the Fortran Interface')
variant('pic', default=True,
description='Produce position-independent code (for shared libs)')
depends_on('mpi')
depends_on('m4', type='build')
# See:
# https://trac.mcs.anl.gov/projects/parallel-netcdf/browser/trunk/INSTALL
def configure_args(self):
spec = self.spec
args = ['--with-mpi={0}'.format(spec['mpi'].prefix)]
args.append('MPICC={0}'.format(spec['mpi'].mpicc))
args.append('MPICXX={0}'.format(spec['mpi'].mpicxx))
args.append('MPIF77={0}'.format(spec['mpi'].mpifc))
args.append('MPIF90={0}'.format(spec['mpi'].mpifc))
args.append('SEQ_CC={0}'.format(spack_cc))
if '+pic' in spec:
args.extend([
'CFLAGS={0}'.format(self.compiler.pic_flag),
'CXXFLAGS={0}'.format(self.compiler.pic_flag),
'FFLAGS={0}'.format(self.compiler.pic_flag)
])
if '~cxx' in spec:
args.append('--disable-cxx')
if '~fortran' in spec:
args.append('--disable-fortran')
if spec.satisfies('@1.8.0:'):
args.append('--enable-relax-coord-bound')
return args
def install(self, spec, prefix):
# Installation fails in parallel
make('install', parallel=False)