diff --git a/.gitignore b/.gitignore index fa474fc..11c231d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,23 +1 @@ -netcdf-4.1.1.tar.gz -/netcdf-4.1.2.tar.gz -/netcdf-4.1.3.tar.gz -/netcdf-4.2-rc1.tar.gz -/netcdf-4.2-rc2.tar.gz -/netcdf-4.2.tar.gz -/netcdf-4.2.1-rc1.tar.gz -/netcdf-4.2.1.tar.gz -/netcdf-4.2.1.1.tar.gz -/netcdf-4.3.0.tar.gz -/v4.3.1.1.tar.gz -/netcdf-4.3.2.tar.gz -/netcdf-4.3.3.tar.gz -/netcdf-4.3.3.1.tar.gz -/netcdf-4.4.0.tar.gz -/netcdf-4.4.1.tar.gz -/netcdf-4.4.1.1.tar.gz -/netcdf-4.6.2.1.tar.gz -/netcdf-4.6.3.tar.gz -/netcdf-4.7.0.tar.gz -/netcdf-4.7.3.tar.gz -/netcdf-4.8.0.tar.gz -/netcdf-4.8.1.tar.gz +SOURCES/netcdf-4.9.2.tar.gz diff --git a/.netcdf.metadata b/.netcdf.metadata new file mode 100644 index 0000000..7d1f976 --- /dev/null +++ b/.netcdf.metadata @@ -0,0 +1 @@ +0eb6fdcbd725bd53bb9e98405a2cb15f3c511ce2 SOURCES/netcdf-4.9.2.tar.gz diff --git a/SOURCES/2431.patch b/SOURCES/2431.patch new file mode 100644 index 0000000..c9a0d45 --- /dev/null +++ b/SOURCES/2431.patch @@ -0,0 +1,37 @@ +From d73830f682c243e25a5bcfb34ecaff4b66bda536 Mon Sep 17 00:00:00 2001 +From: Orion Poplawski +Date: Fri, 16 Dec 2022 20:53:48 -0700 +Subject: [PATCH] Avoid soname versions for plugins + +--- + plugins/Makefile.am | 17 +---------------- + 1 file changed, 1 insertion(+), 16 deletions(-) + +diff --git a/plugins/Makefile.am b/plugins/Makefile.am +index 762da932d9..f2a034db66 100644 +--- a/plugins/Makefile.am ++++ b/plugins/Makefile.am +@@ -4,22 +4,7 @@ + # Put Together AM_CPPFLAGS and AM_LDFLAGS + include $(top_srcdir)/lib_flags.am + +-# This linker flag specifies libtool version info. +-# See http://www.gnu.org/software/libtool/manual/libtool.html#Libtool-versioning +-# for information regarding incrementing `-version-info`. +-plugin_version_info = -version-info 0:0:0 +- +-AM_LDFLAGS += -module -shared -export-dynamic $(NOUNDEFINED) +- +-if ISMINGW +- AM_LDFLAGS += -avoid-version +-else !ISMINGW +-if ISCYGWIN +-AM_LDFLAGS += -avoid-version +-else !ISCYGWIN +-AM_LDFLAGS += $(plugin_version_info) +-endif !ISCYGWIN +-endif !ISMINGW ++AM_LDFLAGS += -module -avoid-version -shared -export-dynamic $(NOUNDEFINED) + + # Create an alternate directory if not installing or for noinst installs. + ALTPLUGINDIR = ${abs_top_builddir}/plugins/plugindir diff --git a/SOURCES/2827.patch b/SOURCES/2827.patch new file mode 100644 index 0000000..0eba25e --- /dev/null +++ b/SOURCES/2827.patch @@ -0,0 +1,88 @@ +From 7a2813be7242f736e73f6c84c539ca06048be169 Mon Sep 17 00:00:00 2001 +From: JohnD +Date: Tue, 12 Dec 2023 18:16:31 -0500 +Subject: [PATCH] Add H5FD_http_finalize function and call on hdf5 finalize + +Fixes Unidata#2617 +--- + libhdf5/H5FDhttp.c | 28 +++++++++++++++++++++++++--- + libhdf5/H5FDhttp.h | 2 ++ + libhdf5/hdf5dispatch.c | 3 +++ + 3 files changed, 30 insertions(+), 3 deletions(-) + +diff --git a/libhdf5/H5FDhttp.c b/libhdf5/H5FDhttp.c +index c6658f46f2..d48aeb8c3e 100644 +--- a/libhdf5/H5FDhttp.c ++++ b/libhdf5/H5FDhttp.c +@@ -239,6 +239,31 @@ H5FD_http_init(void) + return H5FD_HTTP_g; + } /* end H5FD_http_init() */ + ++ ++/*------------------------------------------------------------------------- ++ * Function: H5FD_http_finalize ++ * ++ * Purpose: Free this driver by unregistering the driver with the ++ * library. ++ * ++ * Returns: Non-negative on success or negative on failure ++ * ++ * Programmer: John Donoghue ++ * Tuesday, December 12, 2023 ++ * ++ *------------------------------------------------------------------------- ++ */ ++EXTERNL hid_t ++H5FD_http_finalize(void) ++{ ++ /* Reset VFL ID */ ++ if (H5FD_HTTP_g) ++ H5FDunregister(H5FD_HTTP_g); ++ H5FD_HTTP_g = 0; ++ ++ return H5FD_HTTP_g; ++} /* end H5FD_http_finalize() */ ++ + + /*--------------------------------------------------------------------------- + * Function: H5FD_http_term +@@ -256,9 +281,6 @@ H5FD_http_init(void) + static herr_t + H5FD_http_term(void) + { +- /* Reset VFL ID */ +- H5FD_HTTP_g = 0; +- + return 0; + } /* end H5FD_http_term() */ + #endif +diff --git a/libhdf5/H5FDhttp.h b/libhdf5/H5FDhttp.h +index f3c46dca59..ee3d283705 100644 +--- a/libhdf5/H5FDhttp.h ++++ b/libhdf5/H5FDhttp.h +@@ -44,9 +44,11 @@ extern "C" { + + #if 0 + H5_DLL hid_t H5FD_http_init(void); ++H5_DLL hid_t H5FD_http_finalize(void); + H5_DLL herr_t H5Pset_fapl_http(hid_t fapl_id); + #else + EXTERNL hid_t H5FD_http_init(void); ++EXTERNL hid_t H5FD_http_finalize(void); + EXTERNL herr_t H5Pset_fapl_http(hid_t fapl_id); + #endif + +diff --git a/libhdf5/hdf5dispatch.c b/libhdf5/hdf5dispatch.c +index 130f0f0766..1e8f980daa 100644 +--- a/libhdf5/hdf5dispatch.c ++++ b/libhdf5/hdf5dispatch.c +@@ -142,6 +142,9 @@ NC_HDF5_initialize(void) + int + NC_HDF5_finalize(void) + { ++#ifdef ENABLE_BYTERANGE ++ (void)H5FD_http_finalize(); ++#endif + (void)nc4_hdf5_finalize(); + return NC_NOERR; + } diff --git a/SOURCES/2850.patch b/SOURCES/2850.patch new file mode 100644 index 0000000..cb41e88 --- /dev/null +++ b/SOURCES/2850.patch @@ -0,0 +1,36 @@ +From 07134b9581e27db1fbf44495c05f7e4a57a82be3 Mon Sep 17 00:00:00 2001 +From: Orion Poplawski +Date: Mon, 29 Jan 2024 22:05:11 -0700 +Subject: [PATCH] Fix some variable types. Resolves #2849 + +--- + libhdf4/hdf4file.c | 2 +- + ncgen/ncgen.h | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/libhdf4/hdf4file.c b/libhdf4/hdf4file.c +index 3fd198a375..7fb0b3d103 100644 +--- a/libhdf4/hdf4file.c ++++ b/libhdf4/hdf4file.c +@@ -485,7 +485,7 @@ hdf4_read_var(NC_FILE_INFO_T *h5, int v) + int32 sdsid; + int contiguous; + int d, a; +- int flag; ++ int32 flag; + char name[NC_MAX_HDF4_NAME+1]; + int xtype; + char type_name[NC_MAX_NAME + 1]; +diff --git a/ncgen/ncgen.h b/ncgen/ncgen.h +index 765543d043..f7f901671d 100644 +--- a/ncgen/ncgen.h ++++ b/ncgen/ncgen.h +@@ -173,7 +173,7 @@ typedef struct Typeinfo { + int hasvlen; /* 1 => this type contains a vlen*/ + nc_type typecode; + unsigned long offset; /* fields in struct*/ +- unsigned long alignment;/* fields in struct*/ ++ size_t alignment;/* fields in struct*/ + NCConstant* econst; /* for enum values*/ + Dimset dimset; /* for NC_VAR/NC_FIELD/NC_ATT*/ + size_t size; /* for opaque, compound, etc.*/ diff --git a/SOURCES/netcdf-tst-blosc.patch b/SOURCES/netcdf-tst-blosc.patch new file mode 100644 index 0000000..d2058e6 --- /dev/null +++ b/SOURCES/netcdf-tst-blosc.patch @@ -0,0 +1,12 @@ +diff -up netcdf-c-4.9.1/nc_test4/tst_specific_filters.sh.tst-blosc netcdf-c-4.9.1/nc_test4/tst_specific_filters.sh +--- netcdf-c-4.9.1/nc_test4/tst_specific_filters.sh.tst-blosc 2023-02-03 13:49:17.000000000 -0700 ++++ netcdf-c-4.9.1/nc_test4/tst_specific_filters.sh 2023-02-12 13:06:51.942354853 -0700 +@@ -15,7 +15,7 @@ if test "x$TESTNCZARR" = x1 ; then + BLOSCARGS="32001,0,0,0,256,5,1,1" + BLOSCCODEC='[{\"id\": \"blosc\",\"clevel\": 5,\"blocksize\": 256,\"cname\": \"lz4\",\"shuffle\": 1}]' + else +-BLOSCARGS="32001,0,0,4,256,5,1,1" ++BLOSCARGS="32001,2,2,4,256,5,1,1" + BLOSCCODEC='[{\"id\": \"blosc\",\"clevel\": 5,\"blocksize\": 256,\"cname\": \"lz4\",\"shuffle\": 1}]' + fi + diff --git a/netcdf.spec b/SPECS/netcdf.spec similarity index 84% rename from netcdf.spec rename to SPECS/netcdf.spec index d3f376a..06e3b8d 100644 --- a/netcdf.spec +++ b/SPECS/netcdf.spec @@ -1,22 +1,33 @@ %global sover 19 Name: netcdf -Version: 4.8.1 -Release: 2%{?dist} +Version: 4.9.2 +Release: 6%{?dist} Summary: Libraries for the Unidata network Common Data Form -License: NetCDF +License: BSD-3-Clause URL: http://www.unidata.ucar.edu/software/netcdf/ Source0: https://github.com/Unidata/netcdf-c/archive/v%{version}/%{name}-%{version}.tar.gz +# Remove sonames from plugins +Patch0: https://patch-diff.githubusercontent.com/raw/Unidata/netcdf-c/pull/2431.patch +# Fix blosc test - https://github.com/Unidata/netcdf-c/issues/2572 +Patch1: netcdf-tst-blosc.patch +# Fix segfault in octave-netcdf on exit +Patch2: https://github.com/Unidata/netcdf-c/pull/2827.patch +# Fix incompatible types +Patch3: https://github.com/Unidata/netcdf-c/pull/2850.patch -BuildRequires: make BuildRequires: libtool +BuildRequires: make BuildRequires: chrpath BuildRequires: doxygen +BuildRequires: blosc-devel BuildRequires: hdf-static BuildRequires: hdf5-devel BuildRequires: gawk BuildRequires: libcurl-devel +BuildRequires: libxml2-devel +BuildRequires: libzstd-devel BuildRequires: m4 BuildRequires: zlib-devel %ifarch %{valgrind_arches} @@ -27,8 +38,17 @@ BuildRequires: valgrind BuildRequires: openssh-clients Requires: hdf5%{?_isa} = %{_hdf5_version} -%global with_mpich 1 -%global with_openmpi 1 +%global with_mpich %{undefined flatpak} +%if 0%{?fedora} >= 40 +%ifarch %{ix86} + # No OpenMPI support on these arches + %global with_openmpi 0 +%else + %global with_openmpi %{undefined flatpak} +%endif +%else + %global with_openmpi %{undefined flatpak} +%endif %if %{with_mpich} %global mpi_list mpich @@ -37,6 +57,13 @@ Requires: hdf5%{?_isa} = %{_hdf5_version} %global mpi_list %{?mpi_list} openmpi %endif +# mpich parallel tests are hanging on s390x +%ifarch s390x +%bcond_with parallel_tests +%else +%bcond_without parallel_tests +%endif + %description NetCDF (network Common Data Form) is an interface for array-oriented data access and a freely-distributed collection of software libraries @@ -160,6 +187,8 @@ NetCDF parallel openmpi static libraries %prep %autosetup -p1 -n %{name}-c-%{version} +# For Patch0 +./bootstrap %build @@ -173,7 +202,7 @@ export CFLAGS="%{optflags} -fno-strict-aliasing" --enable-netcdf-4 \\\ --enable-dap \\\ --enable-extra-example-tests \\\ - CPPFLAGS="-I%{_includedir}/hdf -DH5_USE_110_API" \\\ + CPPFLAGS="-I%{_includedir}/hdf" \\\ LIBS="-ltirpc" \\\ --enable-hdf4 \\\ --disable-dap-remote-tests \\\ @@ -183,12 +212,19 @@ export CFLAGS="%{optflags} -fno-strict-aliasing" mkdir build pushd build ln -s ../configure . -%configure %{configure_opts} +%configure %{configure_opts} \ + --with-plugin-dir=%{_libdir}/hdf5/plugin +# Get rid of undesirable hardcoded rpaths; workaround libtool reordering +# -Wl,--as-needed after all the libraries. +sed -e 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' \ + -e 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' \ + -e 's|CC="\(.*g..\)"|CC="\1 -Wl,--as-needed"|' \ + -i libtool %make_build popd # MPI builds -for mpi in %{mpi_list} +for mpi in %{?mpi_list} do mkdir $mpi pushd $mpi @@ -203,7 +239,14 @@ do --includedir=%{_includedir}/$mpi-%{_arch} \ --datarootdir=%{_libdir}/$mpi/share \ --mandir=%{_libdir}/$mpi/share/man \ - --enable-parallel-tests + --with-plugin-dir=%{_libdir}/$mpi/hdf5/plugin \ + %{?with_parallel_tests:--enable-parallel-tests} + # Get rid of undesirable hardcoded rpaths; workaround libtool reordering + # -Wl,--as-needed after all the libraries. + sed -e 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' \ + -e 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' \ + -e 's|CC="\(.*g..\)"|CC="\1 -Wl,--as-needed"|' \ + -i libtool %make_build module purge popd @@ -212,17 +255,16 @@ done %install make -C build install DESTDIR=${RPM_BUILD_ROOT} -/bin/rm -f ${RPM_BUILD_ROOT}%{_libdir}/*.la chrpath --delete ${RPM_BUILD_ROOT}/%{_bindir}/nc{copy,dump,gen,gen3} /bin/rm -f ${RPM_BUILD_ROOT}%{_infodir}/dir -for mpi in %{mpi_list} +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 chrpath --delete ${RPM_BUILD_ROOT}/%{_libdir}/$mpi/bin/nc{copy,dump,gen,gen3} module purge done +find $RPM_BUILD_ROOT/%{_libdir} -name \*.la -delete %check @@ -239,9 +281,11 @@ fail=1 make -C build check || ( cat build/*/test-suite.log && exit $fail ) # Allow openmpi to run with more processes than cores export OMPI_MCA_rmaps_base_oversubscribe=1 +# openmpi 5+ +export PRTE_MCA_rmaps_default_mapping_policy=:oversubscribe # openmpi test hangs on armv7hl in h5_test after tst_h_rename %ifnarch armv7hl -for mpi in %{mpi_list} +for mpi in %{?mpi_list} do module load mpi/$mpi-%{_arch} make -C $mpi check || ( cat $mpi/*/test-suite.log && exit $fail ) @@ -262,6 +306,15 @@ done %{_bindir}/ncgen3 %{_bindir}/nc4print %{_bindir}/ocprint +%{_libdir}/hdf5/plugin/lib__nch5deflate.so +%{_libdir}/hdf5/plugin/lib__nch5shuffle.so +%{_libdir}/hdf5/plugin/lib__nch5bzip2.so +%{_libdir}/hdf5/plugin/lib__nch5zstd.so +%{_libdir}/hdf5/plugin/lib__nch5szip.so +%{_libdir}/hdf5/plugin/lib__nczhdf5filters.so +%{_libdir}/hdf5/plugin/lib__nczstdfilters.so +%{_libdir}/hdf5/plugin/lib__nch5fletcher32.so +%{_libdir}/hdf5/plugin/lib__nch5blosc.so %{_libdir}/*.so.%{sover}* %{_mandir}/man1/* @@ -273,6 +326,8 @@ done %{_includedir}/netcdf_dispatch.h %{_includedir}/netcdf_filter.h %{_includedir}/netcdf_filter_build.h +%{_includedir}/netcdf_filter_hdf5_build.h +%{_includedir}/netcdf_json.h %{_includedir}/netcdf_meta.h %{_includedir}/netcdf_mem.h %{_libdir}/libnetcdf.settings @@ -293,6 +348,7 @@ done %{_libdir}/mpich/bin/ncgen3 %{_libdir}/mpich/bin/nc4print %{_libdir}/mpich/bin/ocprint +%{_libdir}/mpich/hdf5/plugin/* %{_libdir}/mpich/lib/*.so.%{sover}* %doc %{_libdir}/mpich/share/man/man1/*.1* @@ -303,6 +359,8 @@ done %{_includedir}/mpich-%{_arch}/netcdf_dispatch.h %{_includedir}/mpich-%{_arch}/netcdf_filter.h %{_includedir}/mpich-%{_arch}/netcdf_filter_build.h +%{_includedir}/mpich-%{_arch}/netcdf_filter_hdf5_build.h +%{_includedir}/mpich-%{_arch}/netcdf_json.h %{_includedir}/mpich-%{_arch}/netcdf_meta.h %{_includedir}/mpich-%{_arch}/netcdf_mem.h %{_includedir}/mpich-%{_arch}/netcdf_par.h @@ -325,6 +383,7 @@ done %{_libdir}/openmpi/bin/ncgen3 %{_libdir}/openmpi/bin/nc4print %{_libdir}/openmpi/bin/ocprint +%{_libdir}/openmpi/hdf5/plugin/* %{_libdir}/openmpi/lib/*.so.%{sover}* %doc %{_libdir}/openmpi/share/man/man1/*.1* @@ -335,6 +394,8 @@ done %{_includedir}/openmpi-%{_arch}/netcdf_dispatch.h %{_includedir}/openmpi-%{_arch}/netcdf_filter.h %{_includedir}/openmpi-%{_arch}/netcdf_filter_build.h +%{_includedir}/openmpi-%{_arch}/netcdf_filter_hdf5_build.h +%{_includedir}/openmpi-%{_arch}/netcdf_json.h %{_includedir}/openmpi-%{_arch}/netcdf_meta.h %{_includedir}/openmpi-%{_arch}/netcdf_mem.h %{_includedir}/openmpi-%{_arch}/netcdf_par.h @@ -349,6 +410,55 @@ done %changelog +* Sat Dec 28 2024 Arkady L. Shane - 4.9.2-6 +- Rebuilt for MSVSphere 10 + +* Thu Jul 18 2024 Fedora Release Engineering - 4.9.2-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Tue Jan 30 2024 Orion Poplawski - 4.9.2-5 +- Add patch to fix compilation on i668 (FTBFS bz#2261400) +- Update license to BSD-3-Clause (SPDX) + +* Thu Jan 25 2024 Fedora Release Engineering - 4.9.2-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Sun Jan 21 2024 Fedora Release Engineering - 4.9.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Wed Dec 20 2023 Orion Poplawski - 4.9.2-2 +- Add upstream patch to fix octave-netcdf segfault on exit + +* Wed Nov 08 2023 Orion Poplawski - 4.9.2-1 +- Update to 4.9.2 +- Drop -DH5_USE_110_API + +* Wed Nov 08 2023 Orion Poplawski - 4.9.0-7 +- Rebuild with openmpi 5.0.0 - drops i686 +- Disable parallel tests on s390x - mpich test is hanging + +* Thu Jul 20 2023 Fedora Release Engineering - 4.9.0-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Thu Jan 19 2023 Fedora Release Engineering - 4.9.0-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Mon Dec 19 2022 Orion Poplawski - 4.9.0-4 +- Apply upstream patch to fix infinite loop in file inferencing + +* Fri Jul 22 2022 Fedora Release Engineering - 4.9.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Tue Jun 28 2022 Orion Poplawski - 4.9.0-2 +- Build with libzstd-devel + +* Sun Jun 26 2022 Orion Poplawski - 4.9.0-1 +- Update to 4.9.0 +- Make -Wl,--as-needed work + +* Thu Jan 20 2022 Fedora Release Engineering - 4.8.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + * Sun Nov 21 2021 Orion Poplawski - 4.8.1-2 - Rebuild for hdf5 1.12.1 diff --git a/sources b/sources deleted file mode 100644 index adb7a40..0000000 --- a/sources +++ /dev/null @@ -1 +0,0 @@ -SHA512 (netcdf-4.8.1.tar.gz) = c97207867abf10d414abf34624268710f5b812c26c38f97e73afe00558b3f07917331fbc7fdb9e70b09813acf15a9a09bae2c432a3266ce10a791b9472f87a42