blob: 4d596e148b0fd2c47e157275f6edbbcf1ecf8972 [file] [log] [blame]
#!/bin/bash
# Copyright 2013-2015 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
INSTALL_XATTR=${EPREFIX}/usr/bin/install-xattr
# Use safe cwd, avoiding unsafe import for bug #469338.
export __PORTAGE_HELPER_CWD=${PWD}
cd "${PORTAGE_PYM_PATH}"
export __PORTAGE_HELPER_PATH=${BASH_SOURCE[0]}
if [[ ${PORTAGE_INSTALL_XATTR_IMPLEMENTATION} == "c" ]]; then
implementation="c"
elif [[ ${PORTAGE_INSTALL_XATTR_IMPLEMENTATION} == "python" ]]; then
implementation="python"
else
# If PORTAGE_INSTALL_XATTR_IMPLEMENTATION is unset or not set to "c" or "python"
# then we'll autodetect, preferring "c" but falling back on "python"
if [[ -x "${INSTALL_XATTR}" ]]; then
implementation="c"
else
implementation="python"
fi
fi
# Filter internal portage paths from PATH, in order to avoid
# a possible exec loop or fork bomb (see bug 547086).
IFS=':'
set -f
path=
for x in ${PATH}; do
[[ ${x} == ${PORTAGE_OVERRIDE_EPREFIX}/usr/lib*/portage/* ]] && continue
[[ ${x} == */._portage_reinstall_.* ]] && continue
path+=":${x}"
done
PATH=${path#:}
if [[ "${implementation}" == "c" ]]; then
exec "${INSTALL_XATTR}" "$@"
elif [[ "${implementation}" == "python" ]]; then
PYTHONPATH=${PORTAGE_PYTHONPATH:-${PORTAGE_PYM_PATH}} \
exec "${PORTAGE_PYTHON:-/usr/bin/python}" "${PORTAGE_BIN_PATH}/install.py" "$@"
else
echo "Unknown implementation for PORTAGE_INSTALL_XATTR_IMPLEMENTATION"
exit -1
fi