tensorflow: add OpenGL path to find libcudart
This commit is contained in:
parent
4947ddf347
commit
1c429acbff
3 changed files with 31 additions and 3 deletions
|
@ -1,6 +1,6 @@
|
|||
{ stdenv
|
||||
, fetchurl
|
||||
, patchelf
|
||||
, addOpenGLRunpath
|
||||
, cudaSupport ? false, symlinkJoin, cudatoolkit, cudnn, nvidia_x11
|
||||
}:
|
||||
|
||||
|
@ -35,6 +35,9 @@ let
|
|||
else ''
|
||||
patchelf --set-rpath "${rpath}:$out/lib" $out/lib/libtensorflow.so
|
||||
patchelf --set-rpath "${rpath}" $out/lib/libtensorflow_framework.so
|
||||
${optionalString cudaSupport ''
|
||||
addOpenGLRunpath $out/lib/libtensorflow.so $out/lib/libtensorflow_framework.so
|
||||
''}
|
||||
'';
|
||||
|
||||
in stdenv.mkDerivation rec {
|
||||
|
@ -43,6 +46,8 @@ in stdenv.mkDerivation rec {
|
|||
|
||||
src = fetchurl url;
|
||||
|
||||
nativeBuildInputs = optional cudaSupport addOpenGLRunpath;
|
||||
|
||||
# Patch library to use our libc, libstdc++ and others
|
||||
buildCommand = ''
|
||||
mkdir -pv $out
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
, symlinkJoin
|
||||
, keras-applications
|
||||
, keras-preprocessing
|
||||
, addOpenGLRunpath
|
||||
}:
|
||||
|
||||
# We keep this binary build for two reasons:
|
||||
|
@ -76,6 +77,8 @@ in buildPythonPackage {
|
|||
] ++ lib.optional (!isPy3k) mock
|
||||
++ lib.optionals (pythonOlder "3.4") [ backports_weakref ];
|
||||
|
||||
nativeBuildInputs = lib.optional cudaSupport addOpenGLRunpath;
|
||||
|
||||
# Upstream has a pip hack that results in bin/tensorboard being in both tensorflow
|
||||
# and the propageted input tensorflow-tensorboard which causes environment collisions.
|
||||
# another possibility would be to have tensorboard only in the buildInputs
|
||||
|
@ -94,7 +97,12 @@ in buildPythonPackage {
|
|||
lib.optionalString stdenv.isLinux ''
|
||||
rrPath="$out/${python.sitePackages}/tensorflow/:$out/${python.sitePackages}/tensorflow/contrib/tensor_forest/:${rpath}"
|
||||
internalLibPath="$out/${python.sitePackages}/tensorflow/python/_pywrap_tensorflow_internal.so"
|
||||
find $out \( -name '*.so' -or -name '*.so.*' \) -exec patchelf --set-rpath "$rrPath" {} \;
|
||||
find $out -type f \( -name '*.so' -or -name '*.so.*' \) | while read lib; do
|
||||
patchelf --set-rpath "$rrPath" "$lib"
|
||||
${lib.optionalString cudaSupport ''
|
||||
addOpenGLRunpath "$lib"
|
||||
''}
|
||||
done
|
||||
'';
|
||||
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
{ stdenv, pkgs, buildBazelPackage, lib, fetchFromGitHub, fetchpatch, symlinkJoin
|
||||
, addOpenGLRunpath
|
||||
# Python deps
|
||||
, buildPythonPackage, isPy3k, pythonOlder, pythonAtLeast, python
|
||||
# Python libraries
|
||||
|
@ -112,7 +113,7 @@ let
|
|||
|
||||
nativeBuildInputs = [
|
||||
swig which pythonEnv
|
||||
];
|
||||
] ++ lib.optional cudaSupport addOpenGLRunpath;
|
||||
|
||||
buildInputs = [
|
||||
jemalloc
|
||||
|
@ -296,6 +297,12 @@ let
|
|||
bazel-bin/tensorflow/tools/pip_package/build_pip_package --src "$PWD/dist"
|
||||
cp -Lr "$PWD/dist" "$python"
|
||||
'';
|
||||
|
||||
postFixup = lib.optionalString cudaSupport ''
|
||||
find $out -type f \( -name '*.so' -or -name '*.so.*' \) | while read lib; do
|
||||
addOpenGLRunpath "$lib"
|
||||
done
|
||||
'';
|
||||
};
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
|
@ -347,6 +354,14 @@ in buildPythonPackage {
|
|||
tensorflow-tensorboard
|
||||
];
|
||||
|
||||
nativeBuildInputs = lib.optional cudaSupport addOpenGLRunpath;
|
||||
|
||||
postFixup = lib.optionalString cudaSupport ''
|
||||
find $out -type f \( -name '*.so' -or -name '*.so.*' \) | while read lib; do
|
||||
addOpenGLRunpath "$lib"
|
||||
done
|
||||
'';
|
||||
|
||||
# Actual tests are slow and impure.
|
||||
# TODO try to run them anyway
|
||||
# TODO better test (files in tensorflow/tools/ci_build/builds/*test)
|
||||
|
|
Loading…
Reference in a new issue