about summary refs log tree commit diff
path: root/pkgs/development/python-modules/h5py/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/python-modules/h5py/default.nix')
-rw-r--r--pkgs/development/python-modules/h5py/default.nix94
1 files changed, 57 insertions, 37 deletions
diff --git a/pkgs/development/python-modules/h5py/default.nix b/pkgs/development/python-modules/h5py/default.nix
index 4afd562e033d..cd60ecd9100a 100644
--- a/pkgs/development/python-modules/h5py/default.nix
+++ b/pkgs/development/python-modules/h5py/default.nix
@@ -1,18 +1,18 @@
-{ lib
-, fetchPypi
-, buildPythonPackage
-, pythonOlder
-, oldest-supported-numpy
-, setuptools
-, wheel
-, numpy
-, hdf5
-, cython_0
-, pkgconfig
-, mpi4py ? null
-, openssh
-, pytestCheckHook
-, cached-property
+{
+  lib,
+  fetchPypi,
+  buildPythonPackage,
+  pythonOlder,
+  setuptools,
+  numpy,
+  hdf5,
+  cython,
+  pkgconfig,
+  mpi4py ? null,
+  openssh,
+  pytestCheckHook,
+  pytest-mpi,
+  cached-property,
 }:
 
 assert hdf5.mpiSupport -> mpi4py != null && hdf5.mpi == mpi4py.mpi;
@@ -20,26 +20,34 @@ assert hdf5.mpiSupport -> mpi4py != null && hdf5.mpi == mpi4py.mpi;
 let
   mpi = hdf5.mpi;
   mpiSupport = hdf5.mpiSupport;
-in buildPythonPackage rec {
-  version = "3.10.0";
+in
+buildPythonPackage rec {
+  version = "3.12.1";
   pname = "h5py";
-  format = "pyproject";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-2TrcSM7rMzR+skpjT7eH78euRkTm6kunM9CZYFBFwEk=";
+    hash = "sha256-Mm1wtT0xuqYfALiqX5XC/LliGj7oNl13DFUaE9u8v98=";
   };
 
-  # avoid strict pinning of numpy
+  pythonRelaxDeps = [ "mpi4py" ];
+
+  # avoid strict pinning of numpy and mpi4py, can't be replaced with
+  # pythonRelaxDepsHook, see: https://github.com/NixOS/nixpkgs/issues/327941
   postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail "numpy >=2.0.0, <3" "numpy"
     substituteInPlace setup.py \
-      --replace "mpi4py ==" "mpi4py >="
+      --replace-fail "mpi4py ==3.1.6" "mpi4py"
   '';
 
-  HDF5_DIR = "${hdf5}";
-  HDF5_MPI = if mpiSupport then "ON" else "OFF";
+  env = {
+    HDF5_DIR = "${hdf5}";
+    HDF5_MPI = if mpiSupport then "ON" else "OFF";
+  };
 
   postConfigure = ''
     # Needed to run the tests reliably. See:
@@ -49,32 +57,44 @@ in buildPythonPackage rec {
 
   preBuild = lib.optionalString mpiSupport "export CC=${lib.getDev mpi}/bin/mpicc";
 
-  nativeBuildInputs = [
-    cython_0
-    oldest-supported-numpy
+  build-system = [
+    cython
+    numpy
     pkgconfig
     setuptools
-    wheel
   ];
 
-  buildInputs = [ hdf5 ]
-    ++ lib.optional mpiSupport mpi;
+  buildInputs = [ hdf5 ] ++ lib.optional mpiSupport mpi;
 
-  propagatedBuildInputs = [ numpy ]
-    ++ lib.optionals mpiSupport [ mpi4py openssh ]
+  dependencies =
+    [ numpy ]
+    ++ lib.optionals mpiSupport [
+      mpi4py
+      openssh
+    ]
     ++ lib.optionals (pythonOlder "3.8") [ cached-property ];
 
-  # tests now require pytest-mpi, which isn't available and difficult to package
-  doCheck = false;
-  nativeCheckInputs = [ pytestCheckHook openssh ];
+  nativeCheckInputs = [
+    pytestCheckHook
+    pytest-mpi
+    openssh
+  ];
+  # https://github.com/NixOS/nixpkgs/issues/255262
+  preCheck = ''
+    cd $out
+  '';
+  # For some reason these fail when mpi support is enabled, due to concurrent
+  # writings. There are a few open issues about this in the bug tracker, but
+  # not related to the tests.
+  disabledTests = lib.optionals mpiSupport [ "TestPageBuffering" ];
 
   pythonImportsCheck = [ "h5py" ];
 
-  meta = with lib; {
+  meta = {
     changelog = "https://github.com/h5py/h5py/blob/${version}/docs/whatsnew/${lib.versions.majorMinor version}.rst";
     description = "Pythonic interface to the HDF5 binary data format";
     homepage = "http://www.h5py.org/";
-    license = licenses.bsd3;
-    maintainers = [ ];
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ doronbehar ];
   };
 }