summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/python/python
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2012-11-14 14:31:24 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2012-11-18 16:42:07 +0000
commit89bc43e1b2dcf0d15004b0eb65ea75c6adbfcf8e (patch)
tree84ec9eb39b1bfba19d02acc2f9a26bee72c3c767 /meta/recipes-devtools/python/python
parentdadb3a7fa70a016fd4bf2b059d37a5e0f759eef1 (diff)
downloadpoky-89bc43e1b2dcf0d15004b0eb65ea75c6adbfcf8e.tar.gz
python: Resolve intermediate staging issues
Its bad practise to poke into the sysroot without knowledge of sstate. This adds a patch to python allowing us to account for cross compiling and allow it to find the Makefile/pyconfig.h files without needing them in the sysroot for do_compile/do_install to complete. Tested on two architectures and compared with buildhistory with no significant delta. (From OE-Core rev: 16da4f75a75dc8020803df9ea73a2a7ead88cc5a) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-devtools/python/python')
-rw-r--r--meta/recipes-devtools/python/python/builddir.patch55
1 files changed, 55 insertions, 0 deletions
diff --git a/meta/recipes-devtools/python/python/builddir.patch b/meta/recipes-devtools/python/python/builddir.patch
new file mode 100644
index 0000000000..930170b95a
--- /dev/null
+++ b/meta/recipes-devtools/python/python/builddir.patch
@@ -0,0 +1,55 @@
1When cross compiling python, we used to need to install the Makefile, pyconfig.h
2and the python library to their final location before being able to compile the
3rest of python. This change allows us to point python at its own source when
4building, avoiding a variety of sysroot staging issues and simplifying the main
5python recipe.
6
7Upstream-Status: Inappropriate
8RP 2012/11/13
9
10Index: Python-2.7.3/Lib/sysconfig.py
11===================================================================
12--- Python-2.7.3.orig/Lib/sysconfig.py 2012-11-13 14:36:08.429167199 +0000
13+++ Python-2.7.3/Lib/sysconfig.py 2012-11-13 21:58:31.788551800 +0000
14@@ -93,6 +93,7 @@
15 _EXEC_PREFIX = os.path.normpath(sys.exec_prefix)
16 _CONFIG_VARS = None
17 _USER_BASE = None
18+_PYTHONBUILDDIR = os.environ.get("PYTHONBUILDDIR", None)
19
20 def _safe_realpath(path):
21 try:
22@@ -100,7 +102,9 @@
23 except OSError:
24 return path
25
26-if sys.executable:
27+if _PYTHONBUILDDIR:
28+ _PROJECT_BASE = _PYTHONBUILDDIR
29+elif sys.executable:
30 _PROJECT_BASE = os.path.dirname(_safe_realpath(sys.executable))
31 else:
32 # sys.executable can be empty if argv[0] has been changed and Python is
33Index: Python-2.7.3/Lib/distutils/sysconfig.py
34===================================================================
35--- Python-2.7.3.orig/Lib/distutils/sysconfig.py 2012-11-13 14:36:08.005167209 +0000
36+++ Python-2.7.3/Lib/distutils/sysconfig.py 2012-11-13 22:07:05.644540695 +0000
37@@ -26,6 +26,9 @@
38 # live in project/PCBuild9. If we're dealing with an x64 Windows build,
39 # it'll live in project/PCbuild/amd64.
40 project_base = os.path.dirname(os.path.abspath(sys.executable))
41+_PYTHONBUILDDIR = os.environ.get("PYTHONBUILDDIR", None)
42+if _PYTHONBUILDDIR:
43+ project_base = _PYTHONBUILDDIR
44 if os.name == "nt" and "pcbuild" in project_base[-8:].lower():
45 project_base = os.path.abspath(os.path.join(project_base, os.path.pardir))
46 # PC/VS7.1
47@@ -247,7 +250,7 @@
48 def get_makefile_filename():
49 """Return full pathname of installed Makefile from the Python build."""
50 if python_build:
51- return os.path.join(os.path.dirname(sys.executable), "Makefile")
52+ return os.path.join(project_base, "Makefile")
53 lib_dir = get_python_lib(plat_specific=1, standard_lib=1)
54 return os.path.join(lib_dir, "config", "Makefile")
55