summary refs log tree commit diff
diff options
context:
space:
mode:
authorJean-Philippe Bernardy <jeanphilippe.bernardy@gmail.com>2017-10-03 15:50:39 +0200
committerNikolay Amiantov <ab@fmap.me>2017-10-10 16:16:37 +0400
commit244f34785e86376f46a70937773944a57e445122 (patch)
treeff26dbe5d46c8cc6bede9c7c002eff24d4f3cdf2
parent79ae9be2206569dd50baa400c6aba63f71651b81 (diff)
downloadnixpkgs-244f34785e86376f46a70937773944a57e445122.tar
nixpkgs-244f34785e86376f46a70937773944a57e445122.tar.gz
nixpkgs-244f34785e86376f46a70937773944a57e445122.tar.bz2
nixpkgs-244f34785e86376f46a70937773944a57e445122.tar.lz
nixpkgs-244f34785e86376f46a70937773944a57e445122.tar.xz
nixpkgs-244f34785e86376f46a70937773944a57e445122.tar.zst
nixpkgs-244f34785e86376f46a70937773944a57e445122.zip
pythonPackages.tensorflow: repair cuda-dependent variant
merge the outputs of cudatoolkit locally in the tensorflow
derivation, using symlinkJoin

Fixes #29798
-rw-r--r--pkgs/development/python-modules/tensorflow/default.nix12
1 files changed, 10 insertions, 2 deletions
diff --git a/pkgs/development/python-modules/tensorflow/default.nix b/pkgs/development/python-modules/tensorflow/default.nix
index ab604c17300..00a5df843c5 100644
--- a/pkgs/development/python-modules/tensorflow/default.nix
+++ b/pkgs/development/python-modules/tensorflow/default.nix
@@ -1,4 +1,5 @@
 { stdenv
+, symlinkJoin
 , lib
 , fetchurl
 , buildPythonPackage
@@ -35,6 +36,13 @@ buildPythonPackage rec {
   format = "wheel";
   disabled = ! (isPy35 || isPy36 || isPy27);
 
+  # cudatoolkit is split (see https://github.com/NixOS/nixpkgs/commit/bb1c9b027d343f2ce263496582d6b56af8af92e6)
+  # However this means that libcusolver is not loadable by tensor flow. So we undo the split here.
+  cudatoolkit_joined = symlinkJoin {
+    name = "unsplit_cudatoolkit";
+    paths = [ cudatoolkit.out
+              cudatoolkit.lib ];};
+
   src = let
       tfurl = sys: proc: pykind:
         let
@@ -112,7 +120,7 @@ buildPythonPackage rec {
   propagatedBuildInputs =
     [ numpy six protobuf mock backports_weakref ]
     ++ lib.optional (!isPy36) tensorflow-tensorboard
-    ++ lib.optionals cudaSupport [ cudatoolkit cudnn stdenv.cc ];
+    ++ lib.optionals cudaSupport [ cudatoolkit_joined cudnn stdenv.cc ];
 
   # tensorflow-gpu depends on tensorflow_tensorboard, which cannot be
   # built at the moment (some of its dependencies do not build
@@ -126,7 +134,7 @@ buildPythonPackage rec {
   postFixup = let
     rpath = stdenv.lib.makeLibraryPath
       (if cudaSupport then
-        [ stdenv.cc.cc.lib zlib cudatoolkit cudnn
+        [ stdenv.cc.cc.lib zlib cudatoolkit_joined cudnn
           linuxPackages.nvidia_x11 ]
       else
         [ stdenv.cc.cc.lib zlib ]