A semi-replacement for _python-distutils-ng_very_long_name... Unlike the forementioned function, it returns just the binary name and not the complete path. Thus, the executable rewrite in p-d-ng has been changed to use #!/usr/bin/env. --- gx86/eclass/python-distutils-ng.eclass | 28 ++++------------------------ gx86/eclass/python-r1.eclass | 20 ++++++++++++++++++++ 2 files changed, 24 insertions(+), 24 deletions(-)
diff --git a/gx86/eclass/python-distutils-ng.eclass b/gx86/eclass/python-distutils-ng.eclass index 34717aa..33d183c 100644 --- a/gx86/eclass/python-distutils-ng.eclass +++ b/gx86/eclass/python-distutils-ng.eclass @@ -54,26 +54,6 @@ EXPORT_FUNCTIONS src_prepare src_configure src_compile src_test src_install DEPEND="${DEPEND} !<sys-apps/portage-2.1.10.58" -# @FUNCTION: _python-distutils-ng_get_binary_for_implementation -# @USAGE: implementation -# @RETURN: Full path to Python binary for given implementation. -# @DESCRIPTION: -# This function returns full path for Python binary for given implementation. -# -# Binary returned by this function should be used instead of simply calling -# `python'. -_python-distutils-ng_get_binary_for_implementation() { - local impl="${1/_/.}" - case "${impl}" in - python?.?|jython?.?) - echo "/usr/bin/${impl}" ;; - pypy?.?) - echo "/usr/bin/pypy-c${impl: -3}" ;; - *) - die "Unsupported implementation: ${1}" ;; - esac -} - RDEPEND=${PYTHON_DEPS} DEPEND=${PYTHON_DEPS} @@ -90,7 +70,7 @@ _python-distutils-ng_run_for_impl() { local command="${2}" local S="${WORKDIR}/impl_${impl}/${_PACKAGE_SPECIFIC_S}" - PYTHON="$(_python-distutils-ng_get_binary_for_implementation "${impl}")" + PYTHON="$(python_get_PYTHON "${impl}")" EPYTHON="${impl/_/.}" einfo "Running ${command} in ${S} for ${impl}" @@ -147,10 +127,10 @@ python-distutils-ng_rewrite_hashbang() { [[ -n "${1}" ]] || die "Missing file name" [[ -n "${2}" ]] || die "Missing implementation" local file_name="${1}" - local binary="$(_python-distutils-ng_get_binary_for_implementation "${2}")" + local binary="$(python_get_PYTHON "${2}")" [[ $(head -n 1 "${file_name}") == '#!'*(python|jython|pypy-c)* ]] || \ die "Missing or invalid #! line in ${file_name}" - sed -i -e "1c#!${binary}" "${file_name}" || die + sed -i -e "1c#!/usr/bin/env ${binary}" "${file_name}" || die } # @FUNCTION: python-distutils-ng_redoscript @@ -253,7 +233,7 @@ python-distutils-ng_src_prepare() { # Try to run binary for each implementation: for impl in ${PYTHON_COMPAT[@]}; do use "python_targets_${impl}" ${PYTHON_COMPAT[@]} || continue - $(_python-distutils-ng_get_binary_for_implementation "${impl}") \ + $(python_get_PYTHON "${impl}") \ -c "import sys" || die done diff --git a/gx86/eclass/python-r1.eclass b/gx86/eclass/python-r1.eclass index 68b5c38..4c4d69d 100644 --- a/gx86/eclass/python-r1.eclass +++ b/gx86/eclass/python-r1.eclass @@ -118,3 +118,23 @@ _python_set_globals() { done } _python_set_globals + +# @FUNCTION: python_get_PYTHON +# @USAGE: <impl> +# @DESCRIPTION: +# Get the Python executable name for the given implementation. +python_get_PYTHON() { + local impl=${1/_/.} + + case "${impl}" in + python*|jython*) + echo ${impl} + ;; + pypy*) + echo pypy-c${impl#pypy} + ;; + *) + die "Invalid argument to python_get_PYTHON: ${1}" + ;; + esac +} -- 1.7.12