about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/cuda-modules/setup-hooks/auto-add-cuda-compat-runpath.sh
blob: fc41024f1551aac3fcb50c1fe2f021cc3e2a5bf1 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# shellcheck shell=bash
# Patch all dynamically linked, ELF files with the CUDA driver (libcuda.so)
# coming from the cuda_compat package by adding it to the RUNPATH.
echo "Sourcing auto-add-cuda-compat-runpath-hook"

addCudaCompatRunpath() {
  local libPath
  local origRpath

  if [[ $# -eq 0 ]]; then
    echo "addCudaCompatRunpath: no library path provided" >&2
    exit 1
  elif [[ $# -gt 1 ]]; then
    echo "addCudaCompatRunpath: too many arguments" >&2
    exit 1
  elif [[ "$1" == "" ]]; then
    echo "addCudaCompatRunpath: empty library path" >&2
    exit 1
  else
    libPath="$1"
  fi

  origRpath="$(patchelf --print-rpath "$libPath")"
  patchelf --set-rpath "@libcudaPath@:$origRpath" "$libPath"
}

postFixupHooks+=("autoFixElfFiles addCudaCompatRunpath")