diff options
| -rw-r--r-- | meta/recipes-devtools/python/python-native_2.7.3.bb | 1 | ||||
| -rw-r--r-- | meta/recipes-devtools/python/python/builddir.patch | 55 | ||||
| -rw-r--r-- | meta/recipes-devtools/python/python_2.7.3.bb | 25 |
3 files changed, 59 insertions, 22 deletions
diff --git a/meta/recipes-devtools/python/python-native_2.7.3.bb b/meta/recipes-devtools/python/python-native_2.7.3.bb index d450949326..b0b3503ed9 100644 --- a/meta/recipes-devtools/python/python-native_2.7.3.bb +++ b/meta/recipes-devtools/python/python-native_2.7.3.bb | |||
| @@ -15,6 +15,7 @@ SRC_URI += "file://04-default-is-optimized.patch \ | |||
| 15 | file://nohostlibs.patch \ | 15 | file://nohostlibs.patch \ |
| 16 | file://multilib.patch \ | 16 | file://multilib.patch \ |
| 17 | file://add-md5module-support.patch \ | 17 | file://add-md5module-support.patch \ |
| 18 | file://builddir.patch \ | ||
| 18 | " | 19 | " |
| 19 | S = "${WORKDIR}/Python-${PV}" | 20 | S = "${WORKDIR}/Python-${PV}" |
| 20 | 21 | ||
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 @@ | |||
| 1 | When cross compiling python, we used to need to install the Makefile, pyconfig.h | ||
| 2 | and the python library to their final location before being able to compile the | ||
| 3 | rest of python. This change allows us to point python at its own source when | ||
| 4 | building, avoiding a variety of sysroot staging issues and simplifying the main | ||
| 5 | python recipe. | ||
| 6 | |||
| 7 | Upstream-Status: Inappropriate | ||
| 8 | RP 2012/11/13 | ||
| 9 | |||
| 10 | Index: 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 | ||
| 33 | Index: 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 | |||
diff --git a/meta/recipes-devtools/python/python_2.7.3.bb b/meta/recipes-devtools/python/python_2.7.3.bb index 3a17c85bb8..f0d5c90d30 100644 --- a/meta/recipes-devtools/python/python_2.7.3.bb +++ b/meta/recipes-devtools/python/python_2.7.3.bb | |||
| @@ -27,6 +27,7 @@ SRC_URI += "\ | |||
| 27 | file://avoid_warning_for_sunos_specific_module.patch \ | 27 | file://avoid_warning_for_sunos_specific_module.patch \ |
| 28 | file://python-2.7.3-berkeley-db-5.3.patch \ | 28 | file://python-2.7.3-berkeley-db-5.3.patch \ |
| 29 | file://python-2.7.3-remove-bsdb-rpath.patch \ | 29 | file://python-2.7.3-remove-bsdb-rpath.patch \ |
| 30 | file://builddir.patch \ | ||
| 30 | " | 31 | " |
| 31 | 32 | ||
| 32 | S = "${WORKDIR}/Python-${PV}" | 33 | S = "${WORKDIR}/Python-${PV}" |
| @@ -55,17 +56,6 @@ do_compile() { | |||
| 55 | sed -e 's,${STAGING_DIR_HOST},,g' -i *.py | 56 | sed -e 's,${STAGING_DIR_HOST},,g' -i *.py |
| 56 | cd - | 57 | cd - |
| 57 | 58 | ||
| 58 | # | ||
| 59 | # Copy config.h and an appropriate Makefile for distutils.sysconfig, | ||
| 60 | # which laters uses the information out of these to compile extensions | ||
| 61 | # | ||
| 62 | # The following part (until python compilation) should probably moved to an | ||
| 63 | # -initial recipe to handle staging better | ||
| 64 | # | ||
| 65 | install -d ${STAGING_INCDIR}/python${PYTHON_MAJMIN}/ | ||
| 66 | install -d ${STAGING_LIBDIR}/python${PYTHON_MAJMIN}/config/ | ||
| 67 | install -m 0644 pyconfig.h ${STAGING_INCDIR}/python${PYTHON_MAJMIN}/ | ||
| 68 | |||
| 69 | # remove hardcoded ccache, see http://bugs.openembedded.net/show_bug.cgi?id=4144 | 59 | # remove hardcoded ccache, see http://bugs.openembedded.net/show_bug.cgi?id=4144 |
| 70 | sed -i -e s,ccache,'$(CCACHE)', Makefile | 60 | sed -i -e s,ccache,'$(CCACHE)', Makefile |
| 71 | 61 | ||
| @@ -83,22 +73,12 @@ do_compile() { | |||
| 83 | -e 's,^INCLUDEDIR=.*,INCLUDE=${STAGING_INCDIR},g' \ | 73 | -e 's,^INCLUDEDIR=.*,INCLUDE=${STAGING_INCDIR},g' \ |
| 84 | -e 's,^CONFINCLUDEDIR=.*,CONFINCLUDE=${STAGING_INCDIR},g' \ | 74 | -e 's,^CONFINCLUDEDIR=.*,CONFINCLUDE=${STAGING_INCDIR},g' \ |
| 85 | Makefile | 75 | Makefile |
| 86 | install -m 0644 Makefile ${STAGING_LIBDIR}/python${PYTHON_MAJMIN}/config/ | ||
| 87 | # save copy of it now, because if we do it in do_install and | 76 | # save copy of it now, because if we do it in do_install and |
| 88 | # then call do_install twice we get Makefile.orig == Makefile.sysroot | 77 | # then call do_install twice we get Makefile.orig == Makefile.sysroot |
| 89 | install -m 0644 Makefile Makefile.sysroot | 78 | install -m 0644 Makefile Makefile.sysroot |
| 90 | 79 | ||
| 91 | export CROSS_COMPILE="${TARGET_PREFIX}" | 80 | export CROSS_COMPILE="${TARGET_PREFIX}" |
| 92 | 81 | export PYTHONBUILDDIR="${S}" | |
| 93 | oe_runmake HOSTPGEN=${STAGING_BINDIR_NATIVE}/python-native/pgen \ | ||
| 94 | HOSTPYTHON=${STAGING_BINDIR_NATIVE}/python-native/python \ | ||
| 95 | STAGING_LIBDIR=${STAGING_LIBDIR} \ | ||
| 96 | STAGING_BASELIBDIR=${STAGING_BASELIBDIR} \ | ||
| 97 | STAGING_INCDIR=${STAGING_INCDIR} \ | ||
| 98 | BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \ | ||
| 99 | OPT="${CFLAGS}" libpython${PYTHON_MAJMIN}.so | ||
| 100 | |||
| 101 | oe_libinstall -so libpython${PYTHON_MAJMIN} ${STAGING_LIBDIR} | ||
| 102 | 82 | ||
| 103 | oe_runmake HOSTPGEN=${STAGING_BINDIR_NATIVE}/python-native/pgen \ | 83 | oe_runmake HOSTPGEN=${STAGING_BINDIR_NATIVE}/python-native/pgen \ |
| 104 | HOSTPYTHON=${STAGING_BINDIR_NATIVE}/python-native/python \ | 84 | HOSTPYTHON=${STAGING_BINDIR_NATIVE}/python-native/python \ |
| @@ -115,6 +95,7 @@ do_install() { | |||
| 115 | install -m 0644 Makefile.orig Makefile | 95 | install -m 0644 Makefile.orig Makefile |
| 116 | 96 | ||
| 117 | export CROSS_COMPILE="${TARGET_PREFIX}" | 97 | export CROSS_COMPILE="${TARGET_PREFIX}" |
| 98 | export PYTHONBUILDDIR="${S}" | ||
| 118 | 99 | ||
| 119 | oe_runmake HOSTPGEN=${STAGING_BINDIR_NATIVE}/python-native/pgen \ | 100 | oe_runmake HOSTPGEN=${STAGING_BINDIR_NATIVE}/python-native/pgen \ |
| 120 | HOSTPYTHON=${STAGING_BINDIR_NATIVE}/python-native/python \ | 101 | HOSTPYTHON=${STAGING_BINDIR_NATIVE}/python-native/python \ |
