From 71879498177f48478218574806d9b0ab08c3ad14 Mon Sep 17 00:00:00 2001 From: Thomas Gerbet Date: Sun, 4 Apr 2021 13:05:19 +0200 Subject: [PATCH 1/4] hdf5: make possible to use the v1.10 API --- pkgs/tools/misc/hdf5/default.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkgs/tools/misc/hdf5/default.nix b/pkgs/tools/misc/hdf5/default.nix index 712fae7f71f..37ebbe630ca 100644 --- a/pkgs/tools/misc/hdf5/default.nix +++ b/pkgs/tools/misc/hdf5/default.nix @@ -10,6 +10,7 @@ , enableShared ? !stdenv.hostPlatform.isStatic , javaSupport ? false , jdk +, usev110Api ? false }: # cpp and mpi options are mutually exclusive @@ -50,7 +51,8 @@ stdenv.mkDerivation rec { ++ optional (szip != null) "--with-szlib=${szip}" ++ optionals mpiSupport ["--enable-parallel" "CC=${mpi}/bin/mpicc"] ++ optional enableShared "--enable-shared" - ++ optional javaSupport "--enable-java"; + ++ optional javaSupport "--enable-java" + ++ optional usev110Api "--with-default-api-version=v110"; patches = [ ./bin-mv.patch From 5196dcf353e0c2d048a5479a3ecb417e13e808dd Mon Sep 17 00:00:00 2001 From: Thomas Gerbet Date: Sun, 4 Apr 2021 13:05:49 +0200 Subject: [PATCH 2/4] vigra: use the HDF5 v1.10 API vigra is not yet compatible with the v1.12 API [0][1]. [0] https://github.com/ukoethe/vigra/issues/476 [1] https://github.com/ukoethe/vigra/issues/476 --- pkgs/top-level/all-packages.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index a2899a68bc5..0c4c579a754 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -17623,7 +17623,9 @@ in inherit (llvmPackages) openmp; }; - vigra = callPackage ../development/libraries/vigra { }; + vigra = callPackage ../development/libraries/vigra { + hdf5 = hdf5.override { usev110Api = true; }; + }; vlock = callPackage ../misc/screensavers/vlock { }; From b9fcaefeb36f2efa1c157f4bd4e947ab54343248 Mon Sep 17 00:00:00 2001 From: Thomas Gerbet Date: Tue, 6 Apr 2021 19:19:28 +0200 Subject: [PATCH 3/4] hdf5_1_10: init at 1.10.7 Introduce hdf5_1_10 so it can be used by packages encountering issues hdf5 1.12.0. --- pkgs/tools/misc/hdf5/1.10.nix | 50 +++++++++++++++++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 ++ 2 files changed, 52 insertions(+) create mode 100644 pkgs/tools/misc/hdf5/1.10.nix diff --git a/pkgs/tools/misc/hdf5/1.10.nix b/pkgs/tools/misc/hdf5/1.10.nix new file mode 100644 index 00000000000..1a972daf610 --- /dev/null +++ b/pkgs/tools/misc/hdf5/1.10.nix @@ -0,0 +1,50 @@ +{ lib, stdenv +, fetchurl +, removeReferencesTo +, zlib ? null +, enableShared ? !stdenv.hostPlatform.isStatic +}: + +let inherit (lib) optional optionals; in + +stdenv.mkDerivation rec { + version = "1.10.7"; + pname = "hdf5"; + src = fetchurl { + url = "https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-${lib.versions.majorMinor version}/${pname}-${version}/src/${pname}-${version}.tar.bz2"; + sha256 = "0pm5xxry55i0h7wmvc7svzdaa90rnk7h78rrjmnlkz2ygsn8y082"; + }; + + outputs = [ "out" "dev" ]; + + nativeBuildInputs = [ removeReferencesTo ]; + + propagatedBuildInputs = optional (zlib != null) zlib; + + configureFlags = optional enableShared "--enable-shared"; + + patches = [ + ./bin-mv.patch + ]; + + postInstall = '' + find "$out" -type f -exec remove-references-to -t ${stdenv.cc} '{}' + + moveToOutput 'bin/h5cc' "''${!outputDev}" + moveToOutput 'bin/h5c++' "''${!outputDev}" + moveToOutput 'bin/h5fc' "''${!outputDev}" + moveToOutput 'bin/h5pcc' "''${!outputDev}" + ''; + + meta = { + description = "Data model, library, and file format for storing and managing data"; + longDescription = '' + HDF5 supports an unlimited variety of datatypes, and is designed for flexible and efficient + I/O and for high volume and complex data. HDF5 is portable and is extensible, allowing + applications to evolve in their use of HDF5. The HDF5 Technology suite includes tools and + applications for managing, manipulating, viewing, and analyzing data in the HDF5 format. + ''; + license = lib.licenses.bsd3; # Lawrence Berkeley National Labs BSD 3-Clause variant + homepage = "https://www.hdfgroup.org/HDF5/"; + platforms = lib.platforms.unix; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 0c4c579a754..17614ba226f 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5314,6 +5314,8 @@ in szip = null; }; + hdf5_1_10 = callPackage ../tools/misc/hdf5/1.10.nix { }; + hdf5-mpi = appendToName "mpi" (hdf5.override { szip = null; mpiSupport = true; From 50d604314e736d24dc7aa6749b5482c859147b17 Mon Sep 17 00:00:00 2001 From: Thomas Gerbet Date: Tue, 6 Apr 2021 19:21:07 +0200 Subject: [PATCH 4/4] python3Packages.tables: use hdf5_1_10 instead of hdf5 Without that, the test suite of python3Packages.pandas segfault. --- pkgs/top-level/python-packages.nix | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index ef0bc05ebaa..0ee6db02a76 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -8128,9 +8128,13 @@ in { tableaudocumentapi = callPackage ../development/python-modules/tableaudocumentapi { }; tables = if isPy3k then - callPackage ../development/python-modules/tables { } + callPackage ../development/python-modules/tables { + hdf5 = pkgs.hdf5_1_10; + } else - callPackage ../development/python-modules/tables/3.5.nix { }; + callPackage ../development/python-modules/tables/3.5.nix { + hdf5 = pkgs.hdf5_1_10; + }; tablib = callPackage ../development/python-modules/tablib { };