87 lines
3.7 KiB
Diff
87 lines
3.7 KiB
Diff
|
On older versions of Python, sysconfig read the data from both the Makefile and
|
||
|
the Python.h file generated at build time, created dictionaries with their variables
|
||
|
and used those when using get_config_var(), now it uses _sysconfigdata.build_time_vars[]
|
||
|
which contains information from the HOST, erroneous in our case, this patch reverts this
|
||
|
behavior and uses Python.h and Makefile to get information.
|
||
|
|
||
|
Upstream-Status: Inappropriate [oe-specific]
|
||
|
|
||
|
Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com>
|
||
|
|
||
|
Index: Python-2.7.9/Lib/distutils/sysconfig.py
|
||
|
===================================================================
|
||
|
--- Python-2.7.9.orig/Lib/distutils/sysconfig.py
|
||
|
+++ Python-2.7.9/Lib/distutils/sysconfig.py
|
||
|
@@ -401,12 +401,66 @@ _config_vars = None
|
||
|
|
||
|
def _init_posix():
|
||
|
"""Initialize the module as appropriate for POSIX systems."""
|
||
|
- # _sysconfigdata is generated at build time, see the sysconfig module
|
||
|
- from _sysconfigdata import build_time_vars
|
||
|
- global _config_vars
|
||
|
- _config_vars = {}
|
||
|
- _config_vars.update(build_time_vars)
|
||
|
+ g = {}
|
||
|
+ # load the installed Makefile:
|
||
|
+ try:
|
||
|
+ filename = get_makefile_filename()
|
||
|
+ parse_makefile(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)
|
||
|
+
|
||
|
+ # 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 AIX, there are wrong paths to the linker scripts in the Makefile
|
||
|
+ # -- these paths are relative to the Python source, but when installed
|
||
|
+ # the scripts are in another directory.
|
||
|
+ if python_build:
|
||
|
+ g['LDSHARED'] = g['BLDSHARED']
|
||
|
|
||
|
+ elif get_python_version() < '2.1':
|
||
|
+ # The following two branches are for 1.5.2 compatibility.
|
||
|
+ if sys.platform == 'aix4': # what about AIX 3.x ?
|
||
|
+ # Linker script is in the config directory, not in Modules as the
|
||
|
+ # Makefile says.
|
||
|
+ python_lib = get_python_lib(standard_lib=1)
|
||
|
+ ld_so_aix = os.path.join(python_lib, 'config', 'ld_so_aix')
|
||
|
+ python_exp = os.path.join(python_lib, 'config', 'python.exp')
|
||
|
+
|
||
|
+ g['LDSHARED'] = "%s %s -bI:%s" % (ld_so_aix, g['CC'], python_exp)
|
||
|
+
|
||
|
+ elif sys.platform == 'beos':
|
||
|
+ # Linker script is in the config directory. In the Makefile it is
|
||
|
+ # relative to the srcdir, which after installation no longer makes
|
||
|
+ # sense.
|
||
|
+ python_lib = get_python_lib(standard_lib=1)
|
||
|
+ linkerscript_path = string.split(g['LDSHARED'])[0]
|
||
|
+ linkerscript_name = os.path.basename(linkerscript_path)
|
||
|
+ linkerscript = os.path.join(python_lib, 'config',
|
||
|
+ linkerscript_name)
|
||
|
+
|
||
|
+ # XXX this isn't the right place to do this: adding the Python
|
||
|
+ # library to the link, if needed, should be in the "build_ext"
|
||
|
+ # command. (It's also needed for non-MS compilers on Windows, and
|
||
|
+ # it's taken care of for them by the 'build_ext.get_libraries()'
|
||
|
+ # method.)
|
||
|
+ g['LDSHARED'] = ("%s -L%s/lib -lpython%s" %
|
||
|
+ (linkerscript, PREFIX, get_python_version()))
|
||
|
+
|
||
|
+ global _config_vars
|
||
|
+ _config_vars = g
|
||
|
|
||
|
def _init_nt():
|
||
|
"""Initialize the module as appropriate for NT"""
|