diff --git a/.gitignore b/.gitignore index c3ffdf1..d3b8ef4 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ hdf-4.2.5.tar.bz2 /hdf-4.2.11.tar.bz2 /hdf-4.2.12.tar.bz2 /hdf-4.2.13.tar.bz2 +/hdf-4.2.14.tar.bz2 diff --git a/h4comp b/h4comp new file mode 100644 index 0000000..aeb861b --- /dev/null +++ b/h4comp @@ -0,0 +1,6 @@ +#!/bin/bash + +BITS=32 +[ -d /usr/lib64 ] && BITS=64 + +exec $0-${BITS} "$@" diff --git a/hdf-build.patch b/hdf-build.patch new file mode 100644 index 0000000..8e8a095 --- /dev/null +++ b/hdf-build.patch @@ -0,0 +1,67 @@ +diff -up hdf-4.2.14/java/examples/Makefile.am.build hdf-4.2.14/java/examples/Makefile.am +--- hdf-4.2.14/java/examples/Makefile.am.build 2018-06-26 22:42:58.000000000 -0600 ++++ hdf-4.2.14/java/examples/Makefile.am 2019-04-10 20:01:42.336828053 -0600 +@@ -12,8 +12,8 @@ classes: + test -d $(@D)/$(JAVAROOT) || $(MKDIR_P) $(@D)/$(JAVAROOT) + + pkgpath = examples +-hdfjarfile = jar$(PACKAGE_TARNAME)-$(PACKAGE_VERSION).jar +-jarfile = jar$(PACKAGE_TARNAME)examples.jar ++hdfjarfile = $(PACKAGE_TARNAME).jar ++jarfile = $(PACKAGE_TARNAME)examples.jar + + CLASSPATH_ENV=CLASSPATH=.:$(JAVAROOT):$(top_builddir)/java/src/$(hdfjarfile):$(top_srcdir)/java/lib/slf4j-api-1.7.5.jar:$(top_srcdir)/java/lib/ext/slf4j-simple-1.7.5.jar:$$CLASSPATH + AM_JAVACFLAGS = $(H4_JAVACFLAGS) -deprecation +diff -up hdf-4.2.14/java/src/jni/Makefile.am.build hdf-4.2.14/java/src/jni/Makefile.am +--- hdf-4.2.14/java/src/jni/Makefile.am.build 2018-06-26 22:42:58.000000000 -0600 ++++ hdf-4.2.14/java/src/jni/Makefile.am 2019-04-10 20:47:55.397873538 -0600 +@@ -14,7 +14,10 @@ AM_CPPFLAGS=-I$(top_srcdir)/hdf/src + -I$(top_builddir)/mfhdf/libsrc -I$(top_srcdir)/java/src/jni $(JNIFLAGS) + + # This is our main target +-lib_LTLIBRARIES=libhdf_java.la ++pkglib_LTLIBRARIES=libhdf_java.la ++ ++# No soname for JNI library ++libhdf_java_la_LDFLAGS = -avoid-version + + # Source files for the library + libhdf_java_la_SOURCES=hdfanImp.c hdfdfpalImp.c \ +diff -up hdf-4.2.14/java/src/Makefile.am.build hdf-4.2.14/java/src/Makefile.am +--- hdf-4.2.14/java/src/Makefile.am.build 2018-06-26 22:42:58.000000000 -0600 ++++ hdf-4.2.14/java/src/Makefile.am 2019-04-10 20:01:42.336828053 -0600 +@@ -13,8 +13,8 @@ JAVAROOT = .classes + classes: + test -d $(@D)/$(JAVAROOT) || $(MKDIR_P) $(@D)/$(JAVAROOT) + +-jarfile = jar$(PACKAGE_TARNAME)-$(PACKAGE_VERSION).jar +-hdf_javadir = $(libdir) ++jarfile = $(PACKAGE_TARNAME).jar ++hdf_javadir = $(prefix)/lib/java + + pkgpath = hdf/hdflib + CLASSPATH_ENV=CLASSPATH=.:$(top_srcdir)/java/lib/slf4j-api-1.7.5.jar:$$CLASSPATH +diff -up hdf-4.2.14/java/test/junit.sh.in.build hdf-4.2.14/java/test/junit.sh.in +--- hdf-4.2.14/java/test/junit.sh.in.build 2018-06-26 22:42:58.000000000 -0600 ++++ hdf-4.2.14/java/test/junit.sh.in 2019-04-10 20:01:42.337828056 -0600 +@@ -40,7 +40,7 @@ HDFLIB_HOME="$top_srcdir/java/lib" + BLDLIBDIR="$top_builddir/java/lib" + BLDDIR="." + HDFTEST_HOME="$top_srcdir/java/test" +-JARFILE=jar@PACKAGE_TARNAME@-@PACKAGE_VERSION@.jar ++JARFILE=@PACKAGE_TARNAME@.jar + TESTJARFILE=jar@PACKAGE_TARNAME@test.jar + test -d $BLDLIBDIR || mkdir -p $BLDLIBDIR + +diff -up hdf-4.2.14/java/test/Makefile.am.build hdf-4.2.14/java/test/Makefile.am +--- hdf-4.2.14/java/test/Makefile.am.build 2018-06-26 22:42:58.000000000 -0600 ++++ hdf-4.2.14/java/test/Makefile.am 2019-04-10 20:01:42.337828056 -0600 +@@ -12,7 +12,7 @@ classes: + test -d $(@D)/$(JAVAROOT) || $(MKDIR_P) $(@D)/$(JAVAROOT) + + pkgpath = test +-hdfjarfile = jar$(PACKAGE_TARNAME)-$(PACKAGE_VERSION).jar ++hdfjarfile = $(PACKAGE_TARNAME).jar + CLASSPATH_ENV=CLASSPATH=.:$(JAVAROOT):$(top_builddir)/java/src/$(hdfjarfile):$(top_srcdir)/java/lib/junit.jar:$(top_srcdir)/java/lib/hamcrest-core.jar:$(top_srcdir)/java/lib/slf4j-api-1.7.5.jar:$(top_srcdir)/java/lib/ext/slf4j-simple-1.7.5.jar:$$CLASSPATH + + jarfile = jar$(PACKAGE_TARNAME)test.jar diff --git a/hdf-examplesdir.patch b/hdf-examplesdir.patch index 87f2806..3bb66ab 100644 --- a/hdf-examplesdir.patch +++ b/hdf-examplesdir.patch @@ -1,6 +1,6 @@ -diff -up hdf/examples/Makefile.am hdf-4.2.12/hdf/examples/Makefile.am ---- hdf/examples/Makefile.am 2017-01-31 14:41:51.947802481 -0700 -+++ hdf/examples/Makefile.am 2017-01-31 14:42:34.883572782 -0700 +diff -up a/hdf/examples/Makefile.am b/hdf/examples/Makefile.am +--- a/hdf/examples/Makefile.am 2017-01-31 14:41:51.947802481 -0700 ++++ b/hdf/examples/Makefile.am 2017-01-31 14:42:34.883572782 -0700 @@ -46,8 +46,8 @@ INSTALL_TOP_FILES = README @@ -12,9 +12,9 @@ diff -up hdf/examples/Makefile.am hdf-4.2.12/hdf/examples/Makefile.am # How to build C programs using h4cc $(EXTRA_PROG): $(H4CC) -diff -up hdf/fortran/examples/Makefile.am hdf/fortran/examples/Makefile.am ---- hdf/fortran/examples/Makefile.am 2017-01-31 14:41:51.949802471 -0700 -+++ hdf/fortran/examples/Makefile.am 2017-01-31 14:43:07.968395906 -0700 +diff -up a/hdf/fortran/examples/Makefile.am b/hdf/fortran/examples/Makefile.am +--- a/hdf/fortran/examples/Makefile.am 2017-01-31 14:41:51.949802471 -0700 ++++ b/hdf/fortran/examples/Makefile.am 2017-01-31 14:43:07.968395906 -0700 @@ -41,7 +41,7 @@ INSTALL_SCRIPT_FILES = run-fortran-ex.sh @@ -24,9 +24,9 @@ diff -up hdf/fortran/examples/Makefile.am hdf/fortran/examples/Makefile.am # How to build Fortran programs using h4fc $(EXTRA_PROG): $(H4FC) -diff -up mfhdf/examples/Makefile.am mfhdf/examples/Makefile.am ---- mfhdf/examples/Makefile.am 2017-01-31 14:41:51.950802465 -0700 -+++ mfhdf/examples/Makefile.am 2017-01-31 14:43:23.376314066 -0700 +diff -up a/mfhdf/examples/Makefile.am b/mfhdf/examples/Makefile.am +--- a/mfhdf/examples/Makefile.am 2017-01-31 14:41:51.950802465 -0700 ++++ b/mfhdf/examples/Makefile.am 2017-01-31 14:43:23.376314066 -0700 @@ -23,7 +23,7 @@ SD_get_info.c SD_find_sds_by_name.c SD_set_get_dim_info.c \ SD_dimscale_vs_sds.c SD_set_attr.c SD_get_attr.c SD_chunking_example.c @@ -36,9 +36,9 @@ diff -up mfhdf/examples/Makefile.am mfhdf/examples/Makefile.am # How to build programs using h4cc $(EXTRA_PROG): $(H4CC) -diff -up mfhdf/fortran/examples/Makefile.am mfhdf/fortran/examples/Makefile.am ---- mfhdf/fortran/examples/Makefile.am 2017-01-31 14:41:51.952802455 -0700 -+++ mfhdf/fortran/examples/Makefile.am 2017-01-31 14:43:40.206224672 -0700 +diff -up a/mfhdf/fortran/examples/Makefile.am b/mfhdf/fortran/examples/Makefile.am +--- a/mfhdf/fortran/examples/Makefile.am 2017-01-31 14:41:51.952802455 -0700 ++++ b/mfhdf/fortran/examples/Makefile.am 2017-01-31 14:43:40.206224672 -0700 @@ -24,7 +24,7 @@ SD_set_attr.f SD_get_attr.f SD_compress_sds.f SD_chunking_example.f diff --git a/hdf.spec b/hdf.spec index 5730bc8..9ee420d 100644 --- a/hdf.spec +++ b/hdf.spec @@ -1,15 +1,15 @@ -%if 0%{?rhel} < 7 +%if 0%{?rhel} && 0%{?rhel} < 7 %{!?__global_ldflags: %global __global_ldflags -Wl,-z,relro} %endif Name: hdf -Version: 4.2.13 +Version: 4.2.14 Release: 9.0.riscv64%{?dist} Summary: A general purpose library and file format for storing scientific data License: BSD -Group: System Environment/Libraries -URL: http://hdfgroup.org/products/hdf4/index.html -Source0: ftp://ftp.hdfgroup.org/HDF/HDF_Current/src/%{name}-%{version}.tar.bz2 +URL: https://portal.hdfgroup.org/ +Source0: https://support.hdfgroup.org/ftp/HDF/releases/HDF%{version}/src/%{name}-%{version}.tar.bz2 +Source1: h4comp Patch0: hdf-4.2.5-maxavailfiles.patch Patch1: hdf-ppc.patch Patch2: hdf-4.2.4-sparc.patch @@ -29,74 +29,149 @@ Patch9: hdf-ppc64le.patch # Use only if java is disabled Patch10: hdf-avoid_syntax_error_el6.patch +# Fix java build +Patch11: hdf-build.patch + # Add support for RISC-V (riscv64) -Patch11: hdf-4.2.13-riscv64.patch +Patch20: hdf-4.2.13-riscv64.patch # For destdir/examplesdir patches -BuildRequires: automake libtool +BuildRequires: automake, libtool, gcc, gcc-c++ +BuildRequires: chrpath BuildRequires: flex byacc libjpeg-devel zlib-devel %{!?el6:libaec-devel} BuildRequires: libtirpc-devel BuildRequires: gcc-gfortran, gcc +BuildRequires: java-devel +BuildRequires: javapackages-tools +BuildRequires: hamcrest +BuildRequires: junit +BuildRequires: slf4j +Requires: %{name}-libs%{?_isa} = %{version}-%{release} + %description -HDF is a general purpose library and file format for storing scientific data. -HDF can store two primary objects: datasets and groups. A dataset is -essentially a multidimensional array of data elements, and a group is a -structure for organizing objects in an HDF file. Using these two basic -objects, one can create and store almost any kind of scientific data -structure, such as images, arrays of vectors, and structured and unstructured -grids. You can also mix and match them in HDF files according to your needs. +HDF4 is a general purpose library and file format for storing scientific data. +HDF4 can store two primary objects: datasets and groups. A dataset is +essentially a multidimensional array of data elements, and a group is a +structure for organizing objects in an HDF4 file. Using these two basic +objects, one can create and store almost any kind of scientific data +structure, such as images, arrays of vectors, and structured and unstructured +grids. You can also mix and match them in HDF4 files according to your needs. + %package devel -Summary: HDF development files -Group: Development/Libraries +Summary: HDF4 development files Provides: %{name}-static = %{version}-%{release} -Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: %{name}-libs%{?_isa} = %{version}-%{release} Requires: libjpeg-devel%{?_isa} Requires: libtirpc-devel%{?_isa} Requires: zlib-devel%{?_isa} %description devel -HDF development headers and libraries. +HDF4 development headers and libraries. + + +%package libs +Summary: HDF4 shared libraries + +%description libs +HDF4 shared libraries. + + +%package static +Summary: HDF4 static libraries +Requires: %{name}-devel = %{version}-%{release} + +%description static +HDF4 static libraries. + + +%package -n java-hdf +Summary: HDF4 java library +Requires: slf4j +Obsoletes: jhdf < 3.3.1-2 + +%description -n java-hdf +HDF4 java library + %prep %setup -q + %patch0 -p1 -b .maxavailfiles %patch1 -p1 -b .ppc %patch2 -p1 -b .sparc %patch3 -p1 -b .s390 %patch4 -p1 -b .arm %patch5 -p1 -b .destdir -%patch6 -p0 -b .examplesdir +%patch6 -p1 -b .examplesdir %patch8 -p1 -b .aarch64 %patch9 -p1 -b .ppc64le -%patch11 -p1 -b .riscv64 +%patch11 -p1 -b .build +%patch20 -p1 -b .riscv64 + +# Replace jars with system versions +find -name \*.jar -delete +ln -s %{_javadir}/hamcrest/core.jar java/lib/hamcrest-core.jar +ln -s %{_javadir}/junit.jar java/lib/junit.jar +ln -s %{_javadir}/slf4j/api.jar java/lib/slf4j-api-1.7.5.jar +ln -s %{_javadir}/slf4j/nop.jar java/lib/ext/slf4j-nop-1.7.5.jar +ln -s %{_javadir}/slf4j/simple.jar java/lib/ext/slf4j-simple-1.7.5.jar + +# Fix test output +junit_ver=$(sed -n '//{s/^.*>\([0-9]\.[0-9]*\)<.*/\1/;p;q}' /usr/share/maven-poms/junit.pom) +sed -i -e "s/JUnit version .*/JUnit version $junit_ver/" java/test/testfiles/JUnit-*.txt +>>>>>>> up/master ## Fix syntax error bacause 'CLASSPATH_ENV=$H4_CLASSPATH' line on epel6 builds # Use only if java is disabled -%if 0%{?rhel} < 7 +%if 0%{?rhel} && 0%{?rhel} < 7 %patch10 -p0 %endif -chmod a-x *hdf/*/*.c hdf/*/*.h +find . -type f -name "*.h" -exec chmod 0644 '{}' \; +find . -type f -name "*.c" -exec chmod 0644 '{}' \; + # restore include file timestamps modified by patching touch -c -r ./hdf/src/hdfi.h.ppc ./hdf/src/hdfi.h + %build + # For destdir/examplesdir patches autoreconf -vif + # avoid upstream compiler flags settings rm config/*linux-gnu + # TODO: upstream fix -# Shared libraries disabled: libmfhdf.so is not correctly compiled -# for missing link to libdf.so -export CFLAGS="%{optflags} -fPIC -I%{_includedir}/tirpc" -export LDFLAGS="%{__global_ldflags} -ltirpc" -export FFLAGS="%{optflags} -fPIC -ffixed-line-length-none" +# libmfhdf.so is link to libdf.so +export CFLAGS="%{optflags} -I%{_includedir}/tirpc" +export LIBS="-ltirpc" +%global _configure ../configure +# Java test needs this but doesn't create it +mkdir -p build-shared/java/lib +cd build-shared +# Java requires shared libraries, fortran requires static +%configure --disable-production --enable-java --disable-netcdf \ + --enable-shared=yes --enable-static=no --disable-fortran %{!?el6:--with-szlib} \ + --includedir=%{_includedir}/%{name} +%make_build +cd - +mkdir build-static +cd build-static +# Java requires shared libraries, fortran requires static + +# Temporary workaround for compiling on GCC-10 +%if 0%{?fedora} && 0%{?fedora} > 31 +export FCFLAGS="%{build_fflags} -fallow-argument-mismatch" +export FFLAGS="%{build_fflags} -fallow-argument-mismatch" +%endif %configure --disable-production --disable-java --disable-netcdf \ --enable-shared=no --enable-static=yes --enable-fortran %{!?el6:--with-szlib} \ - --includedir=%{_includedir}/%{name} --libdir=%{_libdir}/%{name} + --includedir=%{_includedir}/%{name} %make_build +cd - # correct the timestamps based on files used to generate the header files touch -c -r hdf/src/hdf.inc hdf/src/hdf.f90 @@ -104,10 +179,16 @@ touch -c -r hdf/src/dffunc.inc hdf/src/dffunc.f90 touch -c -r mfhdf/fortran/mffunc.inc mfhdf/fortran/mffunc.f90 # netcdf fortran include need same treatement, but they are not shipped + %install -%make_install +%make_install -C build-static +%make_install -C build-shared +chrpath --delete --keepgoing %{buildroot}%{_bindir}/* %{buildroot}%{_libdir}/%{name}/*.so.* || : + +install -pm 644 MANIFEST README.txt release_notes/*.txt %{buildroot}%{_pkgdocdir}/ rm -f %{buildroot}%{_libdir}/%{name}/*.la +rm -f %{buildroot}%{_libdir}/*.la #Don't conflict with netcdf for file in ncdump ncgen; do @@ -127,36 +208,101 @@ touch -c -r h4config.h h4config.h.tmp mv h4config.h.tmp h4config.h popd -# ./testdhf fails on f28-i386 only with -# --> /bin/sh: line 25: 22535 Segmentation fault (core dumped) srcdir="." ./${tname} >> ${log} 2>&1 -# but not by an arch-override=i386 ?! -%if 0%{?fedora} >= 28 -%ifnarch %{ix86} +#Fixup headers and scripts for multiarch +%if "%{_lib}" == "lib64" +#sed -i -e s/H5pubconf.h/H5pubconf-64.h/ %{buildroot}%{_includedir}/H5public.h +#mv %{buildroot}%{_includedir}/H5pubconf.h \ + #%{buildroot}%{_includedir}/H5pubconf-64.h +for x in h4cc h4fc +do + mv %{buildroot}%{_bindir}/${x} \ + %{buildroot}%{_bindir}/${x}-64 + install -m 0755 %SOURCE1 %{buildroot}%{_bindir}/${x} +done +%else +#sed -i -e s/H5pubconf.h/H5pubconf-32.h/ %{buildroot}%{_includedir}/H5public.h +#mv %{buildroot}%{_includedir}/H5pubconf.h \ + #%{buildroot}%{_includedir}/H5pubconf-32.h +for x in h4cc h4fc +do + mv %{buildroot}%{_bindir}/${x} \ + %{buildroot}%{_bindir}/${x}-32 + install -m 0755 %SOURCE1 %{buildroot}%{_bindir}/${x} +done +%endif + + %check -make -j1 check -%endif -%endif -%if 0%{?fedora} < 28 -%check -make -j1 check -%endif +make -j1 -C build-shared check +make -j1 -C build-static check + %files %license COPYING -%doc MANIFEST README.txt release_notes/*.txt -%exclude %{_defaultdocdir}/%{name}/examples +%{_pkgdocdir}/ +%exclude %{_pkgdocdir}/examples %{_bindir}/* +%exclude %{_bindir}/h4?c* +%{_libdir}/*.so.0* %{_mandir}/man1/*.gz %files devel +%{_bindir}/h4?c* %{_includedir}/%{name}/ -%{_libdir}/%{name}/ -%{_defaultdocdir}/%{name}/examples +%{_libdir}/*.so +%{_libdir}/*.settings +%{_pkgdocdir}/examples/ + +%files libs +%{_libdir}/*.so.0* + +%files static +%{_libdir}/*.a + +%files -n java-hdf +%{_jnidir}/hdf.jar +%{_libdir}/%{name}/libhdf_java.so + %changelog -* Tue Jun 05 2018 David Abdurachmanov - 4.2.13-9.0.riscv64 +* Sat Apr 25 2020 David Abdurachmanov - 4.2.14-9.0.riscv64 - Add support for RISC-V 64-bit (riscv64) [based on aarch64 patch] +* Thu Apr 02 2020 Björn Esser - 4.2.14-9 +- Fix string quoting for rpm >= 4.16 + +* Sun Feb 02 2020 Antonio Trande 4.2.14-8 +- Temporary workaround for compiling with GCC-10 + +* Wed Jan 29 2020 Fedora Release Engineering - 4.2.14-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Fri Nov 8 2019 Orion Poplawski - 4.2.14-6 +- Move compile scripts to hdf-devel and allow multilib install (bz#1769326) +- Split shared libraries into hdf-libs sub-package + +* Thu Jul 25 2019 Fedora Release Engineering - 4.2.14-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Wed Apr 10 2019 Orion Poplawski - 4.2.14-4 +- Move libraries into %%{_libdir} + +* Tue Apr 9 2019 Orion Poplawski - 4.2.14-3 +- Build shared libraries +- Enable java + +* Fri Feb 01 2019 Fedora Release Engineering - 4.2.14-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Sat Nov 03 2018 Antonio Trande 4.2.14-1 +- Release 4.2.14 + +* Sun Oct 7 2018 Orion Poplawski - 4.2.13-11 +- Use LIBS instead of LDFLAGS for -ltirpc + +* Fri Jul 13 2018 Fedora Release Engineering - 4.2.13-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + * Thu Feb 22 2018 Antonio Trande - 4.2.13-9 - Add gcc BR @@ -170,7 +316,7 @@ make -j1 check - Rebuild for gcc 8.0 * Sat Jan 20 2018 Antonio Trande 4.2.13-5 -- Enable szlib support +- Enable szlib support * Wed Jan 17 2018 Pavel Raiskup - 4.2.13-4 - rpc api moved from glibc to libtirpc: diff --git a/sources b/sources index 32094fd..89a96ac 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (hdf-4.2.13.tar.bz2) = d7be2b3650255590b72db4a6931325ec0af256db4b846cfe886c76bf24034901b2ba7a7e546566f426d265b1793287ea3f95d8fbd818a3d018fa6813a4541657 +SHA512 (hdf-4.2.14.tar.bz2) = 5689525e18bfc6be205a0a21cded68d66630020c9a1445ce5afae41d58246e26ed9ba349da1bb197c31557aba127f51a2b697a868ec7e2747ac6153858171718