summary refs log tree commit diff
path: root/pkgs/development/tools/misc/patchelf/setup-hook.sh
blob: 576b9ca2103ecb9ac0f33b07c6c601a4b7537dca (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# This setup hook calls patchelf to automatically remove unneeded
# directories from the RPATH of every library or executable in every
# output.

fixupOutputHooks+=('if [ -z "${dontPatchELF-}" ]; then patchELF "$prefix"; fi')

patchELF() {
    local dir="$1"
    [ -e "$dir" ] || return 0

    header "shrinking RPATHs of ELF executables and libraries in $dir"

    local i
    while IFS= read -r -d $'\0' i; do
        if [[ "$i" =~ .build-id ]]; then continue; fi
        if ! isELF "$i"; then continue; fi
        echo "shrinking $i"
        patchelf --shrink-rpath "$i" || true
    done < <(find "$dir" -type f -print0)

    stopNest
}