summaryrefslogtreecommitdiffstats
path: root/meta/classes/distutils.bbclass
diff options
context:
space:
mode:
authorDouglas Royds <douglas.royds@taitradio.com>2019-05-06 18:47:25 +1200
committerRichard Purdie <richard.purdie@linuxfoundation.org>2019-05-08 12:15:17 +0100
commita839671f6e029d0fe8c131d37127b5a5906494e5 (patch)
tree3a1741207248897a6f66e6dd28627c0cd4f90f44 /meta/classes/distutils.bbclass
parent568f0ab886cbcf83fcd9f154886280a7881d30fe (diff)
downloadpoky-a839671f6e029d0fe8c131d37127b5a5906494e5.tar.gz
distutils: Run python from the PATH in the -native case as well
The python distutils generate a python wrapper script for each package, containing shebang lines pointing to the python executable. In our case, this is a fully-qualified path to python-native in the recipe-sysroot-native. Ubuntu 18.04 restricts the useful length of the shebang line to 125 characters, and Ubuntu 16.04 restricts it to 77. In both cases, the staged python script fails to run due to the length of the path to the python-native executable. Replace the shebang line with nativepython or nativepython3 as appropriate. The nativepython symlink is installed by the python-native recipe: #!/usr/bin/env nativepython We were already doing this for on-target distutils components. This change applies the sed-line to -native distutils components as well. In this way, -native clients of these components can invoke the wrapper scripts directly, without themselves needing to inherit pythonnative. This works around a known setuptools issue: https://github.com/pypa/setuptools/issues/494 Even once this issue has been resolved upstream, we will still need to replace `python` with `nativepython` (From OE-Core rev: 0a5bd4f30182a3d55153e5ade76f1dfd5b52b482) Signed-off-by: Douglas Royds <douglas.royds@taitradio.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/classes/distutils.bbclass')
-rw-r--r--meta/classes/distutils.bbclass11
1 files changed, 5 insertions, 6 deletions
diff --git a/meta/classes/distutils.bbclass b/meta/classes/distutils.bbclass
index 9862731493..b5c9c2fbbd 100644
--- a/meta/classes/distutils.bbclass
+++ b/meta/classes/distutils.bbclass
@@ -9,6 +9,9 @@ DISTUTILS_INSTALL_ARGS ?= "--root=${D} \
9 --install-lib=${PYTHON_SITEPACKAGES_DIR} \ 9 --install-lib=${PYTHON_SITEPACKAGES_DIR} \
10 --install-data=${datadir}" 10 --install-data=${datadir}"
11 11
12DISTUTILS_PYTHON = "python"
13DISTUTILS_PYTHON_class-native = "nativepython"
14
12distutils_do_configure() { 15distutils_do_configure() {
13 if [ "${CLEANBROKEN}" != "1" ] ; then 16 if [ "${CLEANBROKEN}" != "1" ] ; then
14 NO_FETCH_BUILD=1 \ 17 NO_FETCH_BUILD=1 \
@@ -53,18 +56,14 @@ distutils_do_install() {
53 56
54 if test -e ${D}${bindir} ; then 57 if test -e ${D}${bindir} ; then
55 for i in ${D}${bindir}/* ; do \ 58 for i in ${D}${bindir}/* ; do \
56 if [ ${PN} != "${BPN}-native" ]; then 59 sed -i -e s:${STAGING_BINDIR_NATIVE}/python-native/python:${USRBINPATH}/env\ ${DISTUTILS_PYTHON}:g $i
57 sed -i -e s:${STAGING_BINDIR_NATIVE}/python-native/python:${USRBINPATH}/env\ python:g $i
58 fi
59 sed -i -e s:${STAGING_BINDIR_NATIVE}:${bindir}:g $i 60 sed -i -e s:${STAGING_BINDIR_NATIVE}:${bindir}:g $i
60 done 61 done
61 fi 62 fi
62 63
63 if [ -e ${D}${sbindir} ]; then 64 if [ -e ${D}${sbindir} ]; then
64 for i in ${D}${sbindir}/* ; do \ 65 for i in ${D}${sbindir}/* ; do \
65 if [ ${PN} != "${BPN}-native" ]; then 66 sed -i -e s:${STAGING_BINDIR_NATIVE}/python-native/python:${USRBINPATH}/env\ ${DISTUTILS_PYTHON}:g $i
66 sed -i -e s:${STAGING_BINDIR_NATIVE}/python-native/python:${USRBINPATH}/env\ python:g $i
67 fi
68 sed -i -e s:${STAGING_BINDIR_NATIVE}:${bindir}:g $i 67 sed -i -e s:${STAGING_BINDIR_NATIVE}:${bindir}:g $i
69 done 68 done
70 fi 69 fi