about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/python-modules/cntk/default.nix
blob: ce388bb1d5d297a87d147e324dbfad7652b35a32 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
{ lib
, buildPythonPackage
, pkgs
, numpy
, scipy
, openmpi
, enum34
, protobuf
, pip
, python
, swig
}:

let
  cntk = pkgs.cntk;
in
buildPythonPackage {
  inherit (cntk) name version src;

  nativeBuildInputs = [ swig openmpi ];
  buildInputs = [ cntk openmpi ];
  propagatedBuildInputs = [ numpy scipy enum34 protobuf pip ];

  CNTK_LIB_PATH = "${cntk}/lib";
  CNTK_COMPONENT_VERSION = cntk.version;
  CNTK_VERSION = cntk.version;
  CNTK_VERSION_BANNER = cntk.version;

  postPatch = ''
    cd bindings/python
    sed -i 's,"libmpi.so.12","${openmpi}/lib/libmpi.so",g' cntk/train/distributed.py

    # Remove distro and libs checks; they aren't compatible with NixOS and besides we guarantee
    # compatibility by providing a package.
    cat <<EOF > cntk/cntk_py_init.py
    def cntk_check_distro_info():
      pass
    def cntk_check_libs():
      pass
    EOF
  '';

  postInstall = ''
    rm -rf $out/${python.sitePackages}/cntk/libs
    ln -s ${cntk}/lib $out/${python.sitePackages}/cntk/libs
    # It's not installed for some reason.
    cp cntk/cntk_py.py $out/${python.sitePackages}/cntk
  '';

  # Actual tests are broken.
  checkPhase = ''
    cd $NIX_BUILD_TOP
    ${python.interpreter} -c "import cntk"
  '';

  meta = {
    inherit (cntk.meta) homepage description license maintainers platforms;
    # doesn't support Python 3.7
    broken = lib.versionAtLeast python.version "3.7";
  };
}