From ccb810f34a7c413aad7921a4003ec5a2229b89a3 Mon Sep 17 00:00:00 2001 From: Andreas Müller Date: Mon, 28 Oct 2019 00:35:27 +0100 Subject: itstool: rework native shebang and add class to make native itstool work MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit itstool was reworked in [1] to not use host's python. This patch introduced the '-S' option for coreutils's env [2]. Unfortunately that option is relatively young [3] and elder build-host don't support it [4]. The only way to get around this is: * remove '-S' and -s' from native shebang * add a class itstool.bbclass. This class depends itstool-native and creates a valid python3 runtime environment. Most notable in the environment is export PYTHONNOUSERSITE = "1" which does same as '-s' option: force python to avoid adding (host) user sites. [1] http://cgit.openembedded.org/meta-openembedded/commit/meta-oe/recipes-support/itstool/itstool/0001-Don-t-use-build-time-hardcoded-python-binary-path.patch?id=e5ac325b7974a346b218d1f43b92d06f5b0dd078 [2] http://cgit.openembedded.org/meta-openembedded/tree/meta-oe/recipes-support/itstool/itstool/0001-Don-t-use-build-time-hardcoded-python-binary-path.patch [3] https://github.com/coreutils/coreutils/commit/668306ed86c8c79b0af0db8b9c882654ebb66db2#diff-83d9d52b1f12ac589739ab1334ae4f30 [4] https://errors.yoctoproject.org/Errors/Details/274743/ Signed-off-by: Andreas Müller Signed-off-by: Khem Raj --- meta-oe/classes/itstool.bbclass | 5 ++++ ...e-build-time-hardcoded-python-binary-path.patch | 29 ------------------ ...t-use-build-time-hardcoded-python-binary-.patch | 35 ++++++++++++++++++++++ ...e-build-time-hardcoded-python-binary-path.patch | 29 ++++++++++++++++++ meta-oe/recipes-support/itstool/itstool_2.0.6.bb | 6 ++-- 5 files changed, 73 insertions(+), 31 deletions(-) create mode 100644 meta-oe/classes/itstool.bbclass delete mode 100644 meta-oe/recipes-support/itstool/itstool/0001-Don-t-use-build-time-hardcoded-python-binary-path.patch create mode 100644 meta-oe/recipes-support/itstool/itstool/0001-Native-Don-t-use-build-time-hardcoded-python-binary-.patch create mode 100644 meta-oe/recipes-support/itstool/itstool/0002-Don-t-use-build-time-hardcoded-python-binary-path.patch diff --git a/meta-oe/classes/itstool.bbclass b/meta-oe/classes/itstool.bbclass new file mode 100644 index 0000000000..45e3fb839c --- /dev/null +++ b/meta-oe/classes/itstool.bbclass @@ -0,0 +1,5 @@ +# helper class to prepare correct environment for native itstool + +inherit python3native + +DEPENDS_append = " itstool-native" diff --git a/meta-oe/recipes-support/itstool/itstool/0001-Don-t-use-build-time-hardcoded-python-binary-path.patch b/meta-oe/recipes-support/itstool/itstool/0001-Don-t-use-build-time-hardcoded-python-binary-path.patch deleted file mode 100644 index b91105330c..0000000000 --- a/meta-oe/recipes-support/itstool/itstool/0001-Don-t-use-build-time-hardcoded-python-binary-path.patch +++ /dev/null @@ -1,29 +0,0 @@ -From cd9b56224895576125e91cca317ace8a80f3eb77 Mon Sep 17 00:00:00 2001 -From: Piotr Tworek -Date: Sat, 27 Jul 2019 10:19:11 +0200 -Subject: [PATCH] Don't use build time hardcoded python binary path. - -This path obviously won't work on target since they refer to build -machine directory structure. Native builds will also fail if local.conf -has INHERIT+=rm_work. Instread of hardcoding path to python binary use -whatever is found in PATH first. This should also allow the tool to use -python3 binary provided in recipe-sysroot-native. - -Upstream-Status: Inappropriate [OE specific] ---- - itstool.in | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/itstool.in b/itstool.in -index b3c0033..7df2476 100755 ---- a/itstool.in -+++ b/itstool.in -@@ -1,4 +1,4 @@ --#!@PYTHON@ -s -+#!/usr/bin/env -S python3 -s - # - # Copyright (c) 2010-2018 Shaun McCance - # --- -2.21.0 - diff --git a/meta-oe/recipes-support/itstool/itstool/0001-Native-Don-t-use-build-time-hardcoded-python-binary-.patch b/meta-oe/recipes-support/itstool/itstool/0001-Native-Don-t-use-build-time-hardcoded-python-binary-.patch new file mode 100644 index 0000000000..19a858bd75 --- /dev/null +++ b/meta-oe/recipes-support/itstool/itstool/0001-Native-Don-t-use-build-time-hardcoded-python-binary-.patch @@ -0,0 +1,35 @@ +From 335ef14fc801c9dfbe7e5692dc71cfbe72049d2b Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Andreas=20M=C3=BCller?= +Date: Sun, 27 Oct 2019 16:38:52 +0100 +Subject: [PATCH] Native: Don't use build time hardcoded python binary path. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This is same patch as used for target build except that we do not use the +'-S' and '-s' option because '-S' is relatively young [1] and elder build-host +don't support it [2] + +[1] https://github.com/coreutils/coreutils/commit/668306ed86c8c79b0af0db8b9c882654ebb66db2#diff-83d9d52b1f12ac589739ab1334ae4f30 +[2] https://errors.yoctoproject.org/Errors/Details/274743/ + +Upstream-Status: Inappropriate [OE specific] + +Signed-off-by: Andreas Müller +--- + itstool.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/itstool.in b/itstool.in +index e64cd34..05d264f 100755 +--- a/itstool.in ++++ b/itstool.in +@@ -1,4 +1,4 @@ +-#!@PYTHON@ -s ++#!/usr/bin/env python3 + # + # Copyright (c) 2010-2018 Shaun McCance + # +-- +2.21.0 + diff --git a/meta-oe/recipes-support/itstool/itstool/0002-Don-t-use-build-time-hardcoded-python-binary-path.patch b/meta-oe/recipes-support/itstool/itstool/0002-Don-t-use-build-time-hardcoded-python-binary-path.patch new file mode 100644 index 0000000000..b91105330c --- /dev/null +++ b/meta-oe/recipes-support/itstool/itstool/0002-Don-t-use-build-time-hardcoded-python-binary-path.patch @@ -0,0 +1,29 @@ +From cd9b56224895576125e91cca317ace8a80f3eb77 Mon Sep 17 00:00:00 2001 +From: Piotr Tworek +Date: Sat, 27 Jul 2019 10:19:11 +0200 +Subject: [PATCH] Don't use build time hardcoded python binary path. + +This path obviously won't work on target since they refer to build +machine directory structure. Native builds will also fail if local.conf +has INHERIT+=rm_work. Instread of hardcoding path to python binary use +whatever is found in PATH first. This should also allow the tool to use +python3 binary provided in recipe-sysroot-native. + +Upstream-Status: Inappropriate [OE specific] +--- + itstool.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/itstool.in b/itstool.in +index b3c0033..7df2476 100755 +--- a/itstool.in ++++ b/itstool.in +@@ -1,4 +1,4 @@ +-#!@PYTHON@ -s ++#!/usr/bin/env -S python3 -s + # + # Copyright (c) 2010-2018 Shaun McCance + # +-- +2.21.0 + diff --git a/meta-oe/recipes-support/itstool/itstool_2.0.6.bb b/meta-oe/recipes-support/itstool/itstool_2.0.6.bb index b4b37aa013..8290c5e581 100644 --- a/meta-oe/recipes-support/itstool/itstool_2.0.6.bb +++ b/meta-oe/recipes-support/itstool/itstool_2.0.6.bb @@ -7,8 +7,10 @@ inherit autotools python3native DEPENDS = "libxml2-native" -SRC_URI = "http://files.itstool.org/${BPN}/${BPN}-${PV}.tar.bz2 \ - file://0001-Don-t-use-build-time-hardcoded-python-binary-path.patch" +SRC_URI = "http://files.itstool.org/${BPN}/${BPN}-${PV}.tar.bz2" +SRC_URI_append_class-native = " file://0001-Native-Don-t-use-build-time-hardcoded-python-binary-.patch" +SRC_URI_append_class-target = " file://0002-Don-t-use-build-time-hardcoded-python-binary-path.patch" + SRC_URI[md5sum] = "4306eeba4f4aee6b393d14f9c3c57ca1" SRC_URI[sha256sum] = "6233cc22726a9a5a83664bf67d1af79549a298c23185d926c3677afa917b92a9" -- cgit v1.2.3-54-g00ecf