commit:     20fe2ea87c7ccbcb1c50443e35d3019e7b35ce2b
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Nov  6 22:41:52 2015 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Tue Nov 10 17:40:49 2015 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=20fe2ea8

python-utils-r1.eclass: Obtain library path from the interpreter

Obtain library path as concatenation of LIBDIR and LDLIBRARY config
variables (from sysconfig module) rather than hardcoding it in the
eclass. This improves maintainability and fixes compatibility with
ABIFLAGS-enabled Python 3.3+.

 eclass/python-utils-r1.eclass   | 21 +++++++--------------
 eclass/tests/python-utils-r1.sh |  4 ++--
 2 files changed, 9 insertions(+), 16 deletions(-)

diff --git a/eclass/python-utils-r1.eclass b/eclass/python-utils-r1.eclass
index a0274f6..ec85d8a 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 dc6676b..e54550d 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
 

Reply via email to