Update to 4.2.14

Build shared libraries
Enable java
This commit is contained in:
Orion Poplawski 2019-04-09 22:16:17 -06:00
parent 94fa2edf7d
commit 48393863d3
2 changed files with 146 additions and 18 deletions

52
hdf-build.patch Normal file
View File

@ -0,0 +1,52 @@
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-09 20:51:31.031211605 -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/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-09 21:20:56.625579495 -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-09 20:51:31.032211610 -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-09 20:51:31.033211614 -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

112
hdf.spec
View File

@ -4,7 +4,7 @@
Name: hdf Name: hdf
Version: 4.2.14 Version: 4.2.14
Release: 2%{?dist} Release: 3%{?dist}
Summary: A general purpose library and file format for storing scientific data Summary: A general purpose library and file format for storing scientific data
License: BSD License: BSD
URL: https://portal.hdfgroup.org/ URL: https://portal.hdfgroup.org/
@ -28,23 +28,34 @@ Patch9: hdf-ppc64le.patch
# Use only if java is disabled # Use only if java is disabled
Patch10: hdf-avoid_syntax_error_el6.patch Patch10: hdf-avoid_syntax_error_el6.patch
# Fix java build
Patch11: hdf-build.patch
# For destdir/examplesdir patches # For destdir/examplesdir patches
BuildRequires: automake, libtool, gcc, gcc-c++ BuildRequires: automake, libtool, gcc, gcc-c++
BuildRequires: chrpath
BuildRequires: flex byacc libjpeg-devel zlib-devel %{!?el6:libaec-devel} BuildRequires: flex byacc libjpeg-devel zlib-devel %{!?el6:libaec-devel}
BuildRequires: libtirpc-devel BuildRequires: libtirpc-devel
BuildRequires: gcc-gfortran, gcc BuildRequires: gcc-gfortran, gcc
BuildRequires: java-devel
BuildRequires: javapackages-tools
BuildRequires: hamcrest
BuildRequires: junit
BuildRequires: slf4j
%description %description
HDF is a general purpose library and file format for storing scientific data. HDF4 is a general purpose library and file format for storing scientific data.
HDF can store two primary objects: datasets and groups. A dataset is HDF4 can store two primary objects: datasets and groups. A dataset is
essentially a multidimensional array of data elements, and a group is a essentially a multidimensional array of data elements, and a group is a
structure for organizing objects in an HDF file. Using these two basic structure for organizing objects in an HDF4 file. Using these two basic
objects, one can create and store almost any kind of scientific data objects, one can create and store almost any kind of scientific data
structure, such as images, arrays of vectors, and structured and unstructured 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. grids. You can also mix and match them in HDF4 files according to your needs.
%package devel %package devel
Summary: HDF development files Summary: HDF4 development files
Provides: %{name}-static = %{version}-%{release} Provides: %{name}-static = %{version}-%{release}
Requires: %{name}%{?_isa} = %{version}-%{release} Requires: %{name}%{?_isa} = %{version}-%{release}
Requires: libjpeg-devel%{?_isa} Requires: libjpeg-devel%{?_isa}
@ -52,7 +63,25 @@ Requires: libtirpc-devel%{?_isa}
Requires: zlib-devel%{?_isa} Requires: zlib-devel%{?_isa}
%description devel %description devel
HDF development headers and libraries. HDF4 development headers and 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 %prep
%setup -q %setup -q
@ -66,6 +95,19 @@ HDF development headers and libraries.
%patch6 -p1 -b .examplesdir %patch6 -p1 -b .examplesdir
%patch8 -p1 -b .aarch64 %patch8 -p1 -b .aarch64
%patch9 -p1 -b .ppc64le %patch9 -p1 -b .ppc64le
%patch11 -p1 -b .build
# 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
## Fix syntax error bacause 'CLASSPATH_ENV=$H4_CLASSPATH' line on epel6 builds ## Fix syntax error bacause 'CLASSPATH_ENV=$H4_CLASSPATH' line on epel6 builds
# Use only if java is disabled # Use only if java is disabled
@ -79,6 +121,7 @@ find . -type f -name "*.c" -exec chmod 0644 '{}' \;
# restore include file timestamps modified by patching # restore include file timestamps modified by patching
touch -c -r ./hdf/src/hdfi.h.ppc ./hdf/src/hdfi.h touch -c -r ./hdf/src/hdfi.h.ppc ./hdf/src/hdfi.h
%build %build
# For destdir/examplesdir patches # For destdir/examplesdir patches
@ -86,15 +129,27 @@ autoreconf -vif
# avoid upstream compiler flags settings # avoid upstream compiler flags settings
rm config/*linux-gnu rm config/*linux-gnu
# TODO: upstream fix # TODO: upstream fix
# Shared libraries disabled: libmfhdf.so is not correctly compiled # libmfhdf.so is link to libdf.so
# for missing link to libdf.so export CFLAGS="%{optflags} -I%{_includedir}/tirpc"
export CFLAGS="%{optflags} -fPIC -I%{_includedir}/tirpc"
export LIBS="-ltirpc" export LIBS="-ltirpc"
export FFLAGS="%{optflags} -fPIC -ffixed-line-length-none" %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} --libdir=%{_libdir}/%{name}
%make_build
cd -
mkdir build-static
cd build-static
# Java requires shared libraries, fortran requires static
%configure --disable-production --disable-java --disable-netcdf \ %configure --disable-production --disable-java --disable-netcdf \
--enable-shared=no --enable-static=yes --enable-fortran %{!?el6:--with-szlib} \ --enable-shared=no --enable-static=yes --enable-fortran %{!?el6:--with-szlib} \
--includedir=%{_includedir}/%{name} --libdir=%{_libdir}/%{name} --includedir=%{_includedir}/%{name} --libdir=%{_libdir}/%{name}
%make_build %make_build
cd -
# correct the timestamps based on files used to generate the header files # correct the timestamps based on files used to generate the header files
touch -c -r hdf/src/hdf.inc hdf/src/hdf.f90 touch -c -r hdf/src/hdf.inc hdf/src/hdf.f90
@ -102,8 +157,11 @@ touch -c -r hdf/src/dffunc.inc hdf/src/dffunc.f90
touch -c -r mfhdf/fortran/mffunc.inc mfhdf/fortran/mffunc.f90 touch -c -r mfhdf/fortran/mffunc.inc mfhdf/fortran/mffunc.f90
# netcdf fortran include need same treatement, but they are not shipped # netcdf fortran include need same treatement, but they are not shipped
%install %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}/ install -pm 644 MANIFEST README.txt release_notes/*.txt %{buildroot}%{_pkgdocdir}/
@ -128,22 +186,40 @@ touch -c -r h4config.h h4config.h.tmp
mv h4config.h.tmp h4config.h mv h4config.h.tmp h4config.h
popd popd
%check %check
make -j1 check make -j1 -C build-shared check
make -j1 -C build-static check
%files %files
%license COPYING %license COPYING
%{_pkgdocdir}/ %{_pkgdocdir}/
%exclude %{_pkgdocdir}/examples %exclude %{_pkgdocdir}/examples
%{_bindir}/* %{_bindir}/*
%dir %{_libdir}/%{name}
%{_libdir}/%{name}/*.so.0*
%{_mandir}/man1/*.gz %{_mandir}/man1/*.gz
%files devel %files devel
%{_includedir}/%{name}/ %{_includedir}/%{name}/
%{_libdir}/%{name}/ %{_libdir}/%{name}/*.so
%{_libdir}/%{name}/*.settings
%{_pkgdocdir}/examples/ %{_pkgdocdir}/examples/
%files static
%{_libdir}/%{name}/*.a
%files -n java-hdf
%{_jnidir}/hdf.jar
%{_libdir}/%{name}/libhdf_java.so
%changelog %changelog
* 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 * Fri Feb 01 2019 Fedora Release Engineering <releng@fedoraproject.org> - 4.2.14-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild - Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
@ -169,7 +245,7 @@ make -j1 check
- Rebuild for gcc 8.0 - Rebuild for gcc 8.0
* Sat Jan 20 2018 Antonio Trande <sagitter@fedoraproject.org> 4.2.13-5 * 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 * Wed Jan 17 2018 Pavel Raiskup <praiskup@redhat.com> - 4.2.13-4
- rpc api moved from glibc to libtirpc: - rpc api moved from glibc to libtirpc: