autoPatchelfHook: move multiline hook into a function

In NixOS/nixpkgs#290081 it came to attention that autoPatchelfHook is
one of if not the only hook in Nixpkgs that is a multiline string
expression. Almost all hooks are functions, which guard with something
like `if [ -z "${dontDoTheThing-}" ]; then ...` in the function, or
single-line strings which include that guard inline and then call the
real function, e.g. `if [ -z "${dontDoTheThing-} ]; then doTheThing; fi`.

This commit moves autoPatchelfHook to the former, which seems to be the
most common style now.
This commit is contained in:
Qyriad 2024-03-11 09:29:22 -06:00
parent 3988ace9ba
commit 2ad2295bb3

View File

@ -88,22 +88,21 @@ autoPatchelf() {
--extra-args "${patchelfFlagsArray[@]}" --extra-args "${patchelfFlagsArray[@]}"
} }
# XXX: This should ultimately use fixupOutputHooks but we currently don't have autoPatchelfPostFixup() {
# a way to enforce the order. If we have $runtimeDependencies set, the setup # XXX: This should ultimately use fixupOutputHooks but we currently don't have
# hook of patchelf is going to ruin everything and strip out those additional # a way to enforce the order. If we have $runtimeDependencies set, the setup
# RPATHs. # hook of patchelf is going to ruin everything and strip out those additional
# # RPATHs.
# So what we do here is basically run in postFixup and emulate the same #
# behaviour as fixupOutputHooks because the setup hook for patchelf is run in # So what we do here is basically run in postFixup and emulate the same
# fixupOutput and the postFixup hook runs later. # behaviour as fixupOutputHooks because the setup hook for patchelf is run in
# # fixupOutput and the postFixup hook runs later.
# shellcheck disable=SC2016 if [[ -z "${dontAutoPatchelf-}" ]]; then
# (Expressions don't expand in single quotes, use double quotes for that.)
postFixupHooks+=('
if [ -z "${dontAutoPatchelf-}" ]; then
autoPatchelf -- $(for output in $(getAllOutputNames); do autoPatchelf -- $(for output in $(getAllOutputNames); do
[ -e "${!output}" ] || continue [ -e "${!output}" ] || continue
echo "${!output}" echo "${!output}"
done) done)
fi fi
') }
postFixupHooks+=(autoPatchelfPostFixup)