New submission from Andy Salnikov:

Hi,

when trying to build extension modules with distutils I ran into
a problem that linking fails with an errors like:

gcc -pthread -shared -L build/temp.linux-x86_64-2.7/h5py/defs.o 
-L/reg/g/psdm/sw/external/hdf5/1.8.4p1/x86_64-rhel6-gcc44-opt/lib -L. 
-Wl,-R/reg/g/psdm/sw/external/hdf5/1.8.4p1/x86_64-rhel6-gcc44-opt/lib -lhdf5 
-lpython2.7 -o build/lib.linux-x86_64-2.7/h5py/defs.so
/usr/bin/ld: cannot find -lpython2.7
collect2: ld returned 1 exit status

For some reason location of the python library is not added to the 
command line with -L option.

I tracked the reason down to a particular environment that we have, 
in out environment python executable found in a $PATH is a symbolic link
to a binary installed in some non-standard location. I believe this 
piece of code in build_ext.py fails to realize this:

            if sys.executable.startswith(os.path.join(sys.exec_prefix, "bin")):
                # building third party extensions
                self.library_dirs.append(sysconfig.get_config_var('LIBDIR'))
            else:
                # building python standard extensions
                self.library_dirs.append('.')

apparently sys.executable in our case refers to a symlink path, while 
sys.exec_prefix refers to actual installation directory.

I think fix for our case should be easy (I can't say about other cases
which may be broken by this logic), one just need to apply os.path.realpath()
to sys.executable before comparing it to sys.exec_prefix.

Andy

----------
assignee: eric.araujo
components: Distutils
messages: 173796
nosy: Andy.Salnikov, eric.araujo, tarek
priority: normal
severity: normal
status: open
title: distutils build_ext fails to set library_dirs in 2.7.2 on Linux
type: compile error
versions: Python 2.7

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue16326>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to