aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Kanavin <alex.kanavin@gmail.com>2020-11-13 20:48:50 +0100
committerSteve Sakoman <steve@sakoman.com>2021-02-12 05:42:52 -1000
commit0bdc6a25c102068de27d98c9b632f222feb991fb (patch)
tree66795f18f74684801d667fae130cf67ad69fec82
parent7cb7c5a97d936e35a155faf5b81f8b8545a0c23a (diff)
downloadopenembedded-core-contrib-0bdc6a25c102068de27d98c9b632f222feb991fb.tar.gz
openembedded-core-contrib-0bdc6a25c102068de27d98c9b632f222feb991fb.tar.bz2
openembedded-core-contrib-0bdc6a25c102068de27d98c9b632f222feb991fb.zip
python3: split python target configuration into own class
Setting _PYTHON_SYSCONFIGDATA_NAME in python3native class globally was problematic as it was leaking into host python environment, which was causing tracebacks depending on host distro and action (typically anything involving importing sysconfig module). The new class sets the variable only in specific tasks where it is needed, and should be inherited explicitly: - use python3native to run scripts with native python - use python3targetconfig to run scripts with native python if those scripts need to access target config data (such as correct installation directories). This also adds a dependency on target python, so should be used carefully to avoid lengthening builds. Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> (cherry picked from commit 5a118d4e7985fa88f04c3611f8db813f0dafce75) Signed-off-by: Steve Sakoman <steve@sakoman.com>
-rw-r--r--meta/classes/python3native.bbclass2
-rw-r--r--meta/classes/python3targetconfig.bbclass15
2 files changed, 15 insertions, 2 deletions
diff --git a/meta/classes/python3native.bbclass b/meta/classes/python3native.bbclass
index d98fb4c7583..2e3a88c1263 100644
--- a/meta/classes/python3native.bbclass
+++ b/meta/classes/python3native.bbclass
@@ -17,8 +17,6 @@ export STAGING_LIBDIR
export PYTHON_LIBRARY="${STAGING_LIBDIR}/lib${PYTHON_DIR}${PYTHON_ABI}.so"
export PYTHON_INCLUDE_DIR="${STAGING_INCDIR}/${PYTHON_DIR}${PYTHON_ABI}"
-export _PYTHON_SYSCONFIGDATA_NAME="_sysconfigdata"
-
# suppress host user's site-packages dirs.
export PYTHONNOUSERSITE = "1"
diff --git a/meta/classes/python3targetconfig.bbclass b/meta/classes/python3targetconfig.bbclass
new file mode 100644
index 00000000000..640d0c97b6d
--- /dev/null
+++ b/meta/classes/python3targetconfig.bbclass
@@ -0,0 +1,15 @@
+inherit python3native
+
+DEPENDS_append = " python3"
+
+do_configure_prepend() {
+ export _PYTHON_SYSCONFIGDATA_NAME="_sysconfigdata"
+}
+
+do_compile_prepend() {
+ export _PYTHON_SYSCONFIGDATA_NAME="_sysconfigdata"
+}
+
+do_install_prepend() {
+ export _PYTHON_SYSCONFIGDATA_NAME="_sysconfigdata"
+}