Patch #1429775: Link Python modules to libpython on linux if
--enable-shared. Fixes #832799.
This commit is contained in:
parent
b04dee935c
commit
10acfd00b2
|
@ -185,7 +185,9 @@ class build_ext (Command):
|
||||||
|
|
||||||
# for extensions under Cygwin and AtheOS Python's library directory must be
|
# for extensions under Cygwin and AtheOS Python's library directory must be
|
||||||
# appended to library_dirs
|
# appended to library_dirs
|
||||||
if sys.platform[:6] == 'cygwin' or sys.platform[:6] == 'atheos':
|
if sys.platform[:6] == 'cygwin' or sys.platform[:6] == 'atheos' or \
|
||||||
|
(sys.platform.startswith('linux') and
|
||||||
|
sysconfig.get_config_var('Py_ENABLE_SHARED')):
|
||||||
if string.find(sys.executable, sys.exec_prefix) != -1:
|
if string.find(sys.executable, sys.exec_prefix) != -1:
|
||||||
# building third party extensions
|
# building third party extensions
|
||||||
self.library_dirs.append(os.path.join(sys.prefix, "lib",
|
self.library_dirs.append(os.path.join(sys.prefix, "lib",
|
||||||
|
@ -687,6 +689,13 @@ class build_ext (Command):
|
||||||
# don't extend ext.libraries, it may be shared with other
|
# don't extend ext.libraries, it may be shared with other
|
||||||
# extensions, it is a reference to the original list
|
# extensions, it is a reference to the original list
|
||||||
return ext.libraries + [pythonlib, "m"] + extra
|
return ext.libraries + [pythonlib, "m"] + extra
|
||||||
|
else:
|
||||||
|
from distutils import sysconfig
|
||||||
|
if sysconfig.get_config_var('Py_ENABLE_SHARED'):
|
||||||
|
template = "python%d.%d"
|
||||||
|
pythonlib = (template %
|
||||||
|
(sys.hexversion >> 24, (sys.hexversion >> 16) & 0xff))
|
||||||
|
return ext.libraries + [pythonlib]
|
||||||
else:
|
else:
|
||||||
return ext.libraries
|
return ext.libraries
|
||||||
|
|
||||||
|
|
|
@ -213,8 +213,8 @@ def parse_config_h(fp, g=None):
|
||||||
"""
|
"""
|
||||||
if g is None:
|
if g is None:
|
||||||
g = {}
|
g = {}
|
||||||
define_rx = re.compile("#define ([A-Z][A-Z0-9_]+) (.*)\n")
|
define_rx = re.compile("#define ([A-Z][A-Za-z0-9_]+) (.*)\n")
|
||||||
undef_rx = re.compile("/[*] #undef ([A-Z][A-Z0-9_]+) [*]/\n")
|
undef_rx = re.compile("/[*] #undef ([A-Z][A-Za-z0-9_]+) [*]/\n")
|
||||||
#
|
#
|
||||||
while 1:
|
while 1:
|
||||||
line = fp.readline()
|
line = fp.readline()
|
||||||
|
@ -351,6 +351,17 @@ def _init_posix():
|
||||||
|
|
||||||
raise DistutilsPlatformError(my_msg)
|
raise DistutilsPlatformError(my_msg)
|
||||||
|
|
||||||
|
# load the installed pyconfig.h:
|
||||||
|
try:
|
||||||
|
filename = get_config_h_filename()
|
||||||
|
parse_config_h(file(filename), g)
|
||||||
|
except IOError, msg:
|
||||||
|
my_msg = "invalid Python installation: unable to open %s" % filename
|
||||||
|
if hasattr(msg, "strerror"):
|
||||||
|
my_msg = my_msg + " (%s)" % msg.strerror
|
||||||
|
|
||||||
|
raise DistutilsPlatformError(my_msg)
|
||||||
|
|
||||||
# On MacOSX we need to check the setting of the environment variable
|
# On MacOSX we need to check the setting of the environment variable
|
||||||
# MACOSX_DEPLOYMENT_TARGET: configure bases some choices on it so
|
# MACOSX_DEPLOYMENT_TARGET: configure bases some choices on it so
|
||||||
# it needs to be compatible.
|
# it needs to be compatible.
|
||||||
|
|
Loading…
Reference in New Issue