diff options
| -rw-r--r-- | meta/recipes-devtools/python/python-native/revert_use_of_sysconfigdata.patch | 86 | ||||
| -rw-r--r-- | meta/recipes-devtools/python/python-native_2.7.9.bb | 25 |
2 files changed, 99 insertions, 12 deletions
diff --git a/meta/recipes-devtools/python/python-native/revert_use_of_sysconfigdata.patch b/meta/recipes-devtools/python/python-native/revert_use_of_sysconfigdata.patch new file mode 100644 index 0000000000..202aaf1069 --- /dev/null +++ b/meta/recipes-devtools/python/python-native/revert_use_of_sysconfigdata.patch | |||
| @@ -0,0 +1,86 @@ | |||
| 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""" | ||
diff --git a/meta/recipes-devtools/python/python-native_2.7.9.bb b/meta/recipes-devtools/python/python-native_2.7.9.bb index dfde36129f..54be2ea58b 100644 --- a/meta/recipes-devtools/python/python-native_2.7.9.bb +++ b/meta/recipes-devtools/python/python-native_2.7.9.bb | |||
| @@ -5,17 +5,18 @@ DEPENDS = "openssl-native bzip2-replacement-native zlib-native readline-native s | |||
| 5 | PR = "${INC_PR}.1" | 5 | PR = "${INC_PR}.1" |
| 6 | 6 | ||
| 7 | SRC_URI += "\ | 7 | SRC_URI += "\ |
| 8 | file://05-enable-ctypes-cross-build.patch \ | 8 | file://05-enable-ctypes-cross-build.patch \ |
| 9 | file://10-distutils-fix-swig-parameter.patch \ | 9 | file://10-distutils-fix-swig-parameter.patch \ |
| 10 | file://11-distutils-never-modify-shebang-line.patch \ | 10 | file://11-distutils-never-modify-shebang-line.patch \ |
| 11 | file://12-distutils-prefix-is-inside-staging-area.patch \ | 11 | file://12-distutils-prefix-is-inside-staging-area.patch \ |
| 12 | file://debug.patch \ | 12 | file://debug.patch \ |
| 13 | file://unixccompiler.patch \ | 13 | file://unixccompiler.patch \ |
| 14 | file://nohostlibs.patch \ | 14 | file://nohostlibs.patch \ |
| 15 | file://multilib.patch \ | 15 | file://multilib.patch \ |
| 16 | file://add-md5module-support.patch \ | 16 | file://add-md5module-support.patch \ |
| 17 | file://builddir.patch \ | 17 | file://builddir.patch \ |
| 18 | file://parallel-makeinst-create-bindir.patch \ | 18 | file://parallel-makeinst-create-bindir.patch \ |
| 19 | file://revert_use_of_sysconfigdata.patch \ | ||
| 19 | " | 20 | " |
| 20 | S = "${WORKDIR}/Python-${PV}" | 21 | S = "${WORKDIR}/Python-${PV}" |
| 21 | 22 | ||
| @@ -36,7 +37,7 @@ EXTRA_OEMAKE = '\ | |||
| 36 | ' | 37 | ' |
| 37 | 38 | ||
| 38 | do_configure_prepend() { | 39 | do_configure_prepend() { |
| 39 | autoreconf --verbose --install --force --exclude=autopoint Modules/_ctypes/libffi || bbnote "_ctypes failed to autoreconf" | 40 | autoreconf --verbose --install --force --exclude=autopoint ../Python-${PV}/Modules/_ctypes/libffi |
| 40 | } | 41 | } |
| 41 | 42 | ||
| 42 | do_install() { | 43 | do_install() { |
