All of lore.kernel.org
 help / color / mirror / Atom feed
* [oe-core][PATCH] python3: add ${bindir}/python symlink
@ 2022-11-20 17:52 Markus Volk
  2022-11-20 18:00 ` Alexander Kanavin
  2022-11-20 23:17 ` Khem Raj
  0 siblings, 2 replies; 21+ messages in thread
From: Markus Volk @ 2022-11-20 17:52 UTC (permalink / raw)
  To: openembedded-core; +Cc: Markus Volk

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.

Signed-off-by: Markus Volk <f_l_k@t-online.de>
---
 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



^ permalink raw reply related	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2022-11-23 20:02 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-11-20 17:52 [oe-core][PATCH] python3: add ${bindir}/python symlink Markus Volk
2022-11-20 18:00 ` Alexander Kanavin
2022-11-20 18:03   ` Markus Volk
2022-11-20 23:17 ` Khem Raj
2022-11-20 23:56   ` Alexander Kanavin
2022-11-21 15:16     ` Khem Raj
2022-11-21 17:18       ` Alexander Kanavin
     [not found]       ` <1729A925BA1D06C8.25787@lists.openembedded.org>
2022-11-21 17:48         ` Alexander Kanavin
2022-11-22  4:42           ` f_l_k
2022-11-22 17:41             ` Ross Burton
2022-11-22 18:03               ` Alexander Kanavin
2022-11-22 18:14                 ` Richard Purdie
2022-11-22 18:32                   ` Alexander Kanavin
2022-11-22 22:28                     ` Alexandre Belloni
2022-11-23  5:14                       ` Peter Kjellerstedt
2022-11-23 10:06                     ` Ross Burton
2022-11-23  9:59                 ` Ross Burton
2022-11-23 10:55                   ` Alexander Kanavin
2022-11-23 16:34                     ` Khem Raj
2022-11-23 20:02                       ` Ross Burton
2022-11-22 18:13               ` Markus Volk

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.