https://github.com/NixOS/nixpkgs/blob/master/pkgs/stdenv/generic/setup.sh#L948 this can do it nicely. Signed-off-by: Anton Arapov <anton@deadbeef.mx>
43 lines
1.3 KiB
Bash
43 lines
1.3 KiB
Bash
# Inherit arguments from the derivation
|
|
makeWrapperArgs=( ${makeWrapperArgs-} )
|
|
|
|
# First argument is the executable you want to wrap,
|
|
# the second is the destination for the wrapper.
|
|
wrapDotnetProgram() {
|
|
makeWrapper "$1" "$2" \
|
|
--set "DOTNET_ROOT" "@dotnetRuntime@" \
|
|
--suffix "LD_LIBRARY_PATH" : "@runtimeDeps@" \
|
|
"${gappsWrapperArgs[@]}" \
|
|
"${makeWrapperArgs[@]}"
|
|
|
|
echo "Installed wrapper to: "$2""
|
|
}
|
|
|
|
dotnetFixupHook() {
|
|
echo "Executing dotnetFixupPhase"
|
|
|
|
if [ "${executables}" ]; then
|
|
for executable in ${executables[@]}; do
|
|
execPath="$out/lib/${pname}/$executable"
|
|
|
|
if [[ -f "$execPath" && -x "$execPath" ]]; then
|
|
wrapDotnetProgram "$execPath" "$out/bin/$(basename "$executable")"
|
|
else
|
|
echo "Specified binary \"$executable\" is either not an executable, or does not exist!"
|
|
exit 1
|
|
fi
|
|
done
|
|
else
|
|
for executable in $out/lib/${pname}/*; do
|
|
if [[ -f "$executable" && -x "$executable" && "$executable" != *"dll"* ]]; then
|
|
wrapDotnetProgram "$executable" "$out/bin/$(basename "$executable")"
|
|
fi
|
|
done
|
|
fi
|
|
|
|
echo "Finished dotnetFixupPhase"
|
|
}
|
|
|
|
if [[ -z "${dontDotnetFixup-}" ]]; then
|
|
preFixupPhases+=" dotnetFixupHook"
|
|
fi
|