diff --git a/pkgs/development/compilers/cudatoolkit/default.nix b/pkgs/development/compilers/cudatoolkit/default.nix index 0b219b804471..f6e52a59fe59 100644 --- a/pkgs/development/compilers/cudatoolkit/default.nix +++ b/pkgs/development/compilers/cudatoolkit/default.nix @@ -22,7 +22,7 @@ let } else throw "cudatoolkit does not support platform ${stdenv.system}"; - outputs = [ "out" "doc" ]; + outputs = [ "out" "lib" "doc" ]; buildInputs = [ perl ]; @@ -51,7 +51,11 @@ let patchelf \ --set-interpreter "''$(cat $NIX_CC/nix-support/dynamic-linker)" $i fi - rpath2=$rpath:$lib/lib:$out/jre/lib/amd64/jli:$out/lib:$out/lib64:$out/nvvm/lib:$out/nvvm/lib64 + if [[ $i =~ libcudart ]]; then + rpath2= + else + rpath2=$rpath:$lib/lib:$out/jre/lib/amd64/jli:$out/lib:$out/lib64:$out/nvvm/lib:$out/nvvm/lib64 + fi patchelf --set-rpath $rpath2 --force-rpath $i done < <(find . -type f -print0) ''; @@ -80,6 +84,11 @@ let mkdir -p $out/nix-support echo "cmakeFlags+=' -DCUDA_TOOLKIT_ROOT_DIR=$out'" >> $out/nix-support/setup-hook + # Move some libraries to the lib output so that programs that + # depend on them don't pull in this entire monstrosity. + mkdir -p $lib/lib + mv -v $out/lib64/libcudart* $lib/lib/ + # Remove OpenCL libraries as they are provided by ocl-icd and driver. rm -f $out/lib64/libOpenCL*