Patrick Williams | c124f4f | 2015-09-15 14:41:29 -0500 | [diff] [blame] | 1 | On older versions of Python, sysconfig read the data from both the Makefile and |
| 2 | the Python.h file generated at build time, created dictionaries with their variables |
| 3 | and used those when using get_config_var(), now it uses _sysconfigdata.build_time_vars[] |
| 4 | which contains information from the HOST, erroneous in our case, this patch reverts this |
| 5 | behavior and uses Python.h and Makefile to get information. |
| 6 | |
| 7 | Upstream-Status: Inappropriate [oe-specific] |
| 8 | |
| 9 | Signed-off-by: Alejandro Hernandez <alejandro.hernandez@linux.intel.com> |
| 10 | |
| 11 | Index: Python-2.7.9/Lib/distutils/sysconfig.py |
| 12 | =================================================================== |
| 13 | --- Python-2.7.9.orig/Lib/distutils/sysconfig.py |
| 14 | +++ Python-2.7.9/Lib/distutils/sysconfig.py |
| 15 | @@ -401,12 +401,66 @@ _config_vars = None |
| 16 | |
| 17 | def _init_posix(): |
| 18 | """Initialize the module as appropriate for POSIX systems.""" |
| 19 | - # _sysconfigdata is generated at build time, see the sysconfig module |
| 20 | - from _sysconfigdata import build_time_vars |
| 21 | - global _config_vars |
| 22 | - _config_vars = {} |
| 23 | - _config_vars.update(build_time_vars) |
| 24 | + g = {} |
| 25 | + # load the installed Makefile: |
| 26 | + try: |
| 27 | + filename = get_makefile_filename() |
| 28 | + parse_makefile(filename, g) |
| 29 | + except IOError, msg: |
| 30 | + my_msg = "invalid Python installation: unable to open %s" % filename |
| 31 | + if hasattr(msg, "strerror"): |
| 32 | + my_msg = my_msg + " (%s)" % msg.strerror |
| 33 | + |
| 34 | + raise DistutilsPlatformError(my_msg) |
| 35 | + |
| 36 | + # load the installed pyconfig.h: |
| 37 | + try: |
| 38 | + filename = get_config_h_filename() |
| 39 | + parse_config_h(file(filename), g) |
| 40 | + except IOError, msg: |
| 41 | + my_msg = "invalid Python installation: unable to open %s" % filename |
| 42 | + if hasattr(msg, "strerror"): |
| 43 | + my_msg = my_msg + " (%s)" % msg.strerror |
| 44 | + |
| 45 | + raise DistutilsPlatformError(my_msg) |
| 46 | + |
| 47 | + # On AIX, there are wrong paths to the linker scripts in the Makefile |
| 48 | + # -- these paths are relative to the Python source, but when installed |
| 49 | + # the scripts are in another directory. |
| 50 | + if python_build: |
| 51 | + g['LDSHARED'] = g['BLDSHARED'] |
| 52 | |
| 53 | + elif get_python_version() < '2.1': |
| 54 | + # The following two branches are for 1.5.2 compatibility. |
| 55 | + if sys.platform == 'aix4': # what about AIX 3.x ? |
| 56 | + # Linker script is in the config directory, not in Modules as the |
| 57 | + # Makefile says. |
| 58 | + python_lib = get_python_lib(standard_lib=1) |
| 59 | + ld_so_aix = os.path.join(python_lib, 'config', 'ld_so_aix') |
| 60 | + python_exp = os.path.join(python_lib, 'config', 'python.exp') |
| 61 | + |
| 62 | + g['LDSHARED'] = "%s %s -bI:%s" % (ld_so_aix, g['CC'], python_exp) |
| 63 | + |
| 64 | + elif sys.platform == 'beos': |
| 65 | + # Linker script is in the config directory. In the Makefile it is |
| 66 | + # relative to the srcdir, which after installation no longer makes |
| 67 | + # sense. |
| 68 | + python_lib = get_python_lib(standard_lib=1) |
| 69 | + linkerscript_path = string.split(g['LDSHARED'])[0] |
| 70 | + linkerscript_name = os.path.basename(linkerscript_path) |
| 71 | + linkerscript = os.path.join(python_lib, 'config', |
| 72 | + linkerscript_name) |
| 73 | + |
| 74 | + # XXX this isn't the right place to do this: adding the Python |
| 75 | + # library to the link, if needed, should be in the "build_ext" |
| 76 | + # command. (It's also needed for non-MS compilers on Windows, and |
| 77 | + # it's taken care of for them by the 'build_ext.get_libraries()' |
| 78 | + # method.) |
| 79 | + g['LDSHARED'] = ("%s -L%s/lib -lpython%s" % |
| 80 | + (linkerscript, PREFIX, get_python_version())) |
| 81 | + |
| 82 | + global _config_vars |
| 83 | + _config_vars = g |
| 84 | |
| 85 | def _init_nt(): |
| 86 | """Initialize the module as appropriate for NT""" |