Re: [meta-python2][PATCH 1/1] python: use update-alternatives for python link

Joe Slater

Sorry for the delay, but I your message got put in a folder I don’t look at much.  Some projects, like blktrace, have scripts that work with python2 or python3 and want to leave the shebangs “generic”.  Of course, that won’t work if python3 doesn’t supply “python”.  I admit that wanting to put both python2 and python3 in an image is weird, but we could do it and have both versions supply “python”.


I don’t see any downside to making “python” a u-a link.  It’s already a link.  I admit, though, that there is no guarantee python3 will be allowed to supply a u-a link.




From: Martin Jansa <martin.jansa@...>
Sent: Friday, July 9, 2021 5:07 AM
To: Slater, Joseph <joe.slater@...>
Cc: openembedded-devel <openembedded-devel@...>; MacLeod, Randy <Randy.MacLeod@...>
Subject: Re: [oe] [meta-python2][PATCH 1/1] python: use update-alternatives for python link


As this wasn't needed until now and python3 also doesn't use u-a for ${bindir}/python as all python3 scripts should explicitly call python3, why do you think it would be worth adding to dead python2 recipe?


If you need this symlink would it make sense to use separate recipe like python-is-python2/python-is-python3 packages in debian based systems and create the symlink there instead of u-a in python itself?


On Tue, Jul 6, 2021 at 8:19 PM Joe Slater <joe.slater@...> wrote:

Make the link of python to python2.7 an alternative.  This
allows python3 to provide a link if we are not around, but
makes our link override any python3 provides, assuming he
uses the default priority.

Signed-off-by: Joe Slater <joe.slater@...>
 recipes-devtools/python/ | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/recipes-devtools/python/ b/recipes-devtools/python/
index 7350562..3faf154 100644
--- a/recipes-devtools/python/
+++ b/recipes-devtools/python/
@@ -34,7 +34,14 @@ SRC_URI += " \

 S = "${WORKDIR}/Python-${PV}"

-inherit autotools multilib_header python-dir pythonnative ptest
+inherit autotools multilib_header python-dir pythonnative ptest update-alternatives
+# Make 'python' an alternative so that if python3 also provides it, we will be the default.
+ALTERNATIVE_${PN}-core = "python"
+ALTERNATIVE_LINK_NAME[python] = "${bindir}/python"
+ALTERNATIVE_TARGET[python] = "${bindir}/python${PYTHON_MAJMIN}"

 EXTRA_OECONF += "--with-system-ffi"


Join { to automatically receive all group messages.