%bcond mpich 1 %bcond openmpi 1 Name: nceplibs-nemsio Version: 2.5.5 Release: 2%{?dist} Summary: The NCEPLIBS-nemsio library and utilities perform I/O for the NCEP models. License: LGPL-3.0-only URL: https://github.com/NOAA-EMC/NCEPLIBS-nemsio Source0: https://github.com/NOAA-EMC/NCEPLIBS-nemsio/archive/refs/tags/v%{version}.tar.gz Source1: nemsio.pc.in Patch1: 001-fortran-module-location-option.patch Patch2: 002-build-shared-libraries.patch # Always build serial %global build_list serial %if %{with mpich} %global build_list %{?build_list} mpich %endif %if %{with openmpi} %global build_list %{?build_list} openmpi %endif # Override default build dir for multiple builds %global _vpath_builddir %{_vpath_builddir}-$MPI_COMPILER BuildRequires: cmake BuildRequires: gcc-gfortran BuildRequires: clean-rpaths BuildRequires: pkgconfig BuildRequires: pkgconfig(bacio) BuildRequires: pkgconfig(w3emc-4) BuildRequires: pkgconfig(w3emc-d) %description The NCEPLIBS-nemsio library and utilities perform I/O for the NCEP models using NOAA Environmental Modeling System (NEMS) format. %package devel Summary: NCEPLIBS-nemsio libraries. Requires: %{name}%{?_isa} = %{version}-%{release} Requires: gcc-gfortran%{_isa} Requires: cmake Requires: pkgconfig Requires: pkgconfig(bacio) Requires: pkgconfig(w3emc-4) Requires: pkgconfig(w3emc-d) %description devel NCEPLIBS-nemsio mpich development files. %if %{with mpich} %package mpich Summary: NCEPLIBS-nemsio mpich libraries. BuildRequires: mpich-devel Requires: mpich %description mpich NCEPLIBS-nemsio parallel mpich libraries. %package mpich-devel Summary: NCEPLIBS-nemsio mpich development files. Requires: %{name}-mpich%{?_isa} = %{version}-%{release} Requires: gcc-gfortran%{_isa} Requires: cmake Requires: mpich-devel Requires: pkgconfig Requires: pkgconfig(bacio) Requires: pkgconfig(w3emc-4) Requires: pkgconfig(w3emc-d) %description mpich-devel NCEPLIBS-nemsio parallel mpich development files. %endif %if %{with openmpi} %package openmpi Summary: NCEPLIBS-nemsio openmpi libraries. BuildRequires: openmpi-devel Requires: openmpi %description openmpi NCEPLIBS-nemsio parallel openmpi libraries. %package openmpi-devel Summary: NCEPLIBS-nemsio openmpi development files. Requires: %{name}-openmpi%{?_isa} = %{version}-%{release} Requires: gcc-gfortran%{_isa} Requires: cmake Requires: openmpi-devel Requires: pkgconfig Requires: pkgconfig(bacio) Requires: pkgconfig(w3emc-4) Requires: pkgconfig(w3emc-d) %description openmpi-devel NCEPLIBS-nemsio parallel openmpi development files. %endif %prep %autosetup -n NCEPLIBS-nemsio-%{version} -p0 %build # Build function build() { %cmake \ -DCMAKE_INSTALL_PREFIX:PATH=${MPI_HOME:-%{_prefix}} \ -DCMAKE_INSTALL_FULL_SBINDIR:PATH=${MPI_BIN:-%{_sbindir}} \ -DCMAKE_INSTALL_SBINDIR:PATH=%(s=${MPI_BIN:-%{_sbindir}}; echo ${s##*/}) \ -DINCLUDE_INSTALL_DIR:PATH=${MPI_INCLUDE:-%{_includedir}} \ -DCMAKE_INSTALL_LIBDIR=${MPI_LIB:-%{_libdir}} \ -DLIB_INSTALL_DIR:PATH=${MPI_LIB:-%{_libdir}} \ -DSYSCONF_INSTALL_DIR:PATH=${MPI_SYSCONFIG:-%{_sysconfdir}} \ -DFMODDIR=${MPI_FORTRAN_MOD_DIR:-%{_fmoddir}} \ -DBUILD_SHARED_LIBS=ON \ -DENABLE_MPI=$MPI \ -DBUILD_TESTING=OFF %cmake_build sed \ -e "s|FMODDIR|${MPI_FORTRAN_MOD_DIR:-%{_fmoddir}}|g" \ -e "s|LIBDIR|${MPI_LIB:-%{_libdir}}|g" \ -e "s|VERSION|%{version}|g" \ %{SOURCE1} > nemsio${MPI_SUFFIX}.pc } for build in %{build_list}; do case "$build" in serial) MPI_COMPILER=serial MPI=OFF build ;; %if %{with mpich} mpich) %{_mpich_load} CC=mpicc CXX=mpicxx FC=mpif90 F77=mpif77 MPI=ON build %{_mpich_unload} ;; %endif %if %{with openmpi} openmpi) %{_openmpi_load} CC=mpicc CXX=mpicxx FC=mpif90 F77=mpif77 MPI=ON build %{_openmpi_unload} ;; %endif esac done %install for build in %{build_list}; do case "$build" in serial) MPI_COMPILER=serial %cmake_install install -Dpm 0644 nemsio.pc %{buildroot}%{_libdir}/pkgconfig/nemsio.pc ;; %if %{with mpich} mpich) %{_mpich_load} %cmake_install install -Dpm 0644 nemsio${MPI_SUFFIX}.pc %{buildroot}${MPI_LIB}/pkgconfig/nemsio.pc %{_mpich_unload} ;; %endif %if %{with openmpi} openmpi) %{_openmpi_load} %cmake_install install -Dpm 0644 nemsio${MPI_SUFFIX}.pc %{buildroot}${MPI_LIB}/pkgconfig/nemsio.pc %{_openmpi_unload} ;; %endif esac done # CMake is adding an empty runpath entry on executables that use libraries # outside of the standard library paths. Check for ONLY empty rpath errors # and clean up entries to avoid triggering rpmbuild `check-rpath`. QA_RPATHS=$(( ~0x0010 )) /usr/lib/rpm/check-rpaths 2>&1 \ | sed -En "s/^ERROR\s+0010: file\s+'([^']*)'.*/\1/p" \ | /usr/lib/rpm/clean-empty-rpaths %files %license LICENSE.md %doc README.md %{_bindir}/mkgfsnemsioctl %{_bindir}/nemsio_chgdate %{_bindir}/nemsio_get %{_bindir}/nemsio_read %{_libdir}/libnemsio.so.* %files devel %{_fmoddir}/*.mod %dir %{_libdir}/cmake/nemsio/ %{_libdir}/cmake/nemsio/*.cmake %{_libdir}/libnemsio.so %{_libdir}/pkgconfig/nemsio.pc %if %{with mpich} %files mpich %license LICENSE.md %doc README.md %{_libdir}/mpich/bin/mkgfsnemsioctl %{_libdir}/mpich/bin/nemsio_chgdate %{_libdir}/mpich/bin/nemsio_get %{_libdir}/mpich/bin/nemsio_read %{_libdir}/mpich/lib/libnemsio.so.* %files mpich-devel %{_fmoddir}/mpich/*.mod %dir %{_libdir}/mpich/lib/cmake/nemsio/ %{_libdir}/mpich/lib/cmake/nemsio/*.cmake %{_libdir}/mpich/lib/libnemsio.so %{_libdir}/mpich/lib/pkgconfig/nemsio.pc %endif %if %{with openmpi} %files openmpi %license LICENSE.md %doc README.md %{_libdir}/openmpi/bin/mkgfsnemsioctl %{_libdir}/openmpi/bin/nemsio_chgdate %{_libdir}/openmpi/bin/nemsio_get %{_libdir}/openmpi/bin/nemsio_read %{_libdir}/openmpi/lib/libnemsio.so.* %files openmpi-devel %{_fmoddir}/openmpi/*.mod %dir %{_libdir}/openmpi/lib/cmake/nemsio/ %{_libdir}/openmpi/lib/cmake/nemsio/*.cmake %{_libdir}/openmpi/lib/libnemsio.so %{_libdir}/openmpi/lib/pkgconfig/nemsio.pc %endif %changelog * Fri Jan 16 2026 Benjamin Cook - 2.5.5-2 - Remove requires for unused -common package * Thu Jan 15 2026 Benjamin Cook - 2.5.5-1 - Initial Package