diff options
Diffstat (limited to 'meta/recipes-devtools/python')
-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() { |