Name: netcdf-cxx4
Version: 4.2.1
Release: 2%{?dist}
Summary: NetCDF-4 C++ library
Group: Applications/Engineering
License: NetCDF
URL: http://www.unidata.ucar.edu/software/netcdf/
Source0: https://github.com/Unidata/netcdf-cxx4/archive/v%{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_mpich 1
%global with_openmpi 1
%if 0%{?rhel} <= 6
%ifarch ppc64
# No mpich on ppc64 in EL6
%global with_mpich 0
%endif
%endif
%ifarch s390 s390x
# No openmpi on s390(x)
%global with_openmpi 0
%endif
%if %{with_mpich}
%global mpi_list mpich
%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_mpich}
%package mpich
Summary: NetCDF mpich libraries
Group: Development/Libraries
Requires: mpich
BuildRequires: mpich-devel
BuildRequires: netcdf-mpich-devel
Provides: %{name}-mpich2 = %{version}-%{release}
Obsoletes: %{name}-mpich2 < 4.2-8
%description mpich
NetCDF parallel mpich libraries
%package mpich-devel
Summary: NetCDF mpich development files
Group: Development/Libraries
Requires: %{name}-mpich%{?_isa} = %{version}-%{release}
Requires: mpich
Requires: pkgconfig
Requires: netcdf-mpich-devel
Requires: libcurl-devel
Provides: %{name}-mpich2-devel = %{version}-%{release}
Obsoletes: %{name}-mpich2-devel < 4.2-8
%description mpich-devel
NetCDF parallel mpich development files
%package mpich-static
Summary: NetCDF mpich static libraries
Group: Development/Libraries
Requires: %{name}-mpich-devel%{?_isa} = %{version}-%{release}
Provides: %{name}-mpich2-static = %{version}-%{release}
Obsoletes: %{name}-mpich2-static < 4.2-8
%description mpich-static
NetCDF parallel mpich 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/$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/$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 || ( cat build/*/test-suite.log && exit 1 )
for mpi in %{mpi_list}
do
module load mpi/$mpi-%{_arch}
make -C $mpi check || ( cat ${mpi}/*/test-suite.log && exit 1 )
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_mpich}
%files mpich
%doc COPYRIGHT
%{_libdir}/mpich/lib/*.so.*
%files mpich-devel
%{_libdir}/mpich/bin/ncxx4-config
%{_includedir}/mpich-%{_arch}/*
%{_libdir}/mpich/lib/*.so
%{_libdir}/mpich/lib/pkgconfig/%{name}.pc
%files mpich-static
%{_libdir}/mpich/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
* Mon Feb 24 2014 Orion Poplawski <orion@cora.nwra.com> - 4.2.1-2
- Rebuild for mpich-3.1
* Thu Feb 6 2014 Orion Poplawski <orion@cora.nwra.com> - 4.2.1-1
- Update to 4.2.1
* Sat Aug 03 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.2-9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
* Mon Jul 22 2013 Deji Akingunola <dakingun@gmail.com> - 4.2-8
- Rename mpich2 sub-packages to mpich and rebuild for mpich-3.0
* Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.2-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
* Fri Nov 2 2012 Orion Poplawski <orion@cora.nwra.com> - 4.2-6
- Rebuild for mpich2 1.5
- Use new mpi module location
* Fri Jul 20 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.2-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
* 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