diff --git a/.gitignore b/.gitignore index fa474fc..f990a65 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,4 @@ netcdf-4.1.1.tar.gz /netcdf-4.7.3.tar.gz /netcdf-4.8.0.tar.gz /netcdf-4.8.1.tar.gz +/netcdf-4.9.0.tar.gz diff --git a/netcdf-plugin.patch b/netcdf-plugin.patch new file mode 100644 index 0000000..f4456d3 --- /dev/null +++ b/netcdf-plugin.patch @@ -0,0 +1,107 @@ +diff --git a/plugins/Makefile.am b/plugins/Makefile.am +index 777495ff..bed4bec6 100644 +--- a/plugins/Makefile.am ++++ b/plugins/Makefile.am +@@ -5,7 +5,7 @@ + include $(top_srcdir)/lib_flags.am + + AM_LDFLAGS += -module -avoid-version -shared -export-dynamic \ +- -rpath ${abs_builddir} ${NOUNDEFINED} ++ ${NOUNDEFINED} + + # Create an alternate directory if not installing or for noinst installs. + ALTPLUGINDIR = ${abs_top_builddir}/plugins/plugindir +@@ -19,17 +19,6 @@ endif + + plugin_LTLIBRARIES = + +-# Apparently one cannot have plugin_LTLIBRARIES and also noinst_LTLIBRARIES. +-# So create a tmp location for "noinst" shared libraries. +-tmpdir = ${ALTPLUGINDIR} +- +-tmp_LTLIBRARIES = +- +-# 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 +- + if ISMINGW + LDADD = ${top_builddir}/liblib/libnetcdf.la + endif +@@ -55,15 +44,10 @@ lib__nch5shuffle_la_SOURCES = H5Zshuffle.c + lib__nch5fletcher32_la_SOURCES = H5Zfletcher32.c H5checksum.c + lib__nch5deflate_la_SOURCES = H5Zdeflate.c + +-lib__nch5shuffle_la_LDFLAGS = ${plugin_version_info} +-lib__nch5deflate_la_LDFLAGS = ${plugin_version_info} +-lib__nch5fletcher32_la_LDFLAGS = ${plugin_version_info} +- + # Need our version of szip if libsz available and we are not using HDF5 + if HAVE_SZ + plugin_LTLIBRARIES += lib__nch5szip.la + lib__nch5szip_la_SOURCES = H5Zszip.c H5Zszip.h +-lib__nch5szip_la_LDFLAGS = ${plugin_version_info} + endif + + endif # ENABLE_NCZARR_FILTERS +@@ -72,20 +56,20 @@ if ENABLE_PLUGINS + + # The NCZarr codec libraries + lib__nczstdfilters_la_SOURCES = NCZstdfilters.c ++lib__nczstdfilters_la_LIBADD = ${top_builddir}/liblib/libnetcdf.la + lib__nczhdf5filters_la_SOURCES = NCZhdf5filters.c ++lib__nczhdf5filters_la_LIBADD = ${top_builddir}/liblib/libnetcdf.la + + plugin_LTLIBRARIES += lib__nczhdf5filters.la + plugin_LTLIBRARIES += lib__nczstdfilters.la + + if HAVE_BLOSC + lib__nch5blosc_la_SOURCES = H5Zblosc.c H5Zblosc.h +-lib__nch5blosc_la_LDFLAGS = ${plugin_version_info} + plugin_LTLIBRARIES += lib__nch5blosc.la + endif + + if HAVE_ZSTD + lib__nch5zstd_la_SOURCES = H5Zzstd.c H5Zzstd.h +-lib__nch5zstd_la_LDFLAGS = ${plugin_version_info} + plugin_LTLIBRARIES += lib__nch5zstd.la + endif + +@@ -95,20 +79,22 @@ endif #ENABLE_PLUGINS + # Need two distinct instances + lib__nch5noop_la_SOURCES = H5Znoop.c H5Zutil.c h5noop.h + lib__nch5noop1_la_SOURCES = H5Znoop1.c H5Zutil.c h5noop.h +-lib__nch5noop_la_LDFLAGS = ${plugin_version_info} +-lib__nch5noop1_la_LDFLAGS = ${plugin_version_info} + + # The misc filter is to allow testing of filter arguments + lib__nch5misc_la_SOURCES = H5Zmisc.c H5Zutil.c h5misc.h +-lib__nch5misc_la_LDFLAGS = ${plugin_version_info} + lib__nczmisc_la_SOURCES = NCZmisc.c +-lib__nczmisc_la_LDFLAGS = ${plugin_version_info} + + # Provide a filter to test missing filter + lib__nch5unknown_la_SOURCES = H5Zunknown.c +-lib__nch5unknown_la_LDFLAGS = ${plugin_version_info} + +-tmp_LTLIBRARIES += lib__nch5noop.la lib__nch5noop1.la lib__nch5misc.la lib__nczmisc.la lib__nch5unknown.la ++# These libraries are needed only for testing, so we will remove them from the install location ++# via install-data-hook below. This seems to be the simplest method to get libtool to build ++# a local shared library. ++CHECKLIBS = lib__nch5noop.la lib__nch5noop1.la lib__nch5misc.la lib__nczmisc.la lib__nch5unknown.la ++plugin_LTLIBRARIES += ${CHECKLIBS} ++ ++install-data-hook: ++ cd $(DESTDIR)$(plugindir) && rm -f $(CHECKLIBS) $(CHECKLIBS:.la=.so) + + # Bzip2 is used to test more complex filters + lib__nch5bzip2_la_SOURCES = H5Zbzip2.c h5bzip2.h +@@ -117,7 +103,6 @@ EXTRA_DIST += ${BZIP2SRC} BZIP2_LICENSE + if HAVE_LOCAL_BZ2 + lib__nch5bzip2_la_SOURCES += ${BZIP2SRC} + endif +-lib__nch5bzip2_la_LDFLAGS = ${plugin_version_info} + plugin_LTLIBRARIES += lib__nch5bzip2.la + + endif #ENABLE_FILTER_TESTING diff --git a/netcdf.spec b/netcdf.spec index b34a636..fea3bea 100644 --- a/netcdf.spec +++ b/netcdf.spec @@ -1,22 +1,26 @@ %global sover 19 Name: netcdf -Version: 4.8.1 -Release: 3%{?dist} +Version: 4.9.0 +Release: 1%{?dist} Summary: Libraries for the Unidata network Common Data Form License: NetCDF URL: http://www.unidata.ucar.edu/software/netcdf/ Source0: https://github.com/Unidata/netcdf-c/archive/v%{version}/%{name}-%{version}.tar.gz +# Fix plugins - https://github.com/Unidata/netcdf-c/pull/2431 +Patch0: netcdf-plugin.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: m4 BuildRequires: zlib-devel %ifarch %{valgrind_arches} @@ -160,6 +164,8 @@ NetCDF parallel openmpi static libraries %prep %autosetup -p1 -n %{name}-c-%{version} +# For Patch0 +./bootstrap %build @@ -183,7 +189,14 @@ 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 @@ -203,7 +216,14 @@ do --includedir=%{_includedir}/$mpi-%{_arch} \ --datarootdir=%{_libdir}/$mpi/share \ --mandir=%{_libdir}/$mpi/share/man \ + --with-plugin-dir=%{_libdir}/$mpi/hdf5/plugin \ --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 @@ -262,6 +282,7 @@ done %{_bindir}/ncgen3 %{_bindir}/nc4print %{_bindir}/ocprint +%{_libdir}/hdf5/plugin/* %{_libdir}/*.so.%{sover}* %{_mandir}/man1/* @@ -273,6 +294,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 +316,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 +327,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 +351,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 +362,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 +378,10 @@ done %changelog +* 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 diff --git a/sources b/sources index adb7a40..c32e7be 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (netcdf-4.8.1.tar.gz) = c97207867abf10d414abf34624268710f5b812c26c38f97e73afe00558b3f07917331fbc7fdb9e70b09813acf15a9a09bae2c432a3266ce10a791b9472f87a42 +SHA512 (netcdf-4.9.0.tar.gz) = 62cb593b99a6e9c56426175d141907572d3974de8dc39549c85337acf410539f9b7dcd9a375808e271da1d0dc93fce7586b955eddd2bb45901d9cc48a72db705