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
--
2.6.3