spack/var/spack/repos/builtin/packages/parallel-netcdf/package.py
Greg Sjaardema 9f40813004 PARALLEL-NETCDF: Update new version and location (#10172)
* PARALLEL-NETCDF: Update new version and location

PnetCDF-1.11.0 is released.

Also, the canonical download area has been changed and they are now using git, so can also provide a develop and master checkout.
One issue is that they changed the name of the tar files, so 1.11.0 needs special handling (and future versions will also).

All checksums at new location match the checksums from the old location.

* Address concerns in review

Added a `url_for_version` function to handle the name change in the tar files at version 1.11.0 and later.  Updated description to match current shown on website.  Updated `homepage` setting since it has recently moved.

* Address issues in second review
2019-01-01 19:55:29 -06:00

77 lines
3.1 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.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')
return args
def install(self, spec, prefix):
# Installation fails in parallel
make('install', parallel=False)