Revert "Revert "Revert "patch-shebangs: respect cross compilation"""
Completely breaks darwin. Every package in the stdenv that has shebangs
in the output will end up with references to bootstrap-tools.
This reverts commit bde99096a8
.
This commit is contained in:
parent
c9223a17bc
commit
bdec3ed049
@ -5,32 +5,10 @@
|
|||||||
# rewritten to /nix/store/<hash>/bin/python. Interpreters that are
|
# rewritten to /nix/store/<hash>/bin/python. Interpreters that are
|
||||||
# already in the store are left untouched.
|
# already in the store are left untouched.
|
||||||
|
|
||||||
fixupOutputHooks+=(patchShebangsAuto)
|
fixupOutputHooks+=('if [ -z "$dontPatchShebangs" -a -e "$prefix" ]; then patchShebangs "$prefix"; fi')
|
||||||
|
|
||||||
# Run patch shebangs on a directory.
|
|
||||||
# patchShebangs [--build | --host] directory
|
|
||||||
|
|
||||||
# Flags:
|
|
||||||
# --build : Lookup commands available at build-time
|
|
||||||
# --host : Lookup commands available at runtime
|
|
||||||
|
|
||||||
# Example use cases,
|
|
||||||
# $ patchShebangs --host /nix/store/...-hello-1.0/bin
|
|
||||||
# $ patchShebangs --build configure
|
|
||||||
|
|
||||||
patchShebangs() {
|
patchShebangs() {
|
||||||
local pathName
|
|
||||||
|
|
||||||
if [ "$1" = "--host" ]; then
|
|
||||||
pathName=HOST_PATH
|
|
||||||
shift
|
|
||||||
elif [ "$1" = "--build" ]; then
|
|
||||||
pathName=PATH
|
|
||||||
shift
|
|
||||||
fi
|
|
||||||
|
|
||||||
local dir="$1"
|
local dir="$1"
|
||||||
|
|
||||||
header "patching script interpreter paths in $dir"
|
header "patching script interpreter paths in $dir"
|
||||||
local f
|
local f
|
||||||
local oldPath
|
local oldPath
|
||||||
@ -49,14 +27,6 @@ patchShebangs() {
|
|||||||
oldInterpreterLine=$(head -1 "$f" | tail -c+3)
|
oldInterpreterLine=$(head -1 "$f" | tail -c+3)
|
||||||
read -r oldPath arg0 args <<< "$oldInterpreterLine"
|
read -r oldPath arg0 args <<< "$oldInterpreterLine"
|
||||||
|
|
||||||
if [ -z "$pathName" ]; then
|
|
||||||
if [ -n "$strictDeps" ] && [[ "$f" = "$NIX_STORE"* ]]; then
|
|
||||||
pathName=HOST_PATH
|
|
||||||
else
|
|
||||||
pathName=PATH
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if $(echo "$oldPath" | grep -q "/bin/env$"); then
|
if $(echo "$oldPath" | grep -q "/bin/env$"); then
|
||||||
# Check for unsupported 'env' functionality:
|
# Check for unsupported 'env' functionality:
|
||||||
# - options: something starting with a '-'
|
# - options: something starting with a '-'
|
||||||
@ -65,17 +35,14 @@ patchShebangs() {
|
|||||||
echo "$f: unsupported interpreter directive \"$oldInterpreterLine\" (set dontPatchShebangs=1 and handle shebang patching yourself)"
|
echo "$f: unsupported interpreter directive \"$oldInterpreterLine\" (set dontPatchShebangs=1 and handle shebang patching yourself)"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
newPath="$(command -v "$arg0" || true)"
|
||||||
newPath="$(PATH="${!pathName}" command -v "$arg0" || true)"
|
|
||||||
else
|
else
|
||||||
if [ "$oldPath" = "" ]; then
|
if [ "$oldPath" = "" ]; then
|
||||||
# If no interpreter is specified linux will use /bin/sh. Set
|
# If no interpreter is specified linux will use /bin/sh. Set
|
||||||
# oldpath="/bin/sh" so that we get /nix/store/.../sh.
|
# oldpath="/bin/sh" so that we get /nix/store/.../sh.
|
||||||
oldPath="/bin/sh"
|
oldPath="/bin/sh"
|
||||||
fi
|
fi
|
||||||
|
newPath="$(command -v "$(basename "$oldPath")" || true)"
|
||||||
newPath="$(PATH="${!pathName}" command -v "$(basename "$oldPath")" || true)"
|
|
||||||
|
|
||||||
args="$arg0 $args"
|
args="$arg0 $args"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -98,17 +65,3 @@ patchShebangs() {
|
|||||||
|
|
||||||
stopNest
|
stopNest
|
||||||
}
|
}
|
||||||
|
|
||||||
patchShebangsAuto () {
|
|
||||||
if [ -z "$dontPatchShebangs" -a -e "$prefix" ]; then
|
|
||||||
|
|
||||||
# Dev output will end up being run on the build platform. An
|
|
||||||
# example case of this is sdl2-config. Otherwise, we can just
|
|
||||||
# use the runtime path (--host).
|
|
||||||
if [ "$output" != out ] && [ "$output" = "${!outputDev}" ]; then
|
|
||||||
patchShebangs --build "$prefix"
|
|
||||||
else
|
|
||||||
patchShebangs --host "$prefix"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
Loading…
Reference in New Issue
Block a user