crosstool-ng/scripts/override/install

50 lines
1.7 KiB
Plaintext
Raw Normal View History

#!@CONFIG_SHELL@
# GNU install takes the program to run to strip a binary via a --strip-program=
# argument. Fallback script, install-sh, chokes on any unknown option and takes
# the program name via $STRIPPROG variable - but that variable is ignored by
# GNU install. BSD install uses $STRIPBIN.
#
# If using GNU install, convert to the command line option. In any case, set
# STRIPPROG and STRIPBIN - they're either supported or harmless.
if [ -n "${STRIPPROG}" ]; then
if [ "@INSTALL_WITH_STRIP_PROGRAM@" = "y" ]; then
__strip_opt="--strip-program=${STRIPPROG}"
fi
export STRIPBIN="${STRIPPROG}"
fi
# Do the most common case first
if [ -z "${__PORTAGE_HELPER_PATH}" ]; then
exec @TOOL_PATH@ ${__strip_opt} "$@"
fi
# Not so simple case: Gentoo uses *two* wrappers around install script
# to deal with extended attributes:
# - /usr/lib/portage/python*/ebuild-helpers/xattr/install
# This sets __PORTAGE_HELPER_PATH (see the check above) and
# invokes either C- or Python-based wrapper (they do the same
# thing anyway). E.g., let it be /usr/bin/install-xattrs...
# - /usr/bin/install-xattrs
# This now analyzes $PATH and invokes 'install' in the first directory
# in $PATH where it is found, but not the __PORTAGE_HELPER_PATH
# This scheme breaks if we interject another install wrapper, resulting
# in a fork bomb. Hence, if we detected a loop, we need to remove our
# own directory from $PATH and try again. Ironically, the very code below
# based on that portage helper.
IFS=:
set -f
path=
for x in ${PATH}; do
case "${x}" in
@TOOLS_OVERRIDE_DIR@/bin) continue;;
esac
if test -n "${path}"; then
path="${path}:${x}"
else
path="${x}"
fi
done
PATH="${path}"
exec @TOOL_PATH@ ${__strip_opt} "$@"