# 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.12.1 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 !mips64 !riscv64" # blocked by java-jdk license="custom" options="!check" # test suite takes a very long time depends_dev="zlib-dev" makedepends="cmake $depends_dev gfortran java-jdk perl" subpackages="$pkgname-fortran java-$pkgname:java $pkgname-static $pkgname-doc $pkgname-dev" source="https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-${pkgver%.*}/hdf5-$pkgver/src/hdf5-$pkgver.tar.bz2" # secfixes: # 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 \ -DHDF5_BUILD_JAVA=ON \ -DJAVA_HOME=/usr/lib/jvm/default-jvm/ \ -DHDF5_ENABLE_Z_LIB_SUPPORT=ON \ -DHDF5_ENABLE_SZIP_SUPPORT=OFF \ -DHDF5_ENABLE_SZIP_ENCODING=OFF \ -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='${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 \ --without-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/ } fortran() { pkgdesc="Fortran bindings for HDF5 library" amove usr/lib/libhdf5*fortran.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/ } sha512sums=" 158a067ee284ccb9e2c4db12e9d37cf187d90d9ef1bed7a6303e2c3a2fd216d7b13a46c5f46018b097511281c4246156b6f917633ca88872f10f0ad04be285fd hdf5-1.12.1.tar.bz2 "