Name: netcdf-cxx4
Version: 4.2
Release: 4%{?dist}
Summary: NetCDF-4 C++ library
Group: Applications/Engineering
License: NetCDF
URL: http://www.unidata.ucar.edu/software/netcdf/
Source0: http://www.unidata.ucar.edu/downloads/netcdf/ftp/netcdf-cxx4-%{version}.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: netcdf-devel
#mpiexec segfaults if ssh is not present
#https://trac.mcs.anl.gov/projects/mpich2/ticket/1576
BuildRequires: openssh-clients
%global with_mpich2 1
%global with_openmpi 1
%if 0%{?rhel}
%ifarch ppc64
# No mpich2 on ppc64 in EL
%global with_mpich2 0
%endif
%endif
%ifarch s390 s390x
# No openmpi on s390(x)
%global with_openmpi 0
%endif
%if %{with_mpich2}
%global mpi_list mpich2
%endif
%if %{with_openmpi}
%global mpi_list %{?mpi_list} openmpi
%endif
%description
netCDF-4 C++ library.
%package devel
Summary: Development files for netCDF-4 C++ API
Group: Development/Libraries
Requires: %{name}%{?_isa} = %{version}-%{release}
Requires: pkgconfig
Requires: netcdf-devel%{?_isa}
%description devel
Development files for netCDF-4 C++ API.
%package static
Summary: Static library for netCDF-4 C++ API
Group: Development/Libraries
Requires: %{name}-devel%{?_isa} = %{version}-%{release}
%description static
Static library for netCDF-4 C++ API.
%if %{with_mpich2}
%package mpich2
Summary: NetCDF mpich2 libraries
Group: Development/Libraries
Requires: mpich2
BuildRequires: mpich2-devel
BuildRequires: netcdf-mpich2-devel
%description mpich2
NetCDF parallel mpich2 libraries
%package mpich2-devel
Summary: NetCDF mpich2 development files
Group: Development/Libraries
Requires: %{name}-mpich2%{?_isa} = %{version}-%{release}
Requires: mpich2
Requires: pkgconfig
Requires: netcdf-mpich2-devel
Requires: libcurl-devel
%description mpich2-devel
NetCDF parallel mpich2 development files
%package mpich2-static
Summary: NetCDF mpich2 static libraries
Group: Development/Libraries
Requires: %{name}-mpich2-devel%{?_isa} = %{version}-%{release}
%description mpich2-static
NetCDF parallel mpich2 static libraries
%endif
%if %{with_openmpi}
%package openmpi
Summary: NetCDF openmpi libraries
Group: Development/Libraries
Requires: openmpi
BuildRequires: openmpi-devel
BuildRequires: netcdf-openmpi-devel
%description openmpi
NetCDF parallel openmpi libraries
%package openmpi-devel
Summary: NetCDF openmpi development files
Group: Development/Libraries
Requires: %{name}-openmpi%{_isa} = %{version}-%{release}
Requires: openmpi-devel
Requires: pkgconfig
Requires: netcdf-openmpi-devel
Requires: libcurl-devel
%description openmpi-devel
NetCDF parallel openmpi development files
%package openmpi-static
Summary: NetCDF openmpi static libraries
Group: Development/Libraries
Requires: %{name}-openmpi-devel%{?_isa} = %{version}-%{release}
%description openmpi-static
NetCDF parallel openmpi static libraries
%endif
%prep
%setup -q
# Fix line endings
sed -i -e 's/\r//' examples/*.cpp
%build
#Do out of tree builds
%global _configure ../configure
# Serial build
mkdir build
pushd build
ln -s ../configure .
%configure
make %{?_smp_mflags}
popd
# MPI builds
export CC=mpicc
export CXX=mpicxx
for mpi in %{mpi_list}
do
mkdir $mpi
pushd $mpi
module load $mpi-%{_arch}
ln -s ../configure .
%configure \
--libdir=%{_libdir}/$mpi/lib \
--bindir=%{_libdir}/$mpi/bin \
--sbindir=%{_libdir}/$mpi/sbin \
--includedir=%{_includedir}/$mpi-%{_arch} \
--datarootdir=%{_libdir}/$mpi/share \
--mandir=%{_libdir}/$mpi/share/man
make %{?_smp_mflags}
module purge
popd
done
%install
make -C build install DESTDIR=${RPM_BUILD_ROOT}
/bin/rm ${RPM_BUILD_ROOT}%{_libdir}/*.la
for mpi in %{mpi_list}
do
module load $mpi-%{_arch}
make -C $mpi install DESTDIR=${RPM_BUILD_ROOT}
rm $RPM_BUILD_ROOT/%{_libdir}/$mpi/lib/*.la
module purge
done
%check
make -C build check
for mpi in mpich2 openmpi
do
module load $mpi-%{_arch}
make -C $mpi check
module purge
done
%clean
rm -rf ${RPM_BUILD_ROOT}
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
%files
%doc COPYRIGHT
%{_libdir}/libnetcdf_c++4.so.*
%files devel
%doc examples
%{_bindir}/ncxx4-config
%{_includedir}/*
%{_libdir}/libnetcdf_c++4.so
%{_libdir}/pkgconfig/netcdf-cxx4.pc
%files static
%{_libdir}/libnetcdf_c++4.a
%if %{with_mpich2}
%files mpich2
%doc COPYRIGHT
%{_libdir}/mpich2/lib/*.so.*
%files mpich2-devel
%{_libdir}/mpich2/bin/ncxx4-config
%{_includedir}/mpich2-%{_arch}/*
%{_libdir}/mpich2/lib/*.so
%{_libdir}/mpich2/lib/pkgconfig/%{name}.pc
%files mpich2-static
%{_libdir}/mpich2/lib/*.a
%endif
%if %{with_openmpi}
%files openmpi
%doc COPYRIGHT
%{_libdir}/openmpi/lib/*.so.*
%files openmpi-devel
%{_libdir}/openmpi/bin/ncxx4-config
%{_includedir}/openmpi-%{_arch}/*
%{_libdir}/openmpi/lib/*.so
%{_libdir}/openmpi/lib/pkgconfig/%{name}.pc
%files openmpi-static
%{_libdir}/openmpi/lib/*.a
%endif
%changelog
* Wed Mar 7 2012 Orion Poplawski <orion@cora.nwra.com> - 4.2-4
- Fix line endings
* Wed Mar 7 2012 Orion Poplawski <orion@cora.nwra.com> - 4.2-3
- Build parallel versions
- Ship examples with -devel
* Mon Oct 3 2011 Orion Poplawski <orion@cora.nwra.com> - 4.2-2
- Use %%{?_isa} in Requires
- Make -static sub-package require the -devel package
* Fri Sep 30 2011 Orion Poplawski <orion@cora.nwra.com> - 4.2-1
- Initial package