On Sun, Nov 20, 2022 at 9:52 AM Markus Volk wrote: > Currently /usr/bin/python is provided by the python2 package. If python2 > is not installed, the built image lacks a provider for it. > This results in failed scripts when using '/usr/bin/python' shebang. > > This patch adds a /usr/bin/python symlink for python3 to fix this issue. > For images containing python2 and python3, the do_rootfs task will fail > because now both of them provide the same file. > To allow this corner case, a DISTRO_FEATURE 'python2' has been introduced > which, > if set, will prevent python3 from creating the symlink. > > The link is created with relative path because using an absolute path > would fail > for native and nativesdk. What happens if and when python4 comes ? This might get us into same mess we had migrating python2 to 3 > > Signed-off-by: Markus Volk > --- > meta/recipes-devtools/python/python3/python3-manifest.json | 1 + > meta/recipes-devtools/python/python3_3.11.0.bb | 4 ++++ > 2 files changed, 5 insertions(+) > > diff --git a/meta/recipes-devtools/python/python3/python3-manifest.json > b/meta/recipes-devtools/python/python3/python3-manifest.json > index 64203cf0fc..7b6f509a45 100644 > --- a/meta/recipes-devtools/python/python3/python3-manifest.json > +++ b/meta/recipes-devtools/python/python3/python3-manifest.json > @@ -203,6 +203,7 @@ > "files": [ > "${bindir}/python${PYTHON_MAJMIN}", > "${bindir}/python${PYTHON_MAJMIN}.real", > + "${bindir}/python", > "${bindir}/python3", > "${includedir}/python${PYTHON_MAJMIN}/pyconfig*.h", > "${libdir}/python${PYTHON_MAJMIN}/UserDict.py", > diff --git a/meta/recipes-devtools/python/python3_3.11.0.bb > b/meta/recipes-devtools/python/python3_3.11.0.bb > index 92a1f69320..18b631f79d 100644 > --- a/meta/recipes-devtools/python/python3_3.11.0.bb > +++ b/meta/recipes-devtools/python/python3_3.11.0.bb > @@ -144,6 +144,7 @@ do_install:prepend() { > > do_install:append:class-target() { > oe_multilib_header python${PYTHON_MAJMIN}/pyconfig.h > + ${@bb.utils.contains('DISTRO_FEATURES', 'python2', '', 'ln -sf > ./python3 ${D}${bindir}/python', d)} > } > > do_install:append:class-native() { > @@ -156,6 +157,7 @@ do_install:append:class-native() { > # (these often end up too long for the #! parser in the kernel as > the > # buffer is 128 bytes long). > ln -s python3-native/python3 ${D}${bindir}/nativepython3 > + ${@bb.utils.contains('DISTRO_FEATURES', 'python2', '', 'ln -sf > ./python3-native/python3 ${D}${bindir}/nativepython', d)} > > # Remove the opt-1.pyc and opt-2.pyc files. There are over 3,000 > of them > # and the overhead in each recipe-sysroot-native isn't worth it, > particularly > @@ -213,6 +215,7 @@ do_install:append() { > } > > do_install:append:class-nativesdk () { > + ${@bb.utils.contains('DISTRO_FEATURES', 'python2', '', 'ln -sf > ./python3 ${D}${bindir}/python', d)} > # Make sure we use /usr/bin/env python > for PYTHSCRIPT in `grep -rIl ${bindir}/python ${D}${bindir}`; do > sed -i -e '1s|^#!.*|#!/usr/bin/env python3|' $PYTHSCRIPT > @@ -376,6 +379,7 @@ RRECOMMENDS:${PN}-crypt:append:class-nativesdk = " > ${MLPREFIX}openssl ${MLPREFIX > > # For historical reasons PN is empty and provided by python3-modules > FILES:${PN} = "" > +RPROVIDES:${PN} = "${@bb.utils.contains('DISTRO_FEATURES', 'python2', '', > '${bindir}/python', d)}" > RPROVIDES:${PN}-modules = "${PN}" > > FILES:${PN}-pydoc += "${bindir}/pydoc${PYTHON_MAJMIN} ${bindir}/pydoc3" > -- > 2.34.1 > > > -=-=-=-=-=-=-=-=-=-=-=- > Links: You receive all messages sent to this group. > View/Reply Online (#173637): > https://lists.openembedded.org/g/openembedded-core/message/173637 > Mute This Topic: https://lists.openembedded.org/mt/95156228/1997914 > Group Owner: openembedded-core+owner@lists.openembedded.org > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [ > raj.khem@gmail.com] > -=-=-=-=-=-=-=-=-=-=-=- > >