aports/community/hdf5/APKBUILD

179 lines
5.4 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
_basepkgver=1.14.4
_suffixpkgver=2
pkgver=$_basepkgver.$_suffixpkgver
pkgrel=0
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://github.com/HDFGroup/hdf5/releases/download/hdf5_$pkgver/hdf5-$_basepkgver-$_suffixpkgver.tar.gz
10-version.patch"
builddir=$srcdir/$pkgname-$_basepkgver-$_suffixpkgver
# Optional dependency java-jdk is not available on riscv64 and loongarch64
# Tests fail on s390x and x86
_with_java=""
_enable_java=""
case "$CARCH" in
riscv64 | s390x | x86 | loongarch64) ;;
*)
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
# Don't mess with build flags
sed -e '/-Werror/d' -i configure
}
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='/usr/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":"$builddir/c++/src/.libs/"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":"$builddir/fortran/src/.libs/"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":"$builddir/hl/src/.libs/"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":"$builddir/hl/c++/src/.libs/"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":"$builddir/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-$_basepkgver.jar "$subpkgdir"/usr/share/java/
ln -s jarhdf5-$_basepkgver.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="
f1714b7999468d580b7cae2e575d3d7f31cea2fb81bfa4e37abd248d7223476b2351d1714197ace04eee970b451cf1f6971f5a291fd7426398737b8d7eb26924 hdf5-1.14.4-2.tar.gz
4648fea26aebc3fe34befd99ce58adbef5f22bac96cda68f1154bb09b8a2d5bca07023e884615235741767927cf051340544df6a35e33b2d09cfd5e7c5540389 10-version.patch
"