Move the logic out of doscript() to make it reusable. Also, use
_PYTHON_ALL_IMPLS[@] instead of hardcoding the preference list.
---
gx86/eclass/python-distutils-ng.eclass | 38 +++++++++++++++++++++-------------
1 file changed, 24 insertions(+), 14 deletions(-)
+# Get the preferred implementation for the symlink.
+_python-distutils-ng_get_best_impl() {
+ local defimpl=${PYTHON_DEFAULT_IMPLEMENTATION}
+
+ if [[ ${defimpl} ]]; then
+ if use ${defimpl}; then
+ echo ${defimpl}
+ else
+ die "default implementation ${defimpl} not enabled."
+ fi
+ else
+ local impl
+ for impl in ${_PYTHON_ALL_IMPLS[@]}; do
+ if use python_targets_${impl}; then
+ echo "${impl}"
+ return
+ fi
+ done
+ fi
+
+ die "unable to find a default Python implementation."
+}
+
# @FUNCTION: python-distutils-ng_newscript
# @USAGE: script_file_name new_file_name [destination_directory]
# @DESCRIPTION:
@@ -184,7 +207,7 @@ python-distutils-ng_newscript() {
[[ -n "${2}" ]] || die "Missing destination file name"
local source_file="${1}"
local destination_file="${2}"
- local default_impl="${PYTHON_DEFAULT_IMPLEMENTATION}"
+ local default_impl=$(_python-distutils-ng_get_best_impl)
local enabled_impls=0
local destination_directory="/usr/bin"
[[ -n "${3}" ]] && destination_directory="${3}"
@@ -194,19 +217,6 @@ python-distutils-ng_newscript() {
enabled_impls=$((enabled_impls + 1))
done
- if [[ -z "${default_impl}" ]]; then
- for impl in python{2_7,2_6,2_5,3_2,3_1} pypy{1_9,1_8,1_7} jython2_5; do
- use "python_targets_${impl}" || continue
- default_impl="${impl}"
- break
- done
- else
- use "python_targets_${default_impl}" ||
- die "default implementation ${default_impl} not enabled"
- fi
-
- [[ -n "${default_impl}" ]] || die "Could not select default implementation"
-
dodir "${destination_directory}"
insinto "${destination_directory}"
if [[ "${enabled_impls}" = "1" ]]; then
--
1.7.12