at 18.09-beta 69 lines 2.4 kB view raw
1{ stdenv 2, fetchurl 3, patchelf 4, cudaSupport ? false, symlinkJoin, cudatoolkit, cudnn, nvidia_x11 5}: 6with stdenv.lib; 7let 8 tfType = if cudaSupport then "gpu" else "cpu"; 9 system = 10 if stdenv.isx86_64 11 then if stdenv.isLinux then "linux-x86_64" 12 else if stdenv.isDarwin then "darwin-x86_64" else unavailable 13 else unavailable; 14 unavailable = throw "libtensorflow is not available for this platform!"; 15 cudatoolkit_joined = symlinkJoin { 16 name = "unsplit_cudatoolkit"; 17 paths = [ cudatoolkit.out 18 cudatoolkit.lib ];}; 19 rpath = makeLibraryPath ([stdenv.cc.libc stdenv.cc.cc.lib] ++ 20 optionals cudaSupport [ cudatoolkit_joined cudnn nvidia_x11 ]); 21 patchLibs = 22 if stdenv.isDarwin 23 then '' 24 install_name_tool -id $out/lib/libtensorflow.so $out/lib/libtensorflow.so 25 install_name_tool -id $out/lib/libtensorflow_framework.so $out/lib/libtensorflow_framework.so 26 '' 27 else '' 28 ${patchelf}/bin/patchelf --set-rpath "${rpath}:$out/lib" $out/lib/libtensorflow.so 29 ${patchelf}/bin/patchelf --set-rpath "${rpath}" $out/lib/libtensorflow_framework.so 30 ''; 31 32in stdenv.mkDerivation rec { 33 pname = "libtensorflow"; 34 version = "1.10.0"; 35 name = "${pname}-${version}"; 36 src = fetchurl { 37 url = "https://storage.googleapis.com/tensorflow/${pname}/${pname}-${tfType}-${system}-${version}.tar.gz"; 38 sha256 = 39 if system == "linux-x86_64" then 40 if cudaSupport 41 then "0v66sscxpyixjrf9yjshl001nix233i6chc61akx0kx7ial4l1wn" 42 else "11sbpcbgdzj8v17mdppfv7v1fn3nbzkdad60gc42y2j6knjbmwxb" 43 else if system == "darwin-x86_64" then 44 if cudaSupport 45 then unavailable 46 else "11p0f77m4wycpc024mh7jx0kbdhgm0wp6ir6dsa8lkcpdb59bn59" 47 else unavailable; 48 }; 49 50 # Patch library to use our libc, libstdc++ and others 51 buildCommand = '' 52 . $stdenv/setup 53 mkdir -pv $out 54 tar -C $out -xzf $src 55 chmod +w $out/lib/libtensorflow.so 56 chmod +w $out/lib/libtensorflow_framework.so 57 ${patchLibs} 58 chmod -w $out/lib/libtensorflow.so 59 chmod -w $out/lib/libtensorflow_framework.so 60 ''; 61 62 meta = { 63 description = "C API for TensorFlow"; 64 homepage = https://www.tensorflow.org/versions/master/install/install_c; 65 license = licenses.asl20; 66 platforms = with platforms; linux ++ darwin; 67 maintainers = [maintainers.basvandijk]; 68 }; 69}