aports/community/hdf5/APKBUILD
Holger Jaekel bbed5c792a community/hdf5: new subpackages, fix SZIP support, enable tests
new subpackages for -tools, -cpp, -hl, hl-fortran, -hl-cpp
enable SZIP support in configuration script
enable tests and add checkdepends
2022-08-25 20:25:30 +00:00

174 lines
5.2 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Contributor: Isaac Dunham <ibid.ag@gmail.com>
# Maintainer: Holger Jaekel <holger.jaekel@gmx.de>
#
# HDF5 depends on zlib and provides a C interface by default.
# Optionally, it can be built with szip (which has limitations on
# commercial use and thus is non-free), MPI, and C++ and Fortran bindings.
# C++ and Fortran bindings may not be thread-safe:
# building either and passing --enable-threadsafe is unsupported.
# Additionally, the 'high-level' bindings are incompatible with threadsafe
# builds, due to inadequate locking.
pkgname=hdf5
pkgver=1.12.2
pkgrel=1
pkgdesc="HDF5 is a data model, library, and file format for storing and managing data"
url="https://www.hdfgroup.org/solutions/hdf5/"
arch="all"
license="custom"
depends_dev="zlib-dev"
makedepends="cmake $depends_dev gfortran libaec-dev perl"
checkdepends="diffutils"
subpackages="$pkgname-tools $pkgname-fortran $pkgname-cpp $pkgname-hl $pkgname-hl-fortran:hl_fortran $pkgname-hl-cpp:hl_cpp $pkgname-static $pkgname-doc $pkgname-dev"
source="https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-${pkgver%.*}/hdf5-$pkgver/src/hdf5-$pkgver.tar.bz2"
# Optional dependency java-jdk is not available on riscv64
# Tests fail on s390x and x86
_with_java=""
_enable_java=""
case "$CARCH" in
riscv64 | s390x | x86) ;;
*)
makedepends="$makedepends openjdk8"
subpackages="$subpackages java-$pkgname:java"
_with_java="-DHDF5_BUILD_JAVA=ON -DJAVA_HOME=/usr/lib/jvm/default-jvm"
_enable_java="--enable-java"
;;
esac
# secfixes:
# 1.12.2-r0:
# - CVE-2018-17432
# 1.12.1-r0:
# - CVE-2018-11206
# - CVE-2018-13869
# - CVE-2018-13870
# - CVE-2018-14033
# - CVE-2018-14460
# - CVE-2018-17435
# - CVE-2019-9151
# - CVE-2020-10811
prepare() {
default_prepare
update_config_sub
update_config_guess
}
build() {
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
export PATH=/usr/lib/jvm/default-jvm/bin:$PATH
# Crazy workaround: run CMake to generate pkg-config file
# 2nd workaround: cmake creates the file pac_Cconftest.out in the current
# directory, but checks if it is successfully created in the build dir.
# So the current directory must be build.
mkdir build && cd build
cmake \
-DCMAKE_INSTALL_PREFIX=/usr \
-DBUILD_SHARED_LIBS=True \
-DCMAKE_BUILD_TYPE=None \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DHDF5_BUILD_HL_LIB=ON \
-DHDF5_BUILD_CPP_LIB=ON \
-DHDF5_BUILD_FORTRAN=ON \
$_with_java \
-DHDF5_ENABLE_Z_LIB_SUPPORT=ON \
-DHDF5_ENABLE_SZIP_SUPPORT=ON \
-DHDF5_ENABLE_SZIP_ENCODING=ON \
-DUSE_LIBAEC=ON \
-DDEFAULT_API_VERSION=v18 \
$CMAKE_CROSSOPTS ..
cd $builddir
# But dont build with it, its quite broken
./configure \
--prefix=/usr \
--docdir=/usr/share/doc/hdf5/ \
--with-examplesdir='$prefix/share/doc/hdf5/examples' \
--enable-static \
--disable-sharedlib-rpath \
--enable-build-mode=production \
--enable-hl \
--enable-cxx \
--enable-fortran \
$_enable_java \
--with-pic \
--with-zlib \
--with-szlib \
--with-default-api-version=v18
make
}
check() {
# Without this, checks are failing with messages like
# "error while loading shared libraries: libhdf5.so.101: cannot open shared object file: No such file or directory"
export LD_LIBRARY_PATH="$srcdir"/$pkgname-${pkgver/_/-}/src/.libs/
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":"$srcdir"/$pkgname-${pkgver/_/-}/c++/src/.libs/
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":"$srcdir"/$pkgname-${pkgver/_/-}/fortran/src/.libs/
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":"$srcdir"/$pkgname-${pkgver/_/-}/hl/src/.libs/
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":"$srcdir"/$pkgname-${pkgver/_/-}/hl/c++/src/.libs/
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":"$srcdir"/$pkgname-${pkgver/_/-}/hl/fortran/src/.libs/
make check
}
package() {
make DESTDIR="$pkgdir" install
install -Dm0644 COPYING "$pkgdir"/usr/share/licenses/"$pkgname"/COPYING
# Install pkg-config files from CMake tree
install -Dm644 build/CMakeFiles/hdf5*.pc -t "$pkgdir"/usr/lib/pkgconfig/
}
tools() {
pkgdesc="Runtime tools for HDF5 library"
amove usr/bin/*
}
fortran() {
pkgdesc="Fortran runtime files for serial platforms for HDF5 library"
amove usr/lib/libhdf5_fortran.so.*
}
cpp() {
pkgdesc="C++ runtime files for serial platforms for HDF5 library"
amove usr/lib/libhdf5_cpp.so.*
}
hl() {
pkgdesc="High Level C API runtime files for serial platforms for HDF5 library"
amove usr/lib/libhdf5_hl.so.*
}
hl_fortran() {
pkgdesc="High Level Fortran runtime files for serial platforms for HDF5 library"
amove usr/lib/libhdf5hl_fortran.so.*
}
hl_cpp() {
pkgdesc="High Level C++ runtime files for serial platforms for HDF5 library"
amove usr/lib/libhdf5_hl_cpp.so.*
}
java() {
pkgdesc="Java bindings for HDF5 library"
mkdir -p "$subpkgdir"/usr/share/java/
mkdir -p "$subpkgdir"/usr/lib/jni/
mv "$pkgdir"/usr/lib/jarhdf5-$pkgver.jar "$subpkgdir"/usr/share/java/
ln -s jarhdf5-$pkgver.jar "$subpkgdir"/usr/share/java/jarhdf5.jar
mv "$pkgdir"/usr/lib/libhdf5_java.so "$subpkgdir"/usr/lib/jni/
}
dev() {
default_dev
amove usr/lib/libhdf5.settings
}
sha512sums="
cbb4663570de76b11adb6bf62cfdb754371d31eeab04691479a5764a45207a9c1309665ab80f51c63a4b9b87354f9cbe6835cef506a9fd554d142c6d2bec21e5 hdf5-1.12.2.tar.bz2
"