diff options
Diffstat (limited to 'pkgs/development/python-modules/h5py/default.nix')
-rw-r--r-- | pkgs/development/python-modules/h5py/default.nix | 94 |
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 ]; }; } |