diff --git a/pkgs/development/python-modules/h5py/default.nix b/pkgs/development/python-modules/h5py/default.nix new file mode 100644 index 000000000000..9ab68ac4cd2b --- /dev/null +++ b/pkgs/development/python-modules/h5py/default.nix @@ -0,0 +1,43 @@ +{ stdenv, fetchurl, python, buildPythonPackage +, numpy, hdf5, cython +, mpiSupport ? false, mpi4py ? null, mpi ? null }: + +assert mpiSupport == hdf5.mpiSupport; +assert mpiSupport -> mpi != null + && mpi4py != null + && mpi == mpi4py.mpi + && mpi == hdf5.mpi + ; + +with stdenv.lib; + +buildPythonPackage rec { + name = "h5py-2.3.1"; + + src = fetchurl { + url = "https://pypi.python.org/packages/source/h/h5py/${name}.tar.gz"; + md5 = "8f32f96d653e904d20f9f910c6d9dd91"; + }; + + setupPyBuildFlags = [ "--hdf5=${hdf5}" ] + ++ optional mpiSupport "--mpi" + ; + setupPyInstallFlags = setupPyBuildFlags; + + preBuild = if mpiSupport then "export CC=${mpi}/bin/mpicc" else ""; + + buildInputs = [ hdf5 cython ] + ++ optional mpiSupport mpi + ; + propagatedBuildInputs = [ numpy ] + ++ optional mpiSupport mpi4py + ; + + meta = { + description = " + The h5py package is a Pythonic interface to the HDF5 binary data format. + "; + homepage = "http://www.h5py.org/"; + license = stdenv.lib.licenses.bsd2; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 59f00576dad2..2e7189c3a5bc 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -89,6 +89,19 @@ rec { ''; }; + h5py = callPackage ../development/python-modules/h5py { + inherit (pkgs) stdenv fetchurl; + inherit python buildPythonPackage cython numpy; + hdf5 = pkgs.hdf5.override { mpi = null; }; + }; + + h5py-mpi = h5py.override { + mpiSupport = true; + mpi = pkgs.openmpi; + hdf5 = pkgs.hdf5.override { mpi = pkgs.openmpi; enableShared = true; }; + inherit mpi4py; + }; + ipython = import ../shells/ipython { inherit (pkgs) stdenv fetchurl sip pyqt4; inherit buildPythonPackage pythonPackages;