Merge remote-tracking branch 'up/master' into master-riscv64

Signed-off-by: David Abdurachmanov <david.abdurachmanov@sifive.com>
This commit is contained in:
David Abdurachmanov 2020-04-25 10:38:51 +03:00
commit 1a8ed3a823
Signed by: davidlt
GPG Key ID: 8B7F1DA0E2C9FDBB
6 changed files with 280 additions and 60 deletions

1
.gitignore vendored
View File

@ -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

6
h4comp Normal file
View File

@ -0,0 +1,6 @@
#!/bin/bash
BITS=32
[ -d /usr/lib64 ] && BITS=64
exec $0-${BITS} "$@"

67
hdf-build.patch Normal file
View File

@ -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

View File

@ -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

240
hdf.spec
View File

@ -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 '/<version>/{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 <david.abdurachmanov@gmail.com> - 4.2.13-9.0.riscv64
* Sat Apr 25 2020 David Abdurachmanov <david.abdurachmanov@sifive.com> - 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 <besser82@fedoraproject.org> - 4.2.14-9
- Fix string quoting for rpm >= 4.16
* Sun Feb 02 2020 Antonio Trande <sagitter@fedoraproject.org> 4.2.14-8
- Temporary workaround for compiling with GCC-10
* Wed Jan 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 4.2.14-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Fri Nov 8 2019 Orion Poplawski <orion@nwra.com> - 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 <releng@fedoraproject.org> - 4.2.14-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Wed Apr 10 2019 Orion Poplawski <orion@nwra.com> - 4.2.14-4
- Move libraries into %%{_libdir}
* Tue Apr 9 2019 Orion Poplawski <orion@nwra.com> - 4.2.14-3
- Build shared libraries
- Enable java
* Fri Feb 01 2019 Fedora Release Engineering <releng@fedoraproject.org> - 4.2.14-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Sat Nov 03 2018 Antonio Trande <sagitter@fedoraproject.org> 4.2.14-1
- Release 4.2.14
* Sun Oct 7 2018 Orion Poplawski <orion@nwra.com> - 4.2.13-11
- Use LIBS instead of LDFLAGS for -ltirpc
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 4.2.13-10
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Thu Feb 22 2018 Antonio Trande <sagitter@fedoraproject.org> - 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 <sagitter@fedoraproject.org> 4.2.13-5
- Enable szlib support
- Enable szlib support
* Wed Jan 17 2018 Pavel Raiskup <praiskup@redhat.com> - 4.2.13-4
- rpc api moved from glibc to libtirpc:

View File

@ -1 +1 @@
SHA512 (hdf-4.2.13.tar.bz2) = d7be2b3650255590b72db4a6931325ec0af256db4b846cfe886c76bf24034901b2ba7a7e546566f426d265b1793287ea3f95d8fbd818a3d018fa6813a4541657
SHA512 (hdf-4.2.14.tar.bz2) = 5689525e18bfc6be205a0a21cded68d66630020c9a1445ce5afae41d58246e26ed9ba349da1bb197c31557aba127f51a2b697a868ec7e2747ac6153858171718