%global with_mpich 1 %global with_openmpi 1 %if %{with_mpich} %global mpi_list mpich %endif %if %{with_openmpi} %global mpi_list %{?mpi_list} openmpi %endif %global so_version 200 Name: hdf5 Version: 1.12.1 Release: 1 Summary: A data model, library, and file format for storing and managing data License: GPL-2.0-or-later URL: https://portal.hdfgroup.org/display/HDF5/HDF5 Source0: https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.12/hdf5-1.12.1/src/hdf5-1.12.1.tar.bz2 Patch0: hdf5-LD_LIBRARY_PATH.patch Patch1: hdf5-gfortran12.patch Patch2: hdf5-build.patch Patch3: hdf5-wrappers.patch Patch4: CVE-2018-13867.patch Patch5: CVE-2018-14031.patch Patch6: CVE-2018-16438.patch Patch7: CVE-2019-8396.patch Patch8: CVE-2020-10812.patch Patch9: CVE-2021-37501.patch BuildRequires: gcc, gcc-c++ BuildRequires: krb5-devel, openssl-devel, zlib-devel, gcc-gfortran, time BuildRequires: automake libtool BuildRequires: openssh-clients BuildRequires: libaec-devel chrpath %description HDF5 is a data model, library, and file format for storing and managing data. It supports an unlimited variety of datatypes, and is designed for flexible and efficient I/O and for high volume and complex data. HDF5 is portable and is extensible, allowing applications to evolve in their use of HDF5. The HDF5 Technology suite includes tools and applications for managing, manipulating, viewing, and analyzing data in the HDF5 format. %package devel Summary: HDF5 development files Provides: hdf5-static = %{version}-%{release} Obsoletes: hdf5-static < %{version}-%{release} Requires: %{name}%{?_isa} = %{version}-%{release} Requires: libaec-devel%{?_isa} Requires: zlib-devel%{?_isa} Requires: gcc-gfortran%{?_isa} %description devel HDF5 development headers and libraries. %if %{with_mpich} %package mpich Summary: HDF5 mpich libraries BuildRequires: mpich-devel Provides: %{name}-mpich2 = %{version}-%{release} Obsoletes: %{name}-mpich2 < %{version}-%{release} %description mpich HDF5 parallel mpich libraries %package mpich-devel Summary: HDF5 mpich development files Requires: %{name}-mpich%{?_isa} = %{version}-%{release} Requires: libaec-devel%{?_isa} Requires: zlib-devel%{?_isa} Requires: mpich-devel%{?_isa} Provides: %{name}-mpich2-devel = %{version}-%{release} Obsoletes: %{name}-mpich2-devel < %{version}-%{release} %description mpich-devel HDF5 parallel mpich development files %package mpich-static Summary: HDF5 mpich static libraries Requires: %{name}-mpich-devel%{?_isa} = %{version}-%{release} Provides: %{name}-mpich2-static = %{version}-%{release} Obsoletes: %{name}-mpich2-static < %{version}-%{release} %description mpich-static HDF5 parallel mpich static libraries %endif %if %{with_openmpi} %package openmpi Summary: HDF5 openmpi libraries BuildRequires: openmpi-devel %description openmpi HDF5 parallel openmpi libraries %package openmpi-devel Summary: HDF5 openmpi development files Requires: %{name}-openmpi%{?_isa} = %{version}-%{release} Requires: libaec-devel%{?_isa} Requires: zlib-devel%{?_isa} Requires: openmpi-devel%{?_isa} %description openmpi-devel HDF5 parallel openmpi development files %package openmpi-static Summary: HDF5 openmpi static libraries Requires: %{name}-openmpi-devel%{?_isa} = %{version}-%{release} %description openmpi-static HDF5 parallel openmpi static libraries %endif %prep %autosetup -n %{name}-%{version} -p1 sed -i -e '/^STATIC_AVAILABLE=/s/=.*/=no/' */*/h5[cf]*.in autoreconf -f -i sed -e 's|-O -finline-functions|-O3 -finline-functions|g' -i config/gnu-flags %build %global _configure ../configure %global configure_opts \\\ --disable-silent-rules \\\ --enable-fortran \\\ --enable-fortran2003 \\\ --enable-hl \\\ --enable-shared \\\ --with-szlib \\\ %{nil} export CC=gcc export CXX=g++ export F9X=gfortran export LDFLAGS="%{__global_ldflags} -fPIC -Wl,-z,now -Wl,--as-needed" mkdir build pushd build ln -s ../configure . %configure \ %{configure_opts} \ --enable-cxx sed -i -e 's! -shared ! -Wl,--as-needed\0!g' libtool make %{?_smp_mflags} LDFLAGS="%{__global_ldflags} -fPIC -Wl,-z,now -Wl,--as-needed" popd export CC=mpicc export CXX=mpicxx export F9X=mpif90 export LDFLAGS="%{__global_ldflags} -fPIC -Wl,-z,now -Wl,--as-needed" for mpi in %{?mpi_list} do mkdir $mpi pushd $mpi module load mpi/$mpi-%{_arch} ln -s ../configure . %configure \ %{configure_opts} \ --enable-parallel \ --exec-prefix=%{_libdir}/$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 sed -i -e 's! -shared ! -Wl,--as-needed\0!g' libtool make %{?_smp_mflags} LDFLAGS="%{__global_ldflags} -fPIC -Wl,-z,now -Wl,--as-needed" module purge popd done %install %make_install -C build %delete_la cat >h5comp < ${RPM_BUILD_ROOT}/%{_rpmmacrodir}/macros.hdf5 < $RPM_BUILD_ROOT/etc/ld.so.conf.d/%{name}-%{_arch}.conf %check make %{?_smp_mflags} -C build check %ldconfig_scriptlets %post /sbin/ldconfig %postun /sbin/ldconfig %files %license COPYING %doc MANIFEST README.txt release_docs/RELEASE.txt %doc release_docs/HISTORY*.txt %{_bindir}/gif2h5 %{_bindir}/h52gif %{_bindir}/h5clear %{_bindir}/h5copy %{_bindir}/h5debug %{_bindir}/h5diff %{_bindir}/h5dump %{_bindir}/h5format_convert %{_bindir}/h5import %{_bindir}/h5jam %{_bindir}/h5ls %{_bindir}/h5mkgrp %{_bindir}/h5perf_serial %{_bindir}/h5repack %{_bindir}/h5repart %{_bindir}/h5stat %{_bindir}/h5unjam %{_bindir}/h5watch %{_bindir}/mirror_server %{_bindir}/mirror_server_stop %{_libdir}/libhdf5.so.%{so_version}* %{_libdir}/libhdf5_cpp.so.%{so_version}* %{_libdir}/libhdf5_fortran.so.%{so_version}* %{_libdir}/libhdf5hl_fortran.so.%{so_version}* %{_libdir}/libhdf5_hl.so.%{so_version}* %{_libdir}/libhdf5_hl_cpp.so.%{so_version}* %config(noreplace) /etc/ld.so.conf.d/* %files devel %{_bindir}/h5c++* %{_bindir}/h5cc* %{_bindir}/h5fc* %{_bindir}/h5redeploy %{_includedir}/*.h %{_libdir}/*.so %{_libdir}/*.settings %{_fmoddir}/*.mod %{_datadir}/hdf5_examples/ %{_libdir}/*.a %{_rpmmacrodir}/macros.hdf5 %if %{with_mpich} %files mpich %license COPYING %doc MANIFEST README.txt release_docs/RELEASE.txt %doc release_docs/HISTORY*.txt %{_libdir}/mpich/bin/gif2h5 %{_libdir}/mpich/bin/h52gif %{_libdir}/mpich/bin/h5clear %{_libdir}/mpich/bin/h5copy %{_libdir}/mpich/bin/h5debug %{_libdir}/mpich/bin/h5diff %{_libdir}/mpich/bin/h5dump %{_libdir}/mpich/bin/h5format_convert %{_libdir}/mpich/bin/h5import %{_libdir}/mpich/bin/h5jam %{_libdir}/mpich/bin/h5ls %{_libdir}/mpich/bin/h5mkgrp %{_libdir}/mpich/bin/h5redeploy %{_libdir}/mpich/bin/h5repack %{_libdir}/mpich/bin/h5perf %{_libdir}/mpich/bin/h5perf_serial %{_libdir}/mpich/bin/h5repart %{_libdir}/mpich/bin/h5stat %{_libdir}/mpich/bin/h5unjam %{_libdir}/mpich/bin/h5watch %{_libdir}/mpich/bin/mirror_server %{_libdir}/mpich/bin/mirror_server_stop %{_libdir}/mpich/bin/ph5diff %{_libdir}/mpich/lib/*.so.%{so_version}* %files mpich-devel %{_includedir}/mpich-%{_arch} %{_fmoddir}/mpich/*.mod %{_libdir}/mpich/bin/h5pcc %{_libdir}/mpich/bin/h5pfc %{_libdir}/mpich/lib/lib*.so %{_libdir}/mpich/lib/lib*.settings %{_libdir}/mpich/share/hdf5_examples/ %files mpich-static %{_libdir}/mpich/lib/*.a %endif %if %{with_openmpi} %files openmpi %license COPYING %doc MANIFEST README.txt release_docs/RELEASE.txt %doc release_docs/HISTORY*.txt %{_libdir}/openmpi/bin/gif2h5 %{_libdir}/openmpi/bin/h52gif %{_libdir}/openmpi/bin/h5clear %{_libdir}/openmpi/bin/h5copy %{_libdir}/openmpi/bin/h5debug %{_libdir}/openmpi/bin/h5diff %{_libdir}/openmpi/bin/h5dump %{_libdir}/openmpi/bin/h5format_convert %{_libdir}/openmpi/bin/h5import %{_libdir}/openmpi/bin/h5jam %{_libdir}/openmpi/bin/h5ls %{_libdir}/openmpi/bin/h5mkgrp %{_libdir}/openmpi/bin/h5perf %{_libdir}/openmpi/bin/h5perf_serial %{_libdir}/openmpi/bin/h5redeploy %{_libdir}/openmpi/bin/h5repack %{_libdir}/openmpi/bin/h5repart %{_libdir}/openmpi/bin/h5stat %{_libdir}/openmpi/bin/h5unjam %{_libdir}/openmpi/bin/h5watch %{_libdir}/openmpi/bin/mirror_server %{_libdir}/openmpi/bin/mirror_server_stop %{_libdir}/openmpi/bin/ph5diff %{_libdir}/openmpi/lib/*.so.%{so_version}* %files openmpi-devel %{_includedir}/openmpi-%{_arch} %{_fmoddir}/openmpi/*.mod %{_libdir}/openmpi/bin/h5pcc %{_libdir}/openmpi/bin/h5pfc %{_libdir}/openmpi/lib/lib*.so %{_libdir}/openmpi/lib/lib*.settings %{_libdir}/openmpi/share/hdf5_examples/ %files openmpi-static %{_libdir}/openmpi/lib/*.a %endif %changelog * Wed Mar 29 2023 yaoxin - 1.12.1-1 - Update to 1.12.1 and fix CVE-2018-13867,CVE-2018-14031,CVE-2018-16438,CVE-2019-8396,CVE-2020-10812 and CVE-2021-37501 * Fri May 14 2021 caodongxia - 1.8.20-12 - add sub packages hdf5-openmpi-static, hdf5-openmpi-devel, hdf5-openmpi, - hdf5-mpich-static, hdf5-mpich-devel, hdf5-mpich * Thu Mar 25 2021 maminjie - 1.8.20-11 - Support parallel compilation * Mon Dec 14 2020 openEuler Buildteam - 1.8.20-10 - fix CVE-2017-17506 CVE-2018-17432 CVE-2018-17435 CVE-2018-13869 CVE-2018-13870 CVE-2018-13873 * Mon Nov 9 2020 wangxiao - 1.8.20-9 - fix CVE-2018-17233 CVE-2018-17234 CVE-2018-17237 CVE-2018-17434 CVE-2018-17437 CVE-2018-17438 * Thu Sep 17 2020 shaoqiang kang - 1.8.20-8 - Modify source0 * Tue Oct 22 2019 openEuler Buildteam - 1.8.20-7 - Package init