Date: prev next · Thread: first prev next last
2011 Archives by date, by thread · List index


On (2011-04-20 10:14), Michael Meeks wrote:
Hi Andreas,

On Wed, 2011-04-20 at 09:52 +0200, Andreas Becker wrote:
Really not. 
The reason is, that the old version does not always work:
For me, print(distutils.sysconfig.get_config_var('VERSION')); prints
"3.2", but the library is libpython3.2mu.so.
..
The absolute path in my patch is always the right one and I do not
know any disadvantages of an absolute path.

      Clearly, random different linux's can put python in random different
places [ oh, the joys of anarchy ]. No idea how well an absolute path
works with LD_LIBRARY_PATH either.

      So - in general, surely it is better not to hard-code the paths of the
libraries if at all possible.

      Can we get more detail on cases where it doesn't work ?

      ATB,

              Michael.

-- 
 michael.meeks@novell.com  <><, Pseudo Engineer, itinerant idiot



Andreas,

This should make python3 work too. What it basically does
is that it gets the correct library name from the python binary
itself and uses that to link.

diff --git a/configure.in b/configure.in
index 470aa39..430a7da 100755
--- a/configure.in
+++ b/configure.in
@@ -1344,6 +1344,11 @@ if test -z "$GNUTAR"; then
 fi
 AC_SUBST(GNUTAR)
 
+AC_PATH_PROG(OBJDUMP, objdump)
+if test -z "$OBJDUMP"; then
+    AC_MSG_ERROR([objdump not found but needed. Install it.])
+fi
+
 dnl ===================================================================
 dnl Checks for --with-local-solenv invocation
 dnl TODO: Is this still required?
@@ -4108,11 +4113,11 @@ elif test -n "$with_system_python" -o -n "$with_system_libs" && \
    AM_PATH_PYTHON([2.2])
 
    python_include=`$PYTHON -c "import distutils.sysconfig; 
print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
-   python_version=`$PYTHON -c "import distutils.sysconfig; 
print(distutils.sysconfig.get_config_var('VERSION'));"`
+   python_lib=`$OBJDUMP -p $PYTHON | ${SED} -n 's/.*\libpython\(.*\).so.*/python\1/p'`
    python_libs=`$PYTHON -c "import distutils.sysconfig; 
print(distutils.sysconfig.get_config_var('LIBS'));"`
    python_libdir=`$PYTHON -c "import distutils.sysconfig; 
print(distutils.sysconfig.get_config_var('LIBDIR'));"`
    PYTHON_CFLAGS="-I$python_include"
-   PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
+   PYTHON_LIBS="-L$python_libdir -l$python_lib $python_libs"
 fi
 if test "$with_system_python" = "yes" ; then
    SYSTEM_PYTHON=YES


Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.