# Contributor: Isaac Dunham # Maintainer: Holger Jaekel # # 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.14.1_p2 _pkgver=${pkgver/_p/-} 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://support.hdfgroup.org/ftp/HDF5/releases/hdf5-${pkgver%.*}/hdf5-${pkgver%_*}/src/hdf5-$_pkgver.tar.bz2" builddir=$srcdir/$pkgname-$_pkgver # 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 # 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 don’t build with it, it’s 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":"$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=" e763b4f1da34d4099b119aeab5dcea0c573cd3dc8025d09dc3ebd9787260dfb4254f0552cceec59c8d6161329bfce30ccc5bc8a429b530ec03d019ff896d1f81 hdf5-1.14.1-2.tar.bz2 "