%bcond_without curl %bcond_without eccodes %bcond_without fftw3 %bcond_without hdf5 %bcond_without libxml2 %bcond_without netcdf %bcond_without proj %bcond_without szip %bcond_without udunits2 %bcond_without check %bcond_without mpich %bcond_without openmpi %bcond_with magics %bcond_with static Name: cdo Version: 1.9.10 Release: 1%{?dist} Summary: Climate Data Operators License: GPLv2 URL: https://code.mpimet.mpg.de/projects/%{name} Source0: https://code.mpimet.mpg.de/attachments/download/24638/%{name}-%{version}.tar.gz # Use sequential access for threaded netCDF4 tests. Fedora hdf5 is not configured # with thread safety because --enable-threadsafe is incompatible with # the high-level, C++, Fortran, and Java interfaces necessary for netCDF4 Patch0: test-tsformat.test.in-lock-nc4.patch BuildRequires: gcc BuildRequires: gcc-c++ BuildRequires: gcc-gfortran %if %{with curl} BuildRequires: libcurl-devel %endif %if %{with fftw3} BuildRequires: fftw-devel %endif %if %{with eccodes} BuildRequires: eccodes-devel %endif %if %{with hdf5} BuildRequires: hdf5-devel %endif %if %{with libxml2} BuildRequires: libxml2-devel %endif %if %{with magics} BuildRequires: magics-devel %endif %if %{with netcdf} BuildRequires: netcdf-devel %endif %if %{with proj} BuildRequires: proj-devel %endif %if %{with szip} BuildRequires: libaec-devel %endif %if %{with udunits2} BuildRequires: udunits2-devel %endif %if %{with mpich} BuildRequires: mpich-devel BuildRequires: yaxt-mpich-devel BuildRequires: scales-ppm-mpich-devel %if %{with netcdf} BuildRequires: netcdf-mpich-devel %endif %endif %if %{with openmpi} BuildRequires: openmpi-devel BuildRequires: yaxt-openmpi-devel BuildRequires: scales-ppm-openmpi-devel %if %{with netcdf} BuildRequires: netcdf-openmpi-devel %endif %endif %if %{with mpich} %global mpi_list mpich %endif %if %{with openmpi} %global mpi_list %{?mpi_list} openmpi %endif %description CDO is a collection of command line Operators to manipulate and analyse Climate and NWP model Data. Supported data formats are GRIB 1/2, netCDF 3/4, SERVICE, EXTRA and IEG. There are more than 600 operators available. This package contains the binaries for %{name}. %package doc Summary: Documentation files for %{name} BuildArch: noarch %description doc This package contains the %{name} documentation. %package -n cdi Summary: Climate Data Interface %description -n cdi CDI is a C and Fortran Interface to access Climate and NWP model Data. Supported data formats are GRIB, netCDF, SERVICE, EXTRA and IEG. This package contains the application binaries for cdi. %package -n cdi-doc Summary: Documentation files for cdi BuildArch: noarch %description -n cdi-doc This package contains documentation files for developing applications that use cdi. %package -n cdi-libs Summary: Libraries for cdi %description -n cdi-libs This package contains the libraries for cdi. %package -n cdi-devel Summary: Development files for cdi Requires: cdi-libs%{?_isa} = %{version}-%{release} %description -n cdi-devel The cdi-devel package contains libraries and header files for developing applications that use cdi. %if %{with static} %package -n cdi-libs-static Summary: Static libraries for cdi Requires: cdi-devel%{?_isa} = %{version}-%{release} %description -n cdi-libs-static The cdi-libs-static package contains static libraries for developing applications that use cdi-libs. %endif %if %{with mpich} %package mpich Summary: MPICH MPI binaries for %{name} %description mpich This package contains MPICH MPI binaries for %{name}. %package -n cdi-mpich Summary: MPICH MPI binaries for cdi %description -n cdi-mpich This package contains MPICH MPI binaries for cdi. %package -n cdi-mpich-libs Summary: MPICH MPI libraries for cdi %description -n cdi-mpich-libs This package contains MPICH MPI libraries for cdi. %package -n cdi-mpich-devel Summary: Development files for cdi-mpich-libs Requires: cdi-mpich-libs%{?_isa} = %{version}-%{release} %description -n cdi-mpich-devel The cdi-mpich-devel package contains libraries and header files for developing applications that use cdi-mpich-libs. %if %{with static} %package -n cdi-mpich-static Summary: Static libraries for cdi-mpich-libs Requires: cdi-mpich-devel%{?_isa} = %{version}-%{release} %description -n cdi-mpich-static The cdi-mpich-static package contains static libraries for developing applications that use cdi-mpich-libs. %endif %endif %if %{with openmpi} %package openmpi Summary: OpenMPI MPI binaries for %{name} %description openmpi This package contains OpenMPI MPI binaries for %{name}. %package -n cdi-openmpi Summary: OpenMPI MPI binaries for cdi %description -n cdi-openmpi This package contains OpenMPI MPI binaries for cdi. %package -n cdi-openmpi-libs Summary: OpenMPI MPI libraries for cdi %description -n cdi-openmpi-libs This package contains OpenMPI MPI libraries for cdi. %package -n cdi-openmpi-devel Summary: Development files for cdi-openmpi-libs Requires: cdi-openmpi-libs%{?_isa} = %{version}-%{release} %description -n cdi-openmpi-devel The cdi-openmpi-devel package contains libraries and header files for developing applications that use cdi-openmpi-libs. %if %{with static} %package -n cdi-openmpi-static Summary: Static libraries for cdi-openmpi-libs Requires: cdi-openmpi-devel%{?_isa} = %{version}-%{release} %description -n cdi-openmpi-static The cdi-openmpi-static package contains static libraries for developing applications that use cdi-openmpi-libs. %endif %endif %prep %autosetup -p1 %build # Common configure options %global configure_opts \\\ --enable-cdi-lib \\\ --srcdir=.. \\\ %{!?with_static:--disable-static} \\\ %{?with_curl:--with-curl} \\\ %{?with_fftw3:--with-fftw3} \\\ %{?with_eccodes:--with-eccodes} \\\ %{?with_hdf5:--with-hdf5} \\\ %{?with_libxml2:--with-libxml2} \\\ %{?with_magics:--with-magics} \\\ %{?with_netcdf:--with-netcdf} \\\ %{?with_proj:--with-proj} \\\ %{?with_szip:--with-szlib} \\\ %{?with_udunits2:--with-udunits2} mkdir %{_vpath_builddir} cd %{_vpath_builddir} ln -s ../configure . %configure %{configure_opts} %make_build cd - # Specify additional MPI_LAUNCH args for tests MPICH_MPI_LAUNCH_ARGS="-iface lo" OPENMPI_MPI_LAUNCH_ARGS="--oversubscribe" # MPI builds for mpi in %{mpi_list}; do mkdir ${mpi}-%{_vpath_builddir} cd ${mpi}-%{_vpath_builddir} module load mpi/${mpi}-%{_arch} ln -s ../configure . %configure %{configure_opts} \ MPI_LAUNCH="/usr/lib64/${mpi}/bin/mpirun $(eval echo -e \"\${${mpi^^}_MPI_LAUNCH_ARGS}\")" \ CC=mpicc \ FC=mpifort \ --enable-mpi \ --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_build module purge cd - done %install %make_install -C %{_vpath_builddir} rm -f ${RPM_BUILD_ROOT}/%{_libdir}/*.la for mpi in %{mpi_list}; do module load mpi/${mpi}-%{_arch} %make_install -C ${mpi}-%{_vpath_builddir} rm -f ${RPM_BUILD_ROOT}/%{_libdir}/${mpi}/lib/*.la module purge done %check %if %{with check} # Force libtool wrapper script to relink src/.libs/lt-cdo with RPATH %{_vpath_builddir}/src/cdo -h &> /dev/null %make_build -C %{_vpath_builddir} check for mpi in %{mpi_list}; do module load mpi/${mpi}-%{_arch} ${mpi}-%{_vpath_builddir}/src/cdo -h &> /dev/null %make_build -j1 -C ${mpi}-%{_vpath_builddir} check module purge done %endif %files %license AUTHORS %license COPYING %{_bindir}/cdo %files doc %doc ChangeLog %doc NEWS %doc OPERATORS %doc README %doc doc/cdo_eca.pdf %doc doc/cdo_magics.pdf %doc doc/cdo.pdf %doc doc/cdo_refcard.pdf %files -n cdi %{_bindir}/cdi %files -n cdi-doc %doc libcdi/ChangeLog %doc libcdi/NEWS %doc libcdi/README %doc libcdi/doc/cdi_cman.pdf %doc libcdi/doc/cdi_fman.pdf %files -n cdi-libs %license libcdi/AUTHORS %license libcdi/COPYING %{_libdir}/*.so.0* %files -n cdi-devel %{_includedir}/* %{_libdir}/*.so %{_libdir}/pkgconfig/cdi.pc %if %{with static} %files -n cdi-libs-static %{_libdir}/*.a %endif %if %{with mpich} %files mpich %license AUTHORS %license COPYING %{_libdir}/mpich/bin/cdo %files -n cdi-mpich %{_libdir}/mpich/bin/cdi %files -n cdi-mpich-libs %license libcdi/AUTHORS %license libcdi/COPYING %{_libdir}/mpich/lib/*.so.0* %files -n cdi-mpich-devel %{_includedir}/mpich-%{_arch}/* %{_libdir}/mpich/lib/*.so %{_libdir}/mpich/lib/pkgconfig/cdi.pc %{_libdir}/mpich/lib/pkgconfig/cdipio.pc %if %{with static} %files -n cdi-mpich-static %{_libdir}/mpich/lib/*.a %endif %endif %if %{with openmpi} %files openmpi %license AUTHORS %license COPYING %{_libdir}/openmpi/bin/cdo %files -n cdi-openmpi %{_libdir}/openmpi/bin/cdi %files -n cdi-openmpi-libs %license libcdi/AUTHORS %license libcdi/COPYING %{_libdir}/openmpi/lib/*.so.0* %files -n cdi-openmpi-devel %{_includedir}/openmpi-%{_arch}/* %{_libdir}/openmpi/lib/*.so %{_libdir}/openmpi/lib/pkgconfig/cdi.pc %{_libdir}/openmpi/lib/pkgconfig/cdipio.pc %if %{with static} %files -n cdi-openmpi-static %{_libdir}/openmpi/lib/*.a %endif %endif %changelog * Sat Aug 15 2020 Matthew Krupcale - 1.9.9rc5-0.1 - Initial package