at 23.11-beta 1.4 kB view raw
1{ lib, fetchPypi, fetchpatch, python, buildPythonPackage 2, mpi, mpiCheckPhaseHook, openssh 3}: 4 5buildPythonPackage rec { 6 pname = "mpi4py"; 7 version = "3.1.5"; 8 9 src = fetchPypi { 10 inherit pname version; 11 hash = "sha256-pwbnbbklUTXC+10e9Uy097DkrZ4zy62n3idiYgXyoVM="; 12 }; 13 14 passthru = { 15 inherit mpi; 16 }; 17 18 postPatch = '' 19 substituteInPlace test/test_spawn.py --replace \ 20 "unittest.skipMPI('openmpi(<3.0.0)')" \ 21 "unittest.skipMPI('openmpi')" 22 ''; 23 24 configurePhase = ""; 25 26 installPhase = '' 27 mkdir -p "$out/lib/${python.libPrefix}/site-packages" 28 export PYTHONPATH="$out/lib/${python.libPrefix}/site-packages:$PYTHONPATH" 29 30 ${python}/bin/${python.executable} setup.py install \ 31 --install-lib=$out/lib/${python.libPrefix}/site-packages \ 32 --prefix="$out" 33 34 # --install-lib: 35 # sometimes packages specify where files should be installed outside the usual 36 # python lib prefix, we override that back so all infrastructure (setup hooks) 37 # work as expected 38 ''; 39 40 setupPyBuildFlags = ["--mpicc=${mpi}/bin/mpicc"]; 41 42 nativeBuildInputs = [ mpi ]; 43 44 __darwinAllowLocalNetworking = true; 45 46 nativeCheckInputs = [ openssh mpiCheckPhaseHook ]; 47 48 meta = with lib; { 49 description = "Python bindings for the Message Passing Interface standard"; 50 homepage = "https://github.com/mpi4py/mpi4py"; 51 license = licenses.bsd2; 52 }; 53}