#!/usr/bin/env bash
# Copyright 2013-2015 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

INSTALL_XATTR=${EPREFIX}/usr/bin/install-xattr

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/*/ebuild-helpers* ]] && continue
	path+=":${x}"
done
PATH=${path#:}

if [[ "${implementation}" == "c" ]]; then
	exec "${INSTALL_XATTR}" "$@"
elif [[ "${implementation}" == "python" ]]; then
	# 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]}
	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
