---
 gx86/eclass/python-r1.eclass | 66 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 66 insertions(+)

diff --git a/gx86/eclass/python-r1.eclass b/gx86/eclass/python-r1.eclass
index 0d6ef4c..6d4eb33 100644
--- a/gx86/eclass/python-r1.eclass
+++ b/gx86/eclass/python-r1.eclass
@@ -363,6 +363,70 @@ python_copy_sources() {
        done
 }
 
+# @FUNCTION: _python_check_USE_PYTHON
+# @INTERNAL
+# @DESCRIPTION:
+# Check whether USE_PYTHON and PYTHON_TARGETS are in sync. Output
+# warnings if they are not.
+_python_check_USE_PYTHON() {
+       if [[ ! ${_PYTHON_USE_PYTHON_CHECKED} ]]; then
+               _PYTHON_USE_PYTHON_CHECKED=1
+
+               local USE_PYTHON=${USE_PYTHON}
+
+               if [[ ! ${USE_PYTHON} ]]; then
+                       # default to selected Python2+3
+                       if has_version app-admin/eselect-python; then
+                               local py2=$(eselect python show --python2)
+                               local py3=$(eselect python show --python3)
+
+                               USE_PYTHON="${py2#python} ${py3#python}"
+                       fi
+               fi
+
+               local impl warned
+               for impl in "${PYTHON_COMPAT[@]}"; do
+                       local abi
+                       case "${impl}" in
+                               python*)
+                                       abi=${impl#python}
+                                       ;;
+                               jython*)
+                                       abi=${impl#jython}-jython
+                                       ;;
+                               pypy*)
+                                       abi=2.7-pypy-${impl#pypy}
+                                       ;;
+                               *)
+                                       die "Unexpected Python implementation: 
${impl}"
+                                       ;;
+                       esac
+
+                       has "${abi/_/.}" ${USE_PYTHON}
+                       local has_abi=${?}
+                       use "python_targets_${impl}"
+                       local has_impl=${?}
+
+                       if [[ ${has_abi} != ${has_impl} ]]; then
+                               if [[ ! ${warned} ]]; then
+                                       ewarn "PYTHON_TARGETS <-> USE_PYTHON 
inconsistency found. This may result"
+                                       ewarn "in missing modules when trying 
to use Python packages. Please ensure"
+                                       ewarn "that the same implementations 
are listed in both variables."
+                                       ewarn
+
+                                       warned=1
+                               fi
+
+                               if [[ ${has_abi} == 0 ]]; then
+                                       ewarn "Implementation ${impl} disabled 
but ${abi/_/.} in USE_PYTHON"
+                               else
+                                       ewarn "Implementation ${impl} enabled 
but ${abi/_/.} not in USE_PYTHON"
+                               fi
+                       fi
+               done
+       fi
+}
+
 # @FUNCTION: python_foreach_impl
 # @USAGE: <command> [<args>...]
 # @DESCRIPTION:
@@ -376,6 +440,8 @@ python_copy_sources() {
 python_foreach_impl() {
        debug-print-function ${FUNCNAME} "${@}"
 
+       _python_check_USE_PYTHON
+
        local impl
        local bdir=${BUILD_DIR:-${S}}
 
-- 
1.7.12.4


Reply via email to