diff --git a/eclass/python-utils-r1.eclass b/eclass/python-utils-r1.eclass index 69166cfbf9db0..a0274f60616b2 100644 --- a/eclass/python-utils-r1.eclass +++ b/eclass/python-utils-r1.eclass @@ -138,6 +138,7 @@ _python_impl_supported() { # The path to Python include directory. # # Set and exported on request using python_export(). +# Requires a proper build-time dependency on the Python implementation. # # Example value: # @CODE @@ -279,21 +280,13 @@ python_export() { debug-print "${FUNCNAME}: PYTHON_SITEDIR = ${PYTHON_SITEDIR}" ;; PYTHON_INCLUDEDIR) - local dir - case "${impl}" in - python*) - dir=/usr/include/${impl} - ;; - pypy|pypy3) - dir=/usr/$(get_libdir)/${impl}/include - ;; - *) - die "${impl} lacks header files" - ;; - esac - - export PYTHON_INCLUDEDIR=${EPREFIX}${dir} + export PYTHON_INCLUDEDIR=$("${PYTHON}" -c 'import distutils.sysconfig; print(distutils.sysconfig.get_python_inc())') debug-print "${FUNCNAME}: PYTHON_INCLUDEDIR = ${PYTHON_INCLUDEDIR}" + + # Jython gives a non-existing directory + if [[ ! -d ${PYTHON_INCLUDEDIR} ]]; then + die "${impl} does not install any header files!" + fi ;; PYTHON_LIBPATH) local libname diff --git a/eclass/tests/python-utils-r1.sh b/eclass/tests/python-utils-r1.sh index bd05e9ebc3c33..dc6676b6ca373 100755 --- a/eclass/tests/python-utils-r1.sh +++ b/eclass/tests/python-utils-r1.sh @@ -64,7 +64,9 @@ inherit python-utils-r1 test_var EPYTHON python2_7 python2.7 test_var PYTHON python2_7 /usr/bin/python2.7 test_var PYTHON_SITEDIR python2_7 /usr/lib/python2.7/site-packages -test_var PYTHON_INCLUDEDIR python2_7 /usr/include/python2.7 +if [[ -x /usr/bin/python2.7 ]]; then + test_var PYTHON_INCLUDEDIR python2_7 /usr/include/python2.7 +fi test_var PYTHON_LIBPATH python2_7 /usr/lib/libpython2.7$(get_libname) test_var PYTHON_PKG_DEP python2_7 '*dev-lang/python*:2.7' test_var PYTHON_SCRIPTDIR python2_7 /usr/lib/python-exec/python2.7 @@ -72,7 +74,10 @@ test_var PYTHON_SCRIPTDIR python2_7 /usr/lib/python-exec/python2.7 test_var EPYTHON python3_4 python3.4 test_var PYTHON python3_4 /usr/bin/python3.4 test_var PYTHON_SITEDIR python3_4 /usr/lib/python3.4/site-packages -test_var PYTHON_INCLUDEDIR python3_4 /usr/include/python3.4 +if [[ -x /usr/bin/python3.4 ]]; then + abiflags=$(/usr/bin/python3.4 -c 'import sysconfig; print(sysconfig.get_config_var("ABIFLAGS"))') + test_var PYTHON_INCLUDEDIR python3_4 "/usr/include/python3.4${abiflags}" +fi test_var PYTHON_LIBPATH python3_4 /usr/lib/libpython3.4$(get_libname) test_var PYTHON_PKG_DEP python3_4 '*dev-lang/python*:3.4' test_var PYTHON_SCRIPTDIR python3_4 /usr/lib/python-exec/python3.4 @@ -86,14 +91,18 @@ test_var PYTHON_SCRIPTDIR jython2_7 /usr/lib/python-exec/jython2.7 test_var EPYTHON pypy pypy test_var PYTHON pypy /usr/bin/pypy test_var PYTHON_SITEDIR pypy /usr/lib/pypy/site-packages -test_var PYTHON_INCLUDEDIR pypy /usr/lib/pypy/include +if [[ -x /usr/bin/pypy ]]; then + test_var PYTHON_INCLUDEDIR pypy "/usr/lib*/pypy/include" +fi test_var PYTHON_PKG_DEP pypy '*virtual/pypy*:0=' test_var PYTHON_SCRIPTDIR pypy /usr/lib/python-exec/pypy test_var EPYTHON pypy3 pypy3 test_var PYTHON pypy3 /usr/bin/pypy3 test_var PYTHON_SITEDIR pypy3 /usr/lib/pypy3/site-packages -test_var PYTHON_INCLUDEDIR pypy3 /usr/lib/pypy3/include +if [[ -x /usr/bin/pypy3 ]]; then + test_var PYTHON_INCLUDEDIR pypy3 /usr/lib/pypy3/include +fi test_var PYTHON_PKG_DEP pypy3 '*virtual/pypy3*:0=' test_var PYTHON_SCRIPTDIR pypy3 /usr/lib/python-exec/pypy3