autoconf tools and python3 3m 3dm

Mark Heieis mheieis at alois.ca
Tue Jan 21 12:55:13 EST 2014


Hi,

I've been migrating a python2 package+extension to python3. The problem 
I'm running into is with ./configure and which version it picks up or 
doesn't in this case.

The default is python2 and works just fine as expected.

However, when ./configure PYTHON=python3 is run, the problems occur. 
"./configure" picks python3 correctly and propagates that through to all 
of the makefiles created. Good so far. It defines all of the appropriate 
libs and include with the '3.3' extension.

The yum installed python3, however, is denoted by a suffix 'dm', 
yielding an extension of '3.3dm' (Fedora 20)
Building and installing from source, python has a suffix 'm', so the 
extension is '3.3m;

In ./configure, PYTHON_VERSION is set by "$PYTHON -c 'import sys; 
print(sys.version[:3])'" which reports "3.3". PYTHON_VERSION is then 
used as the suffix to find all of the appropriate python directories, 
libraries, site-packages and includes. The same result is had if 
python3.3m or python3.3dm is used.

Unfortunately, this isn't enough, as the python site packages are 
installed with naming ending in 'm' or 'dm', resulting in all of the 
makefiles failing because they can't find the libraries, include files, 
or site packages.

I've kludged a solution by manually creating soft links in the lib and 
include directories which almost solves the problem:

for example in /usr/lib64:

lrwxrwxrwx.  1 root root      19 2013-12-18 15:02 libpython2.7.so -> 
libpython2.7.so.1.0
-r-xr-xr-x.  1 root root 1800480 2013-11-12 08:47 libpython2.7.so.1.0
lrwxrwxrwx   1 root root      21 2014-01-20 16:11 libpython3.3dm.so -> 
libpython3.3dm.so.1.0
-rwxr-xr-x   1 root root 3057640 2013-11-07 02:03 libpython3.3dm.so.1.0
lrwxrwxrwx   1 root root      20 2014-01-20 16:11 libpython3.3m.so -> 
libpython3.3m.so.1.0
-rwxr-xr-x   1 root root 2498992 2013-11-07 02:03 libpython3.3m.so.1.0
lrwxrwxrwx   1 root root      20 2014-01-20 16:37 libpython3.3.so -> 
libpython3.3m.so.1.0
-rwxr-xr-x   1 root root    6704 2013-11-07 02:03 libpython3.so

This approach doesn't feel right to me.  I don't think pythonX.Y-config 
would work either as one would need to know in advance specifically 
which one to call and there'd be extra work to extract the full version 
info, etc. ("$python3-config --includes" yields 
-I/usr/include/python3.3m -I/usr/include/python3.3m)

Has anyone else come up against this? If so, what was the solution?

BTW - anyone know what the 'm' and 'dm' suffixes indicate?

TIA.









More information about the Python-list mailing list