Patch #1429775: Link Python modules to libpython on linux if

--enable-shared. Fixes #832799.
This commit is contained in:
Martin v. Löwis 2006-04-10 12:39:36 +00:00
parent b04dee935c
commit 10acfd00b2
3 changed files with 26 additions and 4 deletions

View File

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

View File

@ -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.

View File

@ -33,6 +33,8 @@ Library
Build Build
----- -----
- Patch #1429775: Link extension modules with the shared libpython.
C API C API
----- -----