diff --git a/eclass/python-utils-r1.eclass b/eclass/python-utils-r1.eclass index a0274f60616b2..ec85d8aee61d8 100644 --- a/eclass/python-utils-r1.eclass +++ b/eclass/python-utils-r1.eclass @@ -151,7 +151,8 @@ _python_impl_supported() { # The path to Python library. # # Set and exported on request using python_export(). -# Valid only for CPython. +# Valid only for CPython. Requires a proper build-time dependency +# on the Python implementation. # # Example value: # @CODE @@ -289,20 +290,12 @@ python_export() { fi ;; PYTHON_LIBPATH) - local libname - case "${impl}" in - python*) - libname=lib${impl} - ;; - *) - die "${impl} lacks a dynamic library" - ;; - esac - - local path=${EPREFIX}/usr/$(get_libdir) - - export PYTHON_LIBPATH=${path}/${libname}$(get_libname) + export PYTHON_LIBPATH=$("${PYTHON}" -c 'import os.path, sysconfig; print(os.path.join(sysconfig.get_config_var("LIBDIR"), sysconfig.get_config_var("LDLIBRARY")) if sysconfig.get_config_var("LDLIBRARY") else "")') debug-print "${FUNCNAME}: PYTHON_LIBPATH = ${PYTHON_LIBPATH}" + + if [[ ! ${PYTHON_LIBPATH} ]]; then + die "${impl} lacks a (usable) dynamic library" + fi ;; PYTHON_CFLAGS) local val diff --git a/eclass/tests/python-utils-r1.sh b/eclass/tests/python-utils-r1.sh index dc6676b6ca373..e54550debac1c 100755 --- a/eclass/tests/python-utils-r1.sh +++ b/eclass/tests/python-utils-r1.sh @@ -66,8 +66,8 @@ test_var PYTHON python2_7 /usr/bin/python2.7 test_var PYTHON_SITEDIR python2_7 /usr/lib/python2.7/site-packages if [[ -x /usr/bin/python2.7 ]]; then test_var PYTHON_INCLUDEDIR python2_7 /usr/include/python2.7 + test_var PYTHON_LIBPATH python2_7 "/usr/lib*/libpython2.7$(get_libname)" 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 @@ -77,8 +77,8 @@ test_var PYTHON_SITEDIR python3_4 /usr/lib/python3.4/site-packages 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}" + test_var PYTHON_LIBPATH python3_4 "/usr/lib*/libpython3.4${abiflags}$(get_libname)" 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