diff options
Diffstat (limited to 'nixpkgs/pkgs/development/compilers/cudatoolkit/common.nix')
-rw-r--r-- | nixpkgs/pkgs/development/compilers/cudatoolkit/common.nix | 57 |
1 files changed, 39 insertions, 18 deletions
diff --git a/nixpkgs/pkgs/development/compilers/cudatoolkit/common.nix b/nixpkgs/pkgs/development/compilers/cudatoolkit/common.nix index f408d7b33121..46832e1cc2de 100644 --- a/nixpkgs/pkgs/development/compilers/cudatoolkit/common.nix +++ b/nixpkgs/pkgs/development/compilers/cudatoolkit/common.nix @@ -61,8 +61,6 @@ stdenv.mkDerivation rec { gtk2 glib fontconfig freetype unixODBC alsa-lib ]; - rpath = "${lib.makeLibraryPath runtimeDependencies}:${stdenv.cc.cc.lib}/lib64"; - unpackPhase = '' sh $src --keep --noexec @@ -119,6 +117,12 @@ stdenv.mkDerivation rec { fi done mv pkg/builds/cuda_nvcc/nvvm $out/nvvm + + mv pkg/builds/cuda_sanitizer_api $out/cuda_sanitizer_api + ln -s $out/cuda_sanitizer_api/compute-sanitizer/compute-sanitizer $out/bin/compute-sanitizer + + mv pkg/builds/nsight_systems/target-linux-x64 $out/target-linux-x64 + mv pkg/builds/nsight_systems/host-linux-x64 $out/host-linux-x64 ''} rm -f $out/tools/CUDA_Occupancy_Calculator.xls # FIXME: why? @@ -184,22 +188,35 @@ stdenv.mkDerivation rec { done ''; - preFixup = '' - while IFS= read -r -d ''$'\0' i; do - if ! isELF "$i"; then continue; fi - echo "patching $i..." - if [[ ! $i =~ \.so ]]; then - patchelf \ - --set-interpreter "''$(cat $NIX_CC/nix-support/dynamic-linker)" $i - fi - if [[ $i =~ libcudart ]]; then - patchelf --remove-rpath $i - else - rpath2=$rpath:$lib/lib:$out/jre/lib/amd64/jli:$out/lib:$out/lib64:$out/nvvm/lib:$out/nvvm/lib64 - patchelf --set-rpath "$rpath2" --force-rpath $i - fi - done < <(find $out $lib $doc -type f -print0) - ''; + preFixup = + let rpath = lib.concatStringsSep ":" [ + (lib.makeLibraryPath (runtimeDependencies ++ [ "$lib" "$out" "$out/nvvm" ])) + "${stdenv.cc.cc.lib}/lib64" + "$out/jre/lib/amd64/jli" + "$out/lib64" + "$out/nvvm/lib64" + ]; + in + '' + while IFS= read -r -d $'\0' i; do + if ! isELF "$i"; then continue; fi + echo "patching $i..." + if [[ ! $i =~ \.so ]]; then + patchelf \ + --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" $i + fi + if [[ $i =~ libcudart ]]; then + patchelf --remove-rpath $i + else + patchelf --set-rpath "${rpath}" --force-rpath $i + fi + done < <(find $out $lib $doc -type f -print0) + '' + lib.optionalString (lib.versionAtLeast version "11") '' + for file in $out/target-linux-x64/*.so; do + echo "patching $file..." + patchelf --set-rpath "${rpath}:\$ORIGIN" $file + done + ''; # Set RPATH so that libcuda and other libraries in # /run/opengl-driver(-32)/lib can be found. See the explanation in @@ -208,6 +225,10 @@ stdenv.mkDerivation rec { # --force-rpath prevents changing RPATH (set above) to RUNPATH. postFixup = '' addOpenGLRunpath --force-rpath {$out,$lib}/lib/lib*.so + '' + lib.optionalString (lib.versionAtLeast version "11") '' + addOpenGLRunpath $out/cuda_sanitizer_api/compute-sanitizer/* + addOpenGLRunpath $out/cuda_sanitizer_api/compute-sanitizer/x86/* + addOpenGLRunpath $out/target-linux-x64/* ''; # cuda-gdb doesn't run correctly when not using sandboxing, so |