Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
at release-19.03 80 lines 2.8 kB view raw
1{ config, stdenv 2, fetchurl 3, patchelf 4, cudaSupport ? config.cudaSupport or 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.9.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 "1q3mh06x344im25z7r3vgrfksfdsi8fh8ldn6y2mf86h4d11yxc3" 42 else "0l9ps115ng5ffzdwphlqmj3jhidps2v5afppdzrbpzmy41xz0z21" 43 else if system == "darwin-x86_64" then 44 if cudaSupport 45 then unavailable 46 else "1qj0v1706w6mczycdsh38h2glyv5d25v62kdn98wxd5rw8f9v657" 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 # Write pkgconfig file. 62 mkdir $out/lib/pkgconfig 63 cat > $out/lib/pkgconfig/tensorflow.pc << EOF 64 Name: TensorFlow 65 Version: ${version} 66 Description: Library for computation using data flow graphs for scalable machine learning 67 Requires: 68 Libs: -L$out/lib -ltensorflow 69 Cflags: -I$out/include/tensorflow 70 EOF 71 ''; 72 73 meta = { 74 description = "C API for TensorFlow"; 75 homepage = https://www.tensorflow.org/versions/master/install/install_c; 76 license = licenses.asl20; 77 platforms = with platforms; linux ++ darwin; 78 maintainers = [maintainers.basvandijk]; 79 }; 80}