Files
nixpkgs/pkgs/development/python-modules/h5py/default.nix
T
Guillaume Girol 33afbf39f6 treewide: switch to nativeCheckInputs
checkInputs used to be added to nativeBuildInputs. Now we have
nativeCheckInputs to do that instead. Doing this treewide change allows
to keep hashes identical to before the introduction of
nativeCheckInputs.
2023-01-21 12:00:00 +00:00

77 lines
1.7 KiB
Nix

{ lib
, fetchPypi
, buildPythonPackage
, pythonOlder
, setuptools
, numpy
, hdf5
, cython
, pkgconfig
, mpi4py ? null
, openssh
, pytestCheckHook
, cached-property
}:
assert hdf5.mpiSupport -> mpi4py != null && hdf5.mpi == mpi4py.mpi;
let
mpi = hdf5.mpi;
mpiSupport = hdf5.mpiSupport;
in buildPythonPackage rec {
version = "3.7.0";
pname = "h5py";
format = "pyproject";
disabled = pythonOlder "3.7";
src = fetchPypi {
inherit pname version;
sha256 = "sha256-P883iEODxdpkhGq1EBkHIAJ9ygdo3vNN2Ny2Wdvly/M=";
};
# avoid strict pinning of numpy
postPatch = ''
substituteInPlace setup.py \
--replace "numpy ==" "numpy >=" \
--replace "mpi4py ==" "mpi4py >="
'';
HDF5_DIR = "${hdf5}";
HDF5_MPI = if mpiSupport then "ON" else "OFF";
postConfigure = ''
# Needed to run the tests reliably. See:
# https://bitbucket.org/mpi4py/mpi4py/issues/87/multiple-test-errors-with-openmpi-30
${lib.optionalString mpiSupport "export OMPI_MCA_rmaps_base_oversubscribe=yes"}
'';
preBuild = if mpiSupport then "export CC=${mpi}/bin/mpicc" else "";
nativeBuildInputs = [
cython
pkgconfig
setuptools
];
buildInputs = [ hdf5 ]
++ lib.optional mpiSupport mpi;
propagatedBuildInputs = [ 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 ];
pythonImportsCheck = [ "h5py" ];
meta = with lib; {
description = "Pythonic interface to the HDF5 binary data format";
homepage = "http://www.h5py.org/";
license = licenses.bsd3;
maintainers = [ ];
};
}