diff options
author | Bas van Dijk <v.dijk.bas@gmail.com> | 2018-07-23 11:07:09 +0200 |
---|---|---|
committer | Bas van Dijk <v.dijk.bas@gmail.com> | 2018-07-24 22:08:38 +0200 |
commit | 7098bcac278a2d028036bb3a23508fd1c52155ac (patch) | |
tree | 61b6078677c95cc149c3828751391f19be2ddb11 /pkgs/development/libraries/libtensorflow | |
parent | 6275a31f33b64919cafb0d88e821a448c06c726f (diff) | |
download | nixpkgs-7098bcac278a2d028036bb3a23508fd1c52155ac.tar nixpkgs-7098bcac278a2d028036bb3a23508fd1c52155ac.tar.gz nixpkgs-7098bcac278a2d028036bb3a23508fd1c52155ac.tar.bz2 nixpkgs-7098bcac278a2d028036bb3a23508fd1c52155ac.tar.lz nixpkgs-7098bcac278a2d028036bb3a23508fd1c52155ac.tar.xz nixpkgs-7098bcac278a2d028036bb3a23508fd1c52155ac.tar.zst nixpkgs-7098bcac278a2d028036bb3a23508fd1c52155ac.zip |
libtensorflow: support building on OS X and add optional cuda support
Diffstat (limited to 'pkgs/development/libraries/libtensorflow')
-rw-r--r-- | pkgs/development/libraries/libtensorflow/default.nix | 57 |
1 files changed, 47 insertions, 10 deletions
diff --git a/pkgs/development/libraries/libtensorflow/default.nix b/pkgs/development/libraries/libtensorflow/default.nix index fce15b121b4..c8b299034fc 100644 --- a/pkgs/development/libraries/libtensorflow/default.nix +++ b/pkgs/development/libraries/libtensorflow/default.nix @@ -1,11 +1,50 @@ -{ stdenv, fetchurl, patchelf }: -stdenv.mkDerivation rec { +{ stdenv +, fetchurl +, patchelf +, cudaSupport ? false, symlinkJoin, cudatoolkit, cudnn, nvidia_x11 +}: +with stdenv.lib; +let + tfType = if cudaSupport then "gpu" else "cpu"; + system = + if stdenv.isx86_64 + then if stdenv.isLinux then "linux-x86_64" + else if stdenv.isDarwin then "darwin-x86_64" else unavailable + else unavailable; + unavailable = throw "libtensorflow is not available for this platform!"; + cudatoolkit_joined = symlinkJoin { + name = "unsplit_cudatoolkit"; + paths = [ cudatoolkit.out + cudatoolkit.lib ];}; + rpath = makeLibraryPath ([stdenv.cc.libc stdenv.cc.cc.lib] ++ + optionals cudaSupport [ cudatoolkit_joined cudnn nvidia_x11 ]); + patchLibs = + if stdenv.isDarwin + then '' + install_name_tool -id $out/lib/libtensorflow.so $out/lib/libtensorflow.so + install_name_tool -id $out/lib/libtensorflow_framework.so $out/lib/libtensorflow_framework.so + '' + else '' + ${patchelf}/bin/patchelf --set-rpath "${rpath}:$out/lib" $out/lib/libtensorflow.so + ${patchelf}/bin/patchelf --set-rpath "${rpath}" $out/lib/libtensorflow_framework.so + ''; + +in stdenv.mkDerivation rec { pname = "libtensorflow"; version = "1.8.0"; name = "${pname}-${version}"; src = fetchurl { - url = "https://storage.googleapis.com/tensorflow/${pname}/${pname}-cpu-linux-x86_64-${version}.tar.gz"; - sha256 = "0qzy15rc3x961cyi3bqnygrcnw4x69r28xkwhpwrv1r0gi6k73ha"; + url = "https://storage.googleapis.com/tensorflow/${pname}/${pname}-${tfType}-${system}-${version}.tar.gz"; + sha256 = + if system == "linux-x86_64" then + if cudaSupport + then "0m1g4sqr9as0jgfx7wlyay2nkad6wgvsyk2gvhfkqkq5sm1vbx85" + else "0qzy15rc3x961cyi3bqnygrcnw4x69r28xkwhpwrv1r0gi6k73ha" + else if system == "darwin-x86_64" then + if cudaSupport + then unavailable + else "0q8lmyj8l50hl6l48c640ixanvhqf2836bicyl9p2x8sj97b7y8l" + else unavailable; }; # Patch library to use our libc, libstdc++ and others @@ -15,18 +54,16 @@ stdenv.mkDerivation rec { tar -C $out -xzf $src chmod +w $out/lib/libtensorflow.so chmod +w $out/lib/libtensorflow_framework.so - ${patchelf}/bin/patchelf --set-rpath "${stdenv.cc.libc}/lib:${stdenv.cc.cc.lib}/lib:$out/lib" $out/lib/libtensorflow.so - ${patchelf}/bin/patchelf --set-rpath "${stdenv.cc.libc}/lib:${stdenv.cc.cc.lib}/lib" $out/lib/libtensorflow_framework.so + ${patchLibs} chmod -w $out/lib/libtensorflow.so chmod -w $out/lib/libtensorflow_framework.so ''; - meta = with stdenv.lib; { - inherit version; + meta = { description = "C API for TensorFlow"; + homepage = https://www.tensorflow.org/versions/master/install/install_c; license = licenses.asl20; + platforms = with platforms; linux ++ darwin; maintainers = [maintainers.basvandijk]; - platforms = platforms.linux; - homepage = https://www.tensorflow.org/versions/master/install/install_c; }; } |