* [OE-core][PATCH V3 1/5] classes/recipes: remove unnecessary qemu inherit and use qemuwrapper-cross
@ 2025-04-14 5:34 Qi.Chen
2025-04-14 5:35 ` [OE-core][PATCH V3 2/5] cpio: fix ptest-runner dependency Qi.Chen
` (4 more replies)
0 siblings, 5 replies; 10+ messages in thread
From: Qi.Chen @ 2025-04-14 5:34 UTC (permalink / raw)
To: openembedded-core
From: Chen Qi <Qi.Chen@windriver.com>
These classes/recipes inherit qemu.bbclass but do not use anything from it.
What they use is qemuwrapper-cross, which is needed at do_rootfs time and
needs to be pulled-in by PACKAGE_WRITE_DEPS.
Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
---
meta/classes-recipe/fontcache.bbclass | 3 +--
meta/classes-recipe/gio-module-cache.bbclass | 3 +--
meta/classes-recipe/gtk-immodules-cache.bbclass | 4 +---
meta/classes-recipe/manpages.bbclass | 2 +-
meta/classes-recipe/pixbufcache.bbclass | 5 +----
meta/recipes-core/systemd/systemd_257.5.bb | 5 +++--
meta/recipes-core/udev/eudev_3.2.14.bb | 4 ++--
7 files changed, 10 insertions(+), 16 deletions(-)
diff --git a/meta/classes-recipe/fontcache.bbclass b/meta/classes-recipe/fontcache.bbclass
index 6f4978369d..deadcd2fbb 100644
--- a/meta/classes-recipe/fontcache.bbclass
+++ b/meta/classes-recipe/fontcache.bbclass
@@ -9,8 +9,7 @@
# packages.
#
-PACKAGE_WRITE_DEPS += "qemu-native"
-inherit qemu
+PACKAGE_WRITE_DEPS += "qemuwrapper-cross"
FONT_PACKAGES ??= "${PN}"
FONT_PACKAGES:class-native = ""
diff --git a/meta/classes-recipe/gio-module-cache.bbclass b/meta/classes-recipe/gio-module-cache.bbclass
index d12e03c4a0..3714678c7c 100644
--- a/meta/classes-recipe/gio-module-cache.bbclass
+++ b/meta/classes-recipe/gio-module-cache.bbclass
@@ -4,8 +4,7 @@
# SPDX-License-Identifier: MIT
#
-PACKAGE_WRITE_DEPS += "qemu-native"
-inherit qemu
+PACKAGE_WRITE_DEPS += "qemuwrapper-cross"
GIO_MODULE_PACKAGES ??= "${PN}"
diff --git a/meta/classes-recipe/gtk-immodules-cache.bbclass b/meta/classes-recipe/gtk-immodules-cache.bbclass
index 8fbe1dd1fb..585838c105 100644
--- a/meta/classes-recipe/gtk-immodules-cache.bbclass
+++ b/meta/classes-recipe/gtk-immodules-cache.bbclass
@@ -8,9 +8,7 @@
#
# Usage: Set GTKIMMODULES_PACKAGES to the packages that needs to update the inputmethod modules
-PACKAGE_WRITE_DEPS += "qemu-native"
-
-inherit qemu
+PACKAGE_WRITE_DEPS += "qemuwrapper-cross"
GTKIMMODULES_PACKAGES ?= "${PN}"
diff --git a/meta/classes-recipe/manpages.bbclass b/meta/classes-recipe/manpages.bbclass
index e9ca2f895b..f3d034b046 100644
--- a/meta/classes-recipe/manpages.bbclass
+++ b/meta/classes-recipe/manpages.bbclass
@@ -10,7 +10,7 @@
# by default.
PACKAGECONFIG:append:class-target = " ${@bb.utils.contains('DISTRO_FEATURES', 'api-documentation', 'manpages', '', d)}"
-inherit qemu
+PACKAGE_WRITE_DEPS += "${@bb.utils.contains('DISTRO_FEATURES', 'api-documentation', 'qemuwrapper-cross', '', d)}"
# usually manual files are packaged to ${PN}-doc except man-pages
MAN_PKG ?= "${PN}-doc"
diff --git a/meta/classes-recipe/pixbufcache.bbclass b/meta/classes-recipe/pixbufcache.bbclass
index 107e38885e..c32673df55 100644
--- a/meta/classes-recipe/pixbufcache.bbclass
+++ b/meta/classes-recipe/pixbufcache.bbclass
@@ -9,12 +9,9 @@
# packages.
#
-DEPENDS:append:class-target = " qemu-native"
-inherit qemu
-
PIXBUF_PACKAGES ??= "${PN}"
-PACKAGE_WRITE_DEPS += "qemu-native gdk-pixbuf-native"
+PACKAGE_WRITE_DEPS += "qemuwrapper-cross gdk-pixbuf-native"
pixbufcache_common() {
if [ "x$D" != "x" ]; then
diff --git a/meta/recipes-core/systemd/systemd_257.5.bb b/meta/recipes-core/systemd/systemd_257.5.bb
index 24aad11c0a..0f0c846db6 100644
--- a/meta/recipes-core/systemd/systemd_257.5.bb
+++ b/meta/recipes-core/systemd/systemd_257.5.bb
@@ -8,7 +8,7 @@ DEPENDS = "gperf-native libcap util-linux python3-jinja2-native"
SECTION = "base/shell"
-inherit useradd pkgconfig meson perlnative update-rc.d update-alternatives qemu systemd gettext bash-completion manpages features_check mime
+inherit useradd pkgconfig meson perlnative update-rc.d update-alternatives systemd gettext bash-completion manpages features_check mime
# unmerged-usr support is deprecated upstream, taints the system and will be
# removed in the near future. Fail the build if it is not enabled.
@@ -932,7 +932,8 @@ pkg_prerm:${PN}:libc-glibc () {
fi
}
-PACKAGE_WRITE_DEPS += "qemu-native"
+PACKAGE_WRITE_DEPS += "qemuwrapper-cross"
+
pkg_postinst:udev-hwdb () {
if test -n "$D"; then
$INTERCEPT_DIR/postinst_intercept update_udev_hwdb ${PKG} mlprefix=${MLPREFIX} binprefix=${MLPREFIX} \
diff --git a/meta/recipes-core/udev/eudev_3.2.14.bb b/meta/recipes-core/udev/eudev_3.2.14.bb
index b3e7d092c5..a2d222e655 100644
--- a/meta/recipes-core/udev/eudev_3.2.14.bb
+++ b/meta/recipes-core/udev/eudev_3.2.14.bb
@@ -20,7 +20,7 @@ SRC_URI[sha256sum] = "8da4319102f24abbf7fff5ce9c416af848df163b29590e666d334cc192
GITHUB_BASE_URI = "https://github.com/eudev-project/eudev/releases"
-inherit autotools update-rc.d qemu pkgconfig features_check manpages github-releases
+inherit autotools update-rc.d pkgconfig features_check manpages github-releases
CONFLICT_DISTRO_FEATURES = "systemd"
@@ -77,7 +77,7 @@ RDEPENDS:${PN} += "kmod"
RPROVIDES:${PN} = "hotplug udev"
RPROVIDES:${PN}-hwdb += "udev-hwdb"
-PACKAGE_WRITE_DEPS += "qemu-native"
+PACKAGE_WRITE_DEPS += "qemuwrapper-cross"
pkg_postinst:${PN}-hwdb () {
if test -n "$D"; then
$INTERCEPT_DIR/postinst_intercept update_udev_hwdb ${PKG} mlprefix=${MLPREFIX} binprefix=${MLPREFIX}
--
2.49.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [OE-core][PATCH V3 2/5] cpio: fix ptest-runner dependency
2025-04-14 5:34 [OE-core][PATCH V3 1/5] classes/recipes: remove unnecessary qemu inherit and use qemuwrapper-cross Qi.Chen
@ 2025-04-14 5:35 ` Qi.Chen
2025-04-17 11:42 ` Ross Burton
2025-04-14 5:35 ` [OE-core][PATCH V3 3/5] nativesdk.bbclass: handle PACKAGE_WRITE_DEPS Qi.Chen
` (3 subsequent siblings)
4 siblings, 1 reply; 10+ messages in thread
From: Qi.Chen @ 2025-04-14 5:35 UTC (permalink / raw)
To: openembedded-core
From: Chen Qi <Qi.Chen@windriver.com>
ptest is only meaningful for target. So we need to specify class-target
override to ensure correct dependency.
Also, the above DEPENDS:append:class-targets lacks a leading whitespace,
add it.
Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
---
meta/recipes-extended/cpio/cpio_2.15.bb | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/meta/recipes-extended/cpio/cpio_2.15.bb b/meta/recipes-extended/cpio/cpio_2.15.bb
index b081bd53db..0b13ba103f 100644
--- a/meta/recipes-extended/cpio/cpio_2.15.bb
+++ b/meta/recipes-extended/cpio/cpio_2.15.bb
@@ -66,8 +66,8 @@ do_install_ptest_base:append() {
}
# The tests need to run as a non-root user, so pull in the ptest user
-DEPENDS:append:class-target = "${@bb.utils.contains('PTEST_ENABLED', '1', ' ptest-runner', '', d)}"
-PACKAGE_WRITE_DEPS += "ptest-runner"
+DEPENDS:append:class-target = " ${@bb.utils.contains('PTEST_ENABLED', '1', ' ptest-runner', '', d)}"
+PACKAGE_WRITE_DEPS:append:class-target = " ${@bb.utils.contains('PTEST_ENABLED', '1', ' ptest-runner', '', d)}"
RDEPENDS:${PN}-ptest += "ptest-runner"
--
2.49.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [OE-core][PATCH V3 3/5] nativesdk.bbclass: handle PACKAGE_WRITE_DEPS
2025-04-14 5:34 [OE-core][PATCH V3 1/5] classes/recipes: remove unnecessary qemu inherit and use qemuwrapper-cross Qi.Chen
2025-04-14 5:35 ` [OE-core][PATCH V3 2/5] cpio: fix ptest-runner dependency Qi.Chen
@ 2025-04-14 5:35 ` Qi.Chen
2025-04-14 5:35 ` [OE-core][PATCH V3 4/5] image/populate_sdk.bbclass: drop qemuwrapper-cross from DEPENDS Qi.Chen
` (2 subsequent siblings)
4 siblings, 0 replies; 10+ messages in thread
From: Qi.Chen @ 2025-04-14 5:35 UTC (permalink / raw)
To: openembedded-core
From: Chen Qi <Qi.Chen@windriver.com>
We want nativesdk packages to depend on correct recipes introduced
by PACKAGE_WRITE_DEPS, so do the same mapping just as we do for DEPENDS.
Before this change:
nativesdk-glib-2.0 -> qemuwrapper-cross
After this change:
nativesdk-glib-2.0 -> nativesdk-qemuwrapper-cross
This can fix do_populate_sdk failure complaining missing of
nativesdk-qemuwrapper. Error message is like below:
NOTE: > Executing update_gio_module_cache-nativesdk intercept ...
NOTE: Exit code 127. Output:
/xxx/lib32-core-image-sato/1.0/intercept_scripts-xxxx/
update_gio_module_cache-nativesdk: 13: nativesdk-qemuwrapper: not found
Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
---
meta/classes-recipe/nativesdk.bbclass | 1 +
1 file changed, 1 insertion(+)
diff --git a/meta/classes-recipe/nativesdk.bbclass b/meta/classes-recipe/nativesdk.bbclass
index 4e57349aa0..7ecb4c12c1 100644
--- a/meta/classes-recipe/nativesdk.bbclass
+++ b/meta/classes-recipe/nativesdk.bbclass
@@ -104,6 +104,7 @@ python () {
clsextend.rename_package_variables((d.getVar("PACKAGEVARS") or "").split())
clsextend.map_depends_variable("DEPENDS")
+ clsextend.map_depends_variable("PACKAGE_WRITE_DEPS")
clsextend.map_packagevars()
clsextend.map_variable("PROVIDES")
clsextend.map_regexp_variable("PACKAGES_DYNAMIC")
--
2.49.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [OE-core][PATCH V3 4/5] image/populate_sdk.bbclass: drop qemuwrapper-cross from DEPENDS
2025-04-14 5:34 [OE-core][PATCH V3 1/5] classes/recipes: remove unnecessary qemu inherit and use qemuwrapper-cross Qi.Chen
2025-04-14 5:35 ` [OE-core][PATCH V3 2/5] cpio: fix ptest-runner dependency Qi.Chen
2025-04-14 5:35 ` [OE-core][PATCH V3 3/5] nativesdk.bbclass: handle PACKAGE_WRITE_DEPS Qi.Chen
@ 2025-04-14 5:35 ` Qi.Chen
2025-04-14 5:35 ` [OE-core][PATCH V3 5/5] lib/classes/recipes: refactor qemu.bbclass functions into library functions Qi.Chen
2025-04-16 16:55 ` [OE-core][PATCH V3 1/5] classes/recipes: remove unnecessary qemu inherit and use qemuwrapper-cross Richard Purdie
4 siblings, 0 replies; 10+ messages in thread
From: Qi.Chen @ 2025-04-14 5:35 UTC (permalink / raw)
To: openembedded-core
From: Chen Qi <Qi.Chen@windriver.com>
For packages that need qemuwrapper-cross, they should have it
in PAKAGE_WRITE_DEPS.
Now that we've used 'qemuwrapper-cross' to replace 'qemu-native'
for recipes that need qemu-native for their postinsts, and we've
now mapped PACKAGE_WRITE_DEPS for nativesdk recipes, these
qemuwrapper-cross dependencies can be dropped from image.bbclass
and populate_sdk.bbclass.
Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
---
meta/classes-recipe/image.bbclass | 2 +-
meta/classes-recipe/populate_sdk_base.bbclass | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/meta/classes-recipe/image.bbclass b/meta/classes-recipe/image.bbclass
index 378d3bd0d4..dc4ce5c0a9 100644
--- a/meta/classes-recipe/image.bbclass
+++ b/meta/classes-recipe/image.bbclass
@@ -30,7 +30,7 @@ POPULATE_SDK_POST_TARGET_COMMAND += "rootfs_sysroot_relativelinks"
LICENSE ?= "MIT"
PACKAGES = ""
-DEPENDS += "${@' '.join(["%s-qemuwrapper-cross" % m for m in d.getVar("MULTILIB_VARIANTS").split()])} qemuwrapper-cross depmodwrapper-cross cross-localedef-native"
+DEPENDS += "depmodwrapper-cross cross-localedef-native"
RDEPENDS += "${PACKAGE_INSTALL} ${LINGUAS_INSTALL} ${IMAGE_INSTALL_DEBUGFS}"
RRECOMMENDS += "${PACKAGE_INSTALL_ATTEMPTONLY}"
PATH:prepend = "${@":".join(all_multilib_tune_values(d, 'STAGING_BINDIR_CROSS').split())}:"
diff --git a/meta/classes-recipe/populate_sdk_base.bbclass b/meta/classes-recipe/populate_sdk_base.bbclass
index f111466b4c..238cb1ee6e 100644
--- a/meta/classes-recipe/populate_sdk_base.bbclass
+++ b/meta/classes-recipe/populate_sdk_base.bbclass
@@ -109,7 +109,7 @@ python () {
}
SDK_RDEPENDS = "${TOOLCHAIN_TARGET_TASK} ${TOOLCHAIN_HOST_TASK}"
-SDK_DEPENDS = "virtual/fakeroot-native ${SDK_ARCHIVE_DEPENDS} cross-localedef-native nativesdk-qemuwrapper-cross ${@' '.join(["%s-qemuwrapper-cross" % m for m in d.getVar("MULTILIB_VARIANTS").split()])} qemuwrapper-cross"
+SDK_DEPENDS = "virtual/fakeroot-native ${SDK_ARCHIVE_DEPENDS} cross-localedef-native"
PATH:prepend = "${WORKDIR}/recipe-sysroot/${SDKPATHNATIVE}${bindir}/crossscripts:${@":".join(all_multilib_tune_values(d, 'STAGING_BINDIR_CROSS').split())}:"
SDK_DEPENDS += "nativesdk-glibc-locale"
--
2.49.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [OE-core][PATCH V3 5/5] lib/classes/recipes: refactor qemu.bbclass functions into library functions
2025-04-14 5:34 [OE-core][PATCH V3 1/5] classes/recipes: remove unnecessary qemu inherit and use qemuwrapper-cross Qi.Chen
` (2 preceding siblings ...)
2025-04-14 5:35 ` [OE-core][PATCH V3 4/5] image/populate_sdk.bbclass: drop qemuwrapper-cross from DEPENDS Qi.Chen
@ 2025-04-14 5:35 ` Qi.Chen
2025-04-16 16:55 ` [OE-core][PATCH V3 1/5] classes/recipes: remove unnecessary qemu inherit and use qemuwrapper-cross Richard Purdie
4 siblings, 0 replies; 10+ messages in thread
From: Qi.Chen @ 2025-04-14 5:35 UTC (permalink / raw)
To: openembedded-core
From: Chen Qi <Qi.Chen@windriver.com>
Move the functions in qemu.bbclass to meta/lib/oe/qemu.py as they are generally
useful. Add a deprecation notice in qemu.bbclass so that we can remove it in
the future.
The logic of re-definition of qemu_wrapper_cmdline in allarch.bbclass is moved to
qemu_wrapper_cmdine function.
Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
---
meta/classes-recipe/allarch.bbclass | 2 -
meta/classes-recipe/cmake-qemu.bbclass | 4 +-
meta/classes-recipe/gtk-doc.bbclass | 4 +-
meta/classes-recipe/libc-package.bbclass | 4 +-
meta/classes-recipe/meson.bbclass | 4 +-
meta/classes-recipe/qemu.bbclass | 57 +++----------------
meta/conf/bitbake.conf | 9 +++
meta/lib/oe/__init__.py | 2 +-
meta/lib/oe/qemu.py | 54 ++++++++++++++++++
.../glibc/glibc-testsuite_2.41.bb | 4 +-
meta/recipes-devtools/gcc/gcc-testsuite.inc | 4 +-
.../recipes-devtools/python/python3_3.13.2.bb | 4 +-
.../qemu/qemuwrapper-cross_1.0.bb | 4 +-
.../gobject-introspection_1.84.0.bb | 4 +-
14 files changed, 87 insertions(+), 73 deletions(-)
create mode 100644 meta/lib/oe/qemu.py
diff --git a/meta/classes-recipe/allarch.bbclass b/meta/classes-recipe/allarch.bbclass
index e429b92437..fcaa580a4d 100644
--- a/meta/classes-recipe/allarch.bbclass
+++ b/meta/classes-recipe/allarch.bbclass
@@ -63,8 +63,6 @@ python () {
d.appendVarFlag("emit_pkgdata", "vardepsexclude", " MULTILIB_VARIANTS")
d.appendVarFlag("write_specfile", "vardepsexclude", " MULTILIBS")
d.appendVarFlag("do_package", "vardepsexclude", " package_do_shlibs")
-
- d.setVar("qemu_wrapper_cmdline", "def qemu_wrapper_cmdline(data, rootfs_path, library_paths):\n return 'false'")
elif bb.data.inherits_class('packagegroup', d) and not bb.data.inherits_class('nativesdk', d):
bb.error("Please ensure recipe %s sets PACKAGE_ARCH before inherit packagegroup" % d.getVar("FILE"))
}
diff --git a/meta/classes-recipe/cmake-qemu.bbclass b/meta/classes-recipe/cmake-qemu.bbclass
index 383fc74bf2..7b988f45ed 100644
--- a/meta/classes-recipe/cmake-qemu.bbclass
+++ b/meta/classes-recipe/cmake-qemu.bbclass
@@ -14,7 +14,7 @@
# with this use case in mind this works very nicely also out of an IDE
# configured to use cmake-native for cross compiling.
-inherit qemu cmake
+inherit cmake
DEPENDS:append:class-target = "${@' qemu-native' if bb.utils.contains('MACHINE_FEATURES', 'qemu-usermode', True, False, d) else ''}"
@@ -22,7 +22,7 @@ cmake_do_generate_toolchain_file:append:class-target() {
if ${@bb.utils.contains('MACHINE_FEATURES', 'qemu-usermode', 'true', 'false', d)}; then
# Write out a qemu wrapper that will be used as exe_wrapper so that cmake
# can run target helper binaries through that. This also allows to execute ctest.
- qemu_binary="${@qemu_wrapper_cmdline(d, '${STAGING_DIR_HOST}', ['${STAGING_DIR_HOST}/${libdir}','${STAGING_DIR_HOST}/${base_libdir}'])}"
+ qemu_binary="${@oe.qemu.qemu_wrapper_cmdline(d, '${STAGING_DIR_HOST}', ['${STAGING_DIR_HOST}/${libdir}','${STAGING_DIR_HOST}/${base_libdir}'])}"
echo "#!/bin/sh" > "${WORKDIR}/cmake-qemuwrapper"
echo "$qemu_binary \"\$@\"" >> "${WORKDIR}/cmake-qemuwrapper"
chmod +x "${WORKDIR}/cmake-qemuwrapper"
diff --git a/meta/classes-recipe/gtk-doc.bbclass b/meta/classes-recipe/gtk-doc.bbclass
index 9d3911966b..28c0adba0a 100644
--- a/meta/classes-recipe/gtk-doc.bbclass
+++ b/meta/classes-recipe/gtk-doc.bbclass
@@ -35,14 +35,14 @@ DEPENDS:append = " gtk-doc-native"
export STAGING_DIR_HOST
-inherit python3native pkgconfig qemu
+inherit python3native pkgconfig
DEPENDS:append = "${@' qemu-native' if d.getVar('GTKDOC_ENABLED') == 'True' else ''}"
do_compile:prepend:class-target () {
if [ ${GTKDOC_ENABLED} = True ]; then
# Write out a qemu wrapper that will be given to gtkdoc-scangobj so that it
# can run target helper binaries through that.
- qemu_binary="${@qemu_wrapper_cmdline(d, '$STAGING_DIR_HOST', ['\\$GIR_EXTRA_LIBS_PATH','$STAGING_DIR_HOST/${libdir}','$STAGING_DIR_HOST/${base_libdir}'])}"
+ qemu_binary="${@oe.qemu.qemu_wrapper_cmdline(d, '$STAGING_DIR_HOST', ['\\$GIR_EXTRA_LIBS_PATH','$STAGING_DIR_HOST/${libdir}','$STAGING_DIR_HOST/${base_libdir}'])}"
cat > ${B}/gtkdoc-qemuwrapper << EOF
#!/bin/sh
# Use a modules directory which doesn't exist so we don't load random things
diff --git a/meta/classes-recipe/libc-package.bbclass b/meta/classes-recipe/libc-package.bbclass
index c06a2ce90a..b6094adbb1 100644
--- a/meta/classes-recipe/libc-package.bbclass
+++ b/meta/classes-recipe/libc-package.bbclass
@@ -94,8 +94,6 @@ do_collect_bins_from_locale_tree() {
cross-localedef-hardlink -c -v ${WORKDIR}/locale-tree
}
-inherit qemu
-
python package_do_split_gconvs () {
import re
if (d.getVar('PACKAGE_NO_GCONV') == '1'):
@@ -284,7 +282,7 @@ python package_do_split_gconvs () {
cmd = "PATH=\"%s\" I18NPATH=\"%s\" GCONV_PATH=\"%s\" cross-localedef %s" % \
(path, i18npath, gconvpath, localedef_opts)
else: # earlier slower qemu way
- qemu = qemu_target_binary(d)
+ qemu = oe.qemu.qemu_target_binary(d)
localedef_opts = "--force --no-hard-links --no-archive --prefix=%s \
--inputfile=%s/i18n/locales/%s --charmap=%s %s" \
% (treedir, datadir, locale, encoding, name)
diff --git a/meta/classes-recipe/meson.bbclass b/meta/classes-recipe/meson.bbclass
index cbfc45b94b..c4e764e620 100644
--- a/meta/classes-recipe/meson.bbclass
+++ b/meta/classes-recipe/meson.bbclass
@@ -4,7 +4,7 @@
# SPDX-License-Identifier: MIT
#
-inherit python3native meson-routines qemu
+inherit python3native meson-routines
DEPENDS:append = " meson-native ninja-native"
@@ -132,7 +132,7 @@ EOF
write_qemuwrapper() {
# Write out a qemu wrapper that will be used as exe_wrapper so that meson
# can run target helper binaries through that.
- qemu_binary="${@qemu_wrapper_cmdline(d, '$STAGING_DIR_HOST', ['$STAGING_DIR_HOST/${libdir}','$STAGING_DIR_HOST/${base_libdir}'])}"
+ qemu_binary="${@oe.qemu.qemu_wrapper_cmdline(d, '$STAGING_DIR_HOST', ['$STAGING_DIR_HOST/${libdir}','$STAGING_DIR_HOST/${base_libdir}'])}"
cat > ${WORKDIR}/meson-qemuwrapper << EOF
#!/bin/sh
# Use a modules directory which doesn't exist so we don't load random things
diff --git a/meta/classes-recipe/qemu.bbclass b/meta/classes-recipe/qemu.bbclass
index e9fe757c7f..5b5a26dfc9 100644
--- a/meta/classes-recipe/qemu.bbclass
+++ b/meta/classes-recipe/qemu.bbclass
@@ -9,56 +9,17 @@
# existence.
#
-def qemu_target_binary(data):
- package_arch = data.getVar("PACKAGE_ARCH")
- qemu_target_binary = (data.getVar("QEMU_TARGET_BINARY_%s" % package_arch) or "")
- if qemu_target_binary:
- return qemu_target_binary
-
- target_arch = data.getVar("TARGET_ARCH")
- if target_arch in ("i486", "i586", "i686"):
- target_arch = "i386"
- elif target_arch == "powerpc":
- target_arch = "ppc"
- elif target_arch == "powerpc64":
- target_arch = "ppc64"
- elif target_arch == "powerpc64le":
- target_arch = "ppc64le"
+python () {
+ funcs = ["qemu_target_binary", "qemu_wrapper_cmdline", "qemu_run_binary"]
+ bb.warn("qemu.bbclass has been deprecated, please remove 'inherit qemu' and replace function invocation:\n\t%s" %
+ '\n\t'.join(["{0} -> oe.qemu.{0}".format(f) for f in funcs]))
+}
- return "qemu-" + target_arch
+def qemu_target_binary(data):
+ return oe.qemu.qemu_target_binary(data)
def qemu_wrapper_cmdline(data, rootfs_path, library_paths):
- import string
-
- qemu_binary = qemu_target_binary(data)
- if qemu_binary == "qemu-allarch":
- qemu_binary = "qemuwrapper"
-
- qemu_options = data.getVar("QEMU_OPTIONS") or ""
-
- return "PSEUDO_UNLOAD=1 " + qemu_binary + " " + qemu_options + " -L " + rootfs_path\
- + " -E LD_LIBRARY_PATH=" + ":".join(library_paths) + " "
+ return oe.qemu.qemu_wrapper_cmdline(data, rootfs_path, library_paths)
-# Next function will return a string containing the command that is needed to
-# to run a certain binary through qemu. For example, in order to make a certain
-# postinstall scriptlet run at do_rootfs time and running the postinstall is
-# architecture dependent, we can run it through qemu. For example, in the
-# postinstall scriptlet, we could use the following:
-#
-# ${@qemu_run_binary(d, '$D', '/usr/bin/test_app')} [test_app arguments]
-#
def qemu_run_binary(data, rootfs_path, binary):
- libdir = rootfs_path + data.getVar("libdir", False)
- base_libdir = rootfs_path + data.getVar("base_libdir", False)
-
- return qemu_wrapper_cmdline(data, rootfs_path, [libdir, base_libdir]) + rootfs_path + binary
-
-# QEMU_EXTRAOPTIONS is not meant to be directly used, the extensions are
-# PACKAGE_ARCH, *NOT* overrides.
-# In some cases (e.g. ppc) simply being arch specific (apparently) isn't good
-# enough and a PACKAGE_ARCH specific -cpu option is needed (hence we have to do
-# this dance). For others (e.g. arm) a -cpu option is not necessary, since the
-# qemu-arm default CPU supports all required architecture levels.
-
-QEMU_OPTIONS = "-r ${OLDEST_KERNEL} ${@d.getVar("QEMU_EXTRAOPTIONS:tune-%s" % d.getVar('TUNE_PKGARCH')) or ""}"
-QEMU_OPTIONS[vardeps] += "QEMU_EXTRAOPTIONS:tune-${TUNE_PKGARCH}"
+ return oe.qemu.qemu_run_binary(data, rootfs_path, binary)
diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf
index 501808204e..b6215fd7ee 100644
--- a/meta/conf/bitbake.conf
+++ b/meta/conf/bitbake.conf
@@ -896,6 +896,15 @@ ZSTD_DEFAULTS[vardepsexclude] = "ZSTD_THREADS"
# may fallback to using all CPUs
export OMP_NUM_THREADS = "${BB_NUMBER_THREADS}"
+# QEMU_EXTRAOPTIONS is not meant to be directly used, the extensions are
+# PACKAGE_ARCH, *NOT* overrides.
+# In some cases (e.g. ppc) simply being arch specific (apparently) isn't good
+# enough and a PACKAGE_ARCH specific -cpu option is needed (hence we have to do
+# this dance). For others (e.g. arm) a -cpu option is not necessary, since the
+# qemu-arm default CPU supports all required architecture levels.
+QEMU_OPTIONS = "-r ${OLDEST_KERNEL} ${@d.getVar("QEMU_EXTRAOPTIONS:tune-%s" % d.getVar('TUNE_PKGARCH')) or ""}"
+QEMU_OPTIONS[vardeps] += "QEMU_EXTRAOPTIONS:tune-${TUNE_PKGARCH}"
+
##################################################################
# Magic Cookie for SANITY CHECK
##################################################################
diff --git a/meta/lib/oe/__init__.py b/meta/lib/oe/__init__.py
index a55694669d..dd094a874a 100644
--- a/meta/lib/oe/__init__.py
+++ b/meta/lib/oe/__init__.py
@@ -10,6 +10,6 @@ __path__ = extend_path(__path__, __name__)
# Modules with vistorcode need to go first else anything depending on them won't be
# processed correctly (e.g. qa)
BBIMPORTS = ["qa", "data", "path", "utils", "types", "package", "packagedata", \
- "packagegroup", "sstatesig", "lsb", "cachedpath", "license", \
+ "packagegroup", "sstatesig", "lsb", "cachedpath", "license", "qemu", \
"reproducible", "rust", "buildcfg", "go", "spdx30_tasks", "spdx_common", \
"cve_check"]
diff --git a/meta/lib/oe/qemu.py b/meta/lib/oe/qemu.py
new file mode 100644
index 0000000000..769865036c
--- /dev/null
+++ b/meta/lib/oe/qemu.py
@@ -0,0 +1,54 @@
+#
+# Copyright OpenEmbedded Contributors
+#
+# SPDX-License-Identifier: GPL-2.0-only
+#
+
+def qemu_target_binary(d):
+ package_arch = d.getVar("PACKAGE_ARCH")
+ qemu_target_binary = (d.getVar("QEMU_TARGET_BINARY_%s" % package_arch) or "")
+ if qemu_target_binary:
+ return qemu_target_binary
+
+ target_arch = d.getVar("TARGET_ARCH")
+ if target_arch in ("i486", "i586", "i686"):
+ target_arch = "i386"
+ elif target_arch == "powerpc":
+ target_arch = "ppc"
+ elif target_arch == "powerpc64":
+ target_arch = "ppc64"
+ elif target_arch == "powerpc64le":
+ target_arch = "ppc64le"
+
+ return "qemu-" + target_arch
+
+def qemu_wrapper_cmdline(d, rootfs_path, library_paths, qemu_options=None):
+ import string
+
+ package_arch = d.getVar("PACKAGE_ARCH")
+ if package_arch == "all":
+ return "false"
+
+ qemu_binary = qemu_target_binary(d)
+ if qemu_binary == "qemu-allarch":
+ qemu_binary = "qemuwrapper"
+
+ if qemu_options == None:
+ qemu_options = d.getVar("QEMU_OPTIONS") or ""
+
+ return "PSEUDO_UNLOAD=1 " + qemu_binary + " " + qemu_options + " -L " + rootfs_path\
+ + " -E LD_LIBRARY_PATH=" + ":".join(library_paths) + " "
+
+# Next function will return a string containing the command that is needed to
+# to run a certain binary through qemu. For example, in order to make a certain
+# postinstall scriptlet run at do_rootfs time and running the postinstall is
+# architecture dependent, we can run it through qemu. For example, in the
+# postinstall scriptlet, we could use the following:
+#
+# ${@qemu_run_binary(d, '$D', '/usr/bin/test_app')} [test_app arguments]
+#
+def qemu_run_binary(d, rootfs_path, binary):
+ libdir = rootfs_path + d.getVar("libdir", False)
+ base_libdir = rootfs_path + d.getVar("base_libdir", False)
+
+ return qemu_wrapper_cmdline(d, rootfs_path, [libdir, base_libdir]) + rootfs_path + binary
diff --git a/meta/recipes-core/glibc/glibc-testsuite_2.41.bb b/meta/recipes-core/glibc/glibc-testsuite_2.41.bb
index 3a2764e40b..d5e3a2cb19 100644
--- a/meta/recipes-core/glibc/glibc-testsuite_2.41.bb
+++ b/meta/recipes-core/glibc/glibc-testsuite_2.41.bb
@@ -1,8 +1,6 @@
require glibc_${PV}.bb
require glibc-tests.inc
-inherit qemu
-
SRC_URI += "file://check-test-wrapper"
# strip provides
@@ -22,7 +20,7 @@ do_check:append () {
oe_runmake -i \
QEMU_SYSROOT="${RECIPE_SYSROOT}" \
- QEMU_OPTIONS="${@qemu_target_binary(d)} ${QEMU_OPTIONS}" \
+ QEMU_OPTIONS="${@oe.qemu.qemu_target_binary(d)} ${QEMU_OPTIONS}" \
SSH_HOST="${TOOLCHAIN_TEST_HOST}" \
SSH_HOST_USER="${TOOLCHAIN_TEST_HOST_USER}" \
SSH_HOST_PORT="${TOOLCHAIN_TEST_HOST_PORT}" \
diff --git a/meta/recipes-devtools/gcc/gcc-testsuite.inc b/meta/recipes-devtools/gcc/gcc-testsuite.inc
index 3257f86907..42f7f244c3 100644
--- a/meta/recipes-devtools/gcc/gcc-testsuite.inc
+++ b/meta/recipes-devtools/gcc/gcc-testsuite.inc
@@ -1,5 +1,3 @@
-inherit qemu
-
TOOLCHAIN_TEST_TARGET ??= "user"
TOOLCHAIN_TEST_HOST ??= "localhost"
TOOLCHAIN_TEST_HOST_USER ??= "root"
@@ -41,7 +39,7 @@ python check_prepare() {
content.append('process_multilib_options ""')
# qemu args
- qemu_binary = qemu_target_binary(d)
+ qemu_binary = oe.qemu.qemu_target_binary(d)
if not qemu_binary:
bb.fatal("Missing target qemu linux-user binary")
diff --git a/meta/recipes-devtools/python/python3_3.13.2.bb b/meta/recipes-devtools/python/python3_3.13.2.bb
index 0f0505c66c..30835796e9 100644
--- a/meta/recipes-devtools/python/python3_3.13.2.bb
+++ b/meta/recipes-devtools/python/python3_3.13.2.bb
@@ -57,7 +57,7 @@ S = "${WORKDIR}/Python-${PV}"
BBCLASSEXTEND = "native nativesdk"
-inherit autotools pkgconfig qemu ptest multilib_header update-alternatives
+inherit autotools pkgconfig ptest multilib_header update-alternatives
MULTILIB_SUFFIX = "${@d.getVar('base_libdir',1).split('/')[-1]}"
@@ -168,7 +168,7 @@ write_pgo_wrapper() {
cat >pgo-wrapper <<EOF
#!/bin/sh
cd ${B}
-${@qemu_wrapper_cmdline(d, '${STAGING_DIR_TARGET}', ['${B}', '${STAGING_DIR_TARGET}/${base_libdir}'])} "\$@"
+${@oe.qemu.qemu_wrapper_cmdline(d, '${STAGING_DIR_TARGET}', ['${B}', '${STAGING_DIR_TARGET}/${base_libdir}'])} "\$@"
EOF
chmod +x pgo-wrapper
fi
diff --git a/meta/recipes-devtools/qemu/qemuwrapper-cross_1.0.bb b/meta/recipes-devtools/qemu/qemuwrapper-cross_1.0.bb
index 6d0e7883ad..9fe43a6ce2 100644
--- a/meta/recipes-devtools/qemu/qemuwrapper-cross_1.0.bb
+++ b/meta/recipes-devtools/qemu/qemuwrapper-cross_1.0.bb
@@ -7,14 +7,12 @@ UNPACKDIR = "${S}"
DEPENDS += "qemu-native"
-inherit qemu
-
do_populate_sysroot[depends] = ""
do_install () {
install -d ${D}${bindir_crossscripts}/
- qemu_binary=${@qemu_target_binary(d)}
+ qemu_binary=${@oe.qemu.qemu_target_binary(d)}
qemu_options='${QEMU_OPTIONS} -E LD_LIBRARY_PATH=$D${libdir}:$D${base_libdir}'
cat >> ${D}${bindir_crossscripts}/${MLPREFIX}qemuwrapper << EOF
diff --git a/meta/recipes-gnome/gobject-introspection/gobject-introspection_1.84.0.bb b/meta/recipes-gnome/gobject-introspection/gobject-introspection_1.84.0.bb
index ac5f4e9370..3110c151a6 100644
--- a/meta/recipes-gnome/gobject-introspection/gobject-introspection_1.84.0.bb
+++ b/meta/recipes-gnome/gobject-introspection/gobject-introspection_1.84.0.bb
@@ -20,7 +20,7 @@ SRC_URI[sha256sum] = "945b57da7ec262e5c266b89e091d14be800cc424277d82a02872b7d794
SRC_URI:append:class-native = " file://0001-Relocate-the-repository-directory-for-native-builds.patch"
-inherit meson pkgconfig gtk-doc python3targetconfig qemu gobject-introspection-data upstream-version-is-even multilib_script
+inherit meson pkgconfig gtk-doc python3targetconfig gobject-introspection-data upstream-version-is-even multilib_script
GTKDOC_MESON_OPTION = "gtk_doc"
@@ -64,7 +64,7 @@ do_configure:prepend:class-native() {
do_configure:prepend:class-target() {
# Write out a qemu wrapper that will be given to gi-scanner so that it
# can run target helper binaries through that.
- qemu_binary="${@qemu_wrapper_cmdline(d, '$STAGING_DIR_HOST', ['\\$GIR_EXTRA_LIBS_PATH','.libs','$STAGING_DIR_HOST/${libdir}','$STAGING_DIR_HOST/${base_libdir}'])}"
+ qemu_binary="${@oe.qemu.qemu_wrapper_cmdline(d, '$STAGING_DIR_HOST', ['\\$GIR_EXTRA_LIBS_PATH','.libs','$STAGING_DIR_HOST/${libdir}','$STAGING_DIR_HOST/${base_libdir}'])}"
cat > ${B}/g-ir-scanner-qemuwrapper << EOF
#!/bin/sh
# Use a modules directory which doesn't exist so we don't load random things
--
2.49.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [OE-core][PATCH V3 1/5] classes/recipes: remove unnecessary qemu inherit and use qemuwrapper-cross
2025-04-14 5:34 [OE-core][PATCH V3 1/5] classes/recipes: remove unnecessary qemu inherit and use qemuwrapper-cross Qi.Chen
` (3 preceding siblings ...)
2025-04-14 5:35 ` [OE-core][PATCH V3 5/5] lib/classes/recipes: refactor qemu.bbclass functions into library functions Qi.Chen
@ 2025-04-16 16:55 ` Richard Purdie
2025-04-17 2:26 ` Chen, Qi
4 siblings, 1 reply; 10+ messages in thread
From: Richard Purdie @ 2025-04-16 16:55 UTC (permalink / raw)
To: Qi.Chen, openembedded-core
On Sun, 2025-04-13 at 22:34 -0700, Chen Qi via lists.openembedded.org wrote:
> From: Chen Qi <Qi.Chen@windriver.com>
>
> These classes/recipes inherit qemu.bbclass but do not use anything from it.
> What they use is qemuwrapper-cross, which is needed at do_rootfs time and
> needs to be pulled-in by PACKAGE_WRITE_DEPS.
>
> Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
> ---
> meta/classes-recipe/fontcache.bbclass | 3 +--
> meta/classes-recipe/gio-module-cache.bbclass | 3 +--
> meta/classes-recipe/gtk-immodules-cache.bbclass | 4 +---
> meta/classes-recipe/manpages.bbclass | 2 +-
> meta/classes-recipe/pixbufcache.bbclass | 5 +----
> meta/recipes-core/systemd/systemd_257.5.bb | 5 +++--
> meta/recipes-core/udev/eudev_3.2.14.bb | 4 ++--
> 7 files changed, 10 insertions(+), 16 deletions(-)
>
> diff --git a/meta/classes-recipe/fontcache.bbclass b/meta/classes-recipe/fontcache.bbclass
> index 6f4978369d..deadcd2fbb 100644
> --- a/meta/classes-recipe/fontcache.bbclass
> +++ b/meta/classes-recipe/fontcache.bbclass
> @@ -9,8 +9,7 @@
> # packages.
> #
>
> -PACKAGE_WRITE_DEPS += "qemu-native"
> -inherit qemu
> +PACKAGE_WRITE_DEPS += "qemuwrapper-cross"
>
> FONT_PACKAGES ??= "${PN}"
> FONT_PACKAGES:class-native = ""
> diff --git a/meta/classes-recipe/gio-module-cache.bbclass b/meta/classes-recipe/gio-module-cache.bbclass
> index d12e03c4a0..3714678c7c 100644
> --- a/meta/classes-recipe/gio-module-cache.bbclass
> +++ b/meta/classes-recipe/gio-module-cache.bbclass
> @@ -4,8 +4,7 @@
> # SPDX-License-Identifier: MIT
> #
>
> -PACKAGE_WRITE_DEPS += "qemu-native"
> -inherit qemu
> +PACKAGE_WRITE_DEPS += "qemuwrapper-cross"
>
> GIO_MODULE_PACKAGES ??= "${PN}"
>
> diff --git a/meta/classes-recipe/gtk-immodules-cache.bbclass b/meta/classes-recipe/gtk-immodules-cache.bbclass
> index 8fbe1dd1fb..585838c105 100644
> --- a/meta/classes-recipe/gtk-immodules-cache.bbclass
> +++ b/meta/classes-recipe/gtk-immodules-cache.bbclass
> @@ -8,9 +8,7 @@
> #
> # Usage: Set GTKIMMODULES_PACKAGES to the packages that needs to update the inputmethod modules
>
> -PACKAGE_WRITE_DEPS += "qemu-native"
> -
> -inherit qemu
> +PACKAGE_WRITE_DEPS += "qemuwrapper-cross"
>
> GTKIMMODULES_PACKAGES ?= "${PN}"
>
> diff --git a/meta/classes-recipe/manpages.bbclass b/meta/classes-recipe/manpages.bbclass
> index e9ca2f895b..f3d034b046 100644
> --- a/meta/classes-recipe/manpages.bbclass
> +++ b/meta/classes-recipe/manpages.bbclass
> @@ -10,7 +10,7 @@
> # by default.
> PACKAGECONFIG:append:class-target = " ${@bb.utils.contains('DISTRO_FEATURES', 'api-documentation', 'manpages', '', d)}"
>
> -inherit qemu
> +PACKAGE_WRITE_DEPS += "${@bb.utils.contains('DISTRO_FEATURES', 'api-documentation', 'qemuwrapper-cross', '', d)}"
>
> # usually manual files are packaged to ${PN}-doc except man-pages
> MAN_PKG ?= "${PN}-doc"
> diff --git a/meta/classes-recipe/pixbufcache.bbclass b/meta/classes-recipe/pixbufcache.bbclass
> index 107e38885e..c32673df55 100644
> --- a/meta/classes-recipe/pixbufcache.bbclass
> +++ b/meta/classes-recipe/pixbufcache.bbclass
> @@ -9,12 +9,9 @@
> # packages.
> #
>
> -DEPENDS:append:class-target = " qemu-native"
> -inherit qemu
> -
> PIXBUF_PACKAGES ??= "${PN}"
>
> -PACKAGE_WRITE_DEPS += "qemu-native gdk-pixbuf-native"
> +PACKAGE_WRITE_DEPS += "qemuwrapper-cross gdk-pixbuf-native"
>
> pixbufcache_common() {
> if [ "x$D" != "x" ]; then
> diff --git a/meta/recipes-core/systemd/systemd_257.5.bb b/meta/recipes-core/systemd/systemd_257.5.bb
> index 24aad11c0a..0f0c846db6 100644
> --- a/meta/recipes-core/systemd/systemd_257.5.bb
> +++ b/meta/recipes-core/systemd/systemd_257.5.bb
> @@ -8,7 +8,7 @@ DEPENDS = "gperf-native libcap util-linux python3-jinja2-native"
>
> SECTION = "base/shell"
>
> -inherit useradd pkgconfig meson perlnative update-rc.d update-alternatives qemu systemd gettext bash-completion manpages features_check mime
> +inherit useradd pkgconfig meson perlnative update-rc.d update-alternatives systemd gettext bash-completion manpages features_check mime
>
> # unmerged-usr support is deprecated upstream, taints the system and will be
> # removed in the near future. Fail the build if it is not enabled.
> @@ -932,7 +932,8 @@ pkg_prerm:${PN}:libc-glibc () {
> fi
> }
>
> -PACKAGE_WRITE_DEPS += "qemu-native"
> +PACKAGE_WRITE_DEPS += "qemuwrapper-cross"
> +
> pkg_postinst:udev-hwdb () {
> if test -n "$D"; then
> $INTERCEPT_DIR/postinst_intercept update_udev_hwdb ${PKG} mlprefix=${MLPREFIX} binprefix=${MLPREFIX} \
> diff --git a/meta/recipes-core/udev/eudev_3.2.14.bb b/meta/recipes-core/udev/eudev_3.2.14.bb
> index b3e7d092c5..a2d222e655 100644
> --- a/meta/recipes-core/udev/eudev_3.2.14.bb
> +++ b/meta/recipes-core/udev/eudev_3.2.14.bb
> @@ -20,7 +20,7 @@ SRC_URI[sha256sum] = "8da4319102f24abbf7fff5ce9c416af848df163b29590e666d334cc192
>
> GITHUB_BASE_URI = "https://github.com/eudev-project/eudev/releases"
>
> -inherit autotools update-rc.d qemu pkgconfig features_check manpages github-releases
> +inherit autotools update-rc.d pkgconfig features_check manpages github-releases
>
> CONFLICT_DISTRO_FEATURES = "systemd"
>
> @@ -77,7 +77,7 @@ RDEPENDS:${PN} += "kmod"
> RPROVIDES:${PN} = "hotplug udev"
> RPROVIDES:${PN}-hwdb += "udev-hwdb"
>
> -PACKAGE_WRITE_DEPS += "qemu-native"
> +PACKAGE_WRITE_DEPS += "qemuwrapper-cross"
> pkg_postinst:${PN}-hwdb () {
> if test -n "$D"; then
> $INTERCEPT_DIR/postinst_intercept update_udev_hwdb ${PKG} mlprefix=${MLPREFIX} binprefix=${MLPREFIX}
>
Something in this series is still causing allarch variable dependency
problems, as can be seen running "oe-selftest -r
sstatetests.SStateHashSameSigs2.test_sstate_allarch_samesigs -j 1".
https://autobuilder.yoctoproject.org/valkyrie/#/builders/48/builds/1308
I'm seeing bitbake-diffsigs output of:
basehash changed from dfc2d35677a0412cc783f8b35f24dc6722d84be9f2cddff1adc2ae81dbf707c6 to 723f58407e0fcfae4450cee918fcbe3a8aebe3721eca0de8cf7a48ae4d150171
List of dependencies for variable QEMU_OPTIONS changed from 'frozenset({'QEMU_EXTRAOPTIONS:tune-cortexa15t2hf-neon', 'TUNE_PKGARCH', 'OLDEST_KERNEL'})' to 'frozenset({'TUNE_PKGARCH', 'OLDEST_KERNEL', 'QEMU_EXTRAOPTIONS:tune-core2-64'})'
changed items: frozenset({'QEMU_EXTRAOPTIONS:tune-cortexa15t2hf-neon', 'QEMU_EXTRAOPTIONS:tune-core2-64'})
List of dependencies for variable TUNE_PKGARCH changed from 'frozenset({'ARMPKGSFX_THUMB', 'ARMPKGSFX_FPU', 'ARMPKGSFX_ENDIAN', 'ARMPKGARCH', 'ARMPKGSFX_EABI', 'ARMPKGSFX_DSP'})' to 'frozenset({'TUNE_PKGARCH:tune-core2-64', 'DEFAULTTUNE'})'
changed items: frozenset({'ARMPKGSFX_THUMB', 'ARMPKGSFX_FPU', 'TUNE_PKGARCH:tune-core2-64', 'DEFAULTTUNE', 'ARMPKGSFX_ENDIAN', 'ARMPKGARCH', 'ARMPKGSFX_EABI', 'ARMPKGSFX_DSP'})
Dependency on variable QEMU_EXTRAOPTIONS:tune-core2-64 was added
Dependency on variable TUNE_PKGARCH:tune-core2-64 was added
Dependency on Variable ARMPKGARCH was removed
Dependency on Variable ARMPKGARCH:tune-cortexa15thf-neon was removed
Dependency on Variable ARMPKGSFX_DSP was removed
Dependency on Variable ARMPKGSFX_EABI was removed
Dependency on Variable ARMPKGSFX_ENDIAN was removed
Dependency on Variable ARMPKGSFX_FPU was removed
Dependency on Variable ARMPKGSFX_THUMB was removed
Dependency on Variable ARM_INSTRUCTION_SET was removed
Dependency on Variable ARM_M_OPT was removed
Dependency on Variable ARM_THUMB_OPT was removed
Dependency on Variable ARM_THUMB_SUFFIX was removed
Dependency on Variable QEMU_EXTRAOPTIONS:tune-cortexa15t2hf-neon was removed
Dependency on Variable TUNE_CCARGS_MFLOAT was removed
Dependency on Variable TUNE_CCARGS_MFPU was removed
Dependency on Variable TUNE_FEATURES was removed
Dependency on Variable TUNE_FEATURES:tune-cortexa15 was removed
Dependency on Variable TUNE_FEATURES:tune-cortexa15-neon was removed
Dependency on Variable TUNE_FEATURES:tune-cortexa15t-neon was removed
Dependency on Variable TUNE_FEATURES:tune-cortexa15thf-neon was removed
Variable DEFAULTTUNE value changed from 'cortexa15thf-neon' to 'core2-64'
Variable OLDEST_KERNEL value changed from '3.3.0' to '5.15'
Variable TUNE_PKGARCH value changed from '${ARMPKGARCH}${ARMPKGSFX_THUMB}${ARMPKGSFX_DSP}${ARMPKGSFX_EABI}${ARMPKGSFX_ENDIAN}${ARMPKGSFX_FPU}' to '${TUNE_PKGARCH:tune-${DEFAULTTUNE}}'
for "bitbake-diffsigs ../build-st-1070764/tmp-sstatesamehash*/stamps/all-poky-linux/wayland-protocols/1.42.do_write_configsigdata.*".
Cheers,
Richard
^ permalink raw reply [flat|nested] 10+ messages in thread
* RE: [OE-core][PATCH V3 1/5] classes/recipes: remove unnecessary qemu inherit and use qemuwrapper-cross
2025-04-16 16:55 ` [OE-core][PATCH V3 1/5] classes/recipes: remove unnecessary qemu inherit and use qemuwrapper-cross Richard Purdie
@ 2025-04-17 2:26 ` Chen, Qi
2025-04-17 10:11 ` Richard Purdie
0 siblings, 1 reply; 10+ messages in thread
From: Chen, Qi @ 2025-04-17 2:26 UTC (permalink / raw)
To: Richard Purdie, openembedded-core@lists.openembedded.org
Got it. I'll look into the problem ASAP.
Regards,
Qi
-----Original Message-----
From: Richard Purdie <richard.purdie@linuxfoundation.org>
Sent: Thursday, April 17, 2025 12:56 AM
To: Chen, Qi <Qi.Chen@windriver.com>; openembedded-core@lists.openembedded.org
Subject: Re: [OE-core][PATCH V3 1/5] classes/recipes: remove unnecessary qemu inherit and use qemuwrapper-cross
On Sun, 2025-04-13 at 22:34 -0700, Chen Qi via lists.openembedded.org wrote:
> From: Chen Qi <Qi.Chen@windriver.com>
>
> These classes/recipes inherit qemu.bbclass but do not use anything from it.
> What they use is qemuwrapper-cross, which is needed at do_rootfs time
> and needs to be pulled-in by PACKAGE_WRITE_DEPS.
>
> Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
> ---
> meta/classes-recipe/fontcache.bbclass | 3 +--
> meta/classes-recipe/gio-module-cache.bbclass | 3 +--
> meta/classes-recipe/gtk-immodules-cache.bbclass | 4 +---
> meta/classes-recipe/manpages.bbclass | 2 +-
> meta/classes-recipe/pixbufcache.bbclass | 5 +----
> meta/recipes-core/systemd/systemd_257.5.bb | 5 +++--
> meta/recipes-core/udev/eudev_3.2.14.bb | 4 ++--
> 7 files changed, 10 insertions(+), 16 deletions(-)
>
> diff --git a/meta/classes-recipe/fontcache.bbclass
> b/meta/classes-recipe/fontcache.bbclass
> index 6f4978369d..deadcd2fbb 100644
> --- a/meta/classes-recipe/fontcache.bbclass
> +++ b/meta/classes-recipe/fontcache.bbclass
> @@ -9,8 +9,7 @@
> # packages.
> #
>
> -PACKAGE_WRITE_DEPS += "qemu-native"
> -inherit qemu
> +PACKAGE_WRITE_DEPS += "qemuwrapper-cross"
>
> FONT_PACKAGES ??= "${PN}"
> FONT_PACKAGES:class-native = ""
> diff --git a/meta/classes-recipe/gio-module-cache.bbclass
> b/meta/classes-recipe/gio-module-cache.bbclass
> index d12e03c4a0..3714678c7c 100644
> --- a/meta/classes-recipe/gio-module-cache.bbclass
> +++ b/meta/classes-recipe/gio-module-cache.bbclass
> @@ -4,8 +4,7 @@
> # SPDX-License-Identifier: MIT
> #
>
> -PACKAGE_WRITE_DEPS += "qemu-native"
> -inherit qemu
> +PACKAGE_WRITE_DEPS += "qemuwrapper-cross"
>
> GIO_MODULE_PACKAGES ??= "${PN}"
>
> diff --git a/meta/classes-recipe/gtk-immodules-cache.bbclass
> b/meta/classes-recipe/gtk-immodules-cache.bbclass
> index 8fbe1dd1fb..585838c105 100644
> --- a/meta/classes-recipe/gtk-immodules-cache.bbclass
> +++ b/meta/classes-recipe/gtk-immodules-cache.bbclass
> @@ -8,9 +8,7 @@
> #
> # Usage: Set GTKIMMODULES_PACKAGES to the packages that needs to
> update the inputmethod modules
>
> -PACKAGE_WRITE_DEPS += "qemu-native"
> -
> -inherit qemu
> +PACKAGE_WRITE_DEPS += "qemuwrapper-cross"
>
> GTKIMMODULES_PACKAGES ?= "${PN}"
>
> diff --git a/meta/classes-recipe/manpages.bbclass
> b/meta/classes-recipe/manpages.bbclass
> index e9ca2f895b..f3d034b046 100644
> --- a/meta/classes-recipe/manpages.bbclass
> +++ b/meta/classes-recipe/manpages.bbclass
> @@ -10,7 +10,7 @@
> # by default.
> PACKAGECONFIG:append:class-target = " ${@bb.utils.contains('DISTRO_FEATURES', 'api-documentation', 'manpages', '', d)}"
>
> -inherit qemu
> +PACKAGE_WRITE_DEPS += "${@bb.utils.contains('DISTRO_FEATURES', 'api-documentation', 'qemuwrapper-cross', '', d)}"
>
> # usually manual files are packaged to ${PN}-doc except man-pages
> MAN_PKG ?= "${PN}-doc"
> diff --git a/meta/classes-recipe/pixbufcache.bbclass
> b/meta/classes-recipe/pixbufcache.bbclass
> index 107e38885e..c32673df55 100644
> --- a/meta/classes-recipe/pixbufcache.bbclass
> +++ b/meta/classes-recipe/pixbufcache.bbclass
> @@ -9,12 +9,9 @@
> # packages.
> #
>
> -DEPENDS:append:class-target = " qemu-native"
> -inherit qemu
> -
> PIXBUF_PACKAGES ??= "${PN}"
>
> -PACKAGE_WRITE_DEPS += "qemu-native gdk-pixbuf-native"
> +PACKAGE_WRITE_DEPS += "qemuwrapper-cross gdk-pixbuf-native"
>
> pixbufcache_common() {
> if [ "x$D" != "x" ]; then
> diff --git a/meta/recipes-core/systemd/systemd_257.5.bb
> b/meta/recipes-core/systemd/systemd_257.5.bb
> index 24aad11c0a..0f0c846db6 100644
> --- a/meta/recipes-core/systemd/systemd_257.5.bb
> +++ b/meta/recipes-core/systemd/systemd_257.5.bb
> @@ -8,7 +8,7 @@ DEPENDS = "gperf-native libcap util-linux python3-jinja2-native"
>
> SECTION = "base/shell"
>
> -inherit useradd pkgconfig meson perlnative update-rc.d
> update-alternatives qemu systemd gettext bash-completion manpages
> features_check mime
> +inherit useradd pkgconfig meson perlnative update-rc.d
> +update-alternatives systemd gettext bash-completion manpages
> +features_check mime
>
> # unmerged-usr support is deprecated upstream, taints the system and
> will be
> # removed in the near future. Fail the build if it is not enabled.
> @@ -932,7 +932,8 @@ pkg_prerm:${PN}:libc-glibc () {
> fi
> }
>
> -PACKAGE_WRITE_DEPS += "qemu-native"
> +PACKAGE_WRITE_DEPS += "qemuwrapper-cross"
> +
> pkg_postinst:udev-hwdb () {
> if test -n "$D"; then
> $INTERCEPT_DIR/postinst_intercept update_udev_hwdb ${PKG}
> mlprefix=${MLPREFIX} binprefix=${MLPREFIX} \ diff --git
> a/meta/recipes-core/udev/eudev_3.2.14.bb
> b/meta/recipes-core/udev/eudev_3.2.14.bb
> index b3e7d092c5..a2d222e655 100644
> --- a/meta/recipes-core/udev/eudev_3.2.14.bb
> +++ b/meta/recipes-core/udev/eudev_3.2.14.bb
> @@ -20,7 +20,7 @@ SRC_URI[sha256sum] =
> "8da4319102f24abbf7fff5ce9c416af848df163b29590e666d334cc192
>
> GITHUB_BASE_URI = "https://github.com/eudev-project/eudev/releases"
>
> -inherit autotools update-rc.d qemu pkgconfig features_check manpages
> github-releases
> +inherit autotools update-rc.d pkgconfig features_check manpages
> +github-releases
>
> CONFLICT_DISTRO_FEATURES = "systemd"
>
> @@ -77,7 +77,7 @@ RDEPENDS:${PN} += "kmod"
> RPROVIDES:${PN} = "hotplug udev"
> RPROVIDES:${PN}-hwdb += "udev-hwdb"
>
> -PACKAGE_WRITE_DEPS += "qemu-native"
> +PACKAGE_WRITE_DEPS += "qemuwrapper-cross"
> pkg_postinst:${PN}-hwdb () {
> if test -n "$D"; then
> $INTERCEPT_DIR/postinst_intercept update_udev_hwdb ${PKG}
> mlprefix=${MLPREFIX} binprefix=${MLPREFIX}
>
Something in this series is still causing allarch variable dependency problems, as can be seen running "oe-selftest -r sstatetests.SStateHashSameSigs2.test_sstate_allarch_samesigs -j 1".
https://autobuilder.yoctoproject.org/valkyrie/#/builders/48/builds/1308
I'm seeing bitbake-diffsigs output of:
basehash changed from dfc2d35677a0412cc783f8b35f24dc6722d84be9f2cddff1adc2ae81dbf707c6 to 723f58407e0fcfae4450cee918fcbe3a8aebe3721eca0de8cf7a48ae4d150171
List of dependencies for variable QEMU_OPTIONS changed from 'frozenset({'QEMU_EXTRAOPTIONS:tune-cortexa15t2hf-neon', 'TUNE_PKGARCH', 'OLDEST_KERNEL'})' to 'frozenset({'TUNE_PKGARCH', 'OLDEST_KERNEL', 'QEMU_EXTRAOPTIONS:tune-core2-64'})'
changed items: frozenset({'QEMU_EXTRAOPTIONS:tune-cortexa15t2hf-neon', 'QEMU_EXTRAOPTIONS:tune-core2-64'})
List of dependencies for variable TUNE_PKGARCH changed from 'frozenset({'ARMPKGSFX_THUMB', 'ARMPKGSFX_FPU', 'ARMPKGSFX_ENDIAN', 'ARMPKGARCH', 'ARMPKGSFX_EABI', 'ARMPKGSFX_DSP'})' to 'frozenset({'TUNE_PKGARCH:tune-core2-64', 'DEFAULTTUNE'})'
changed items: frozenset({'ARMPKGSFX_THUMB', 'ARMPKGSFX_FPU', 'TUNE_PKGARCH:tune-core2-64', 'DEFAULTTUNE', 'ARMPKGSFX_ENDIAN', 'ARMPKGARCH', 'ARMPKGSFX_EABI', 'ARMPKGSFX_DSP'}) Dependency on variable QEMU_EXTRAOPTIONS:tune-core2-64 was added Dependency on variable TUNE_PKGARCH:tune-core2-64 was added Dependency on Variable ARMPKGARCH was removed Dependency on Variable ARMPKGARCH:tune-cortexa15thf-neon was removed Dependency on Variable ARMPKGSFX_DSP was removed Dependency on Variable ARMPKGSFX_EABI was removed Dependency on Variable ARMPKGSFX_ENDIAN was removed Dependency on Variable ARMPKGSFX_FPU was removed Dependency on Variable ARMPKGSFX_THUMB was removed Dependency on Variable ARM_INSTRUCTION_SET was removed Dependency on Variable ARM_M_OPT was removed Dependency on Variable ARM_THUMB_OPT was removed Dependency on Variable ARM_THUMB_SUFFIX was removed Dependency on Variable QEMU_EXTRAOPTIONS:tune-cortexa15t2hf-neon was removed Dependency on Variable TUNE_CCARGS_MFLOAT was removed Dependency on Variable TUNE_CCARGS_MFPU was removed Dependency on Variable TUNE_FEATURES was removed Dependency on Variable TUNE_FEATURES:tune-cortexa15 was removed Dependency on Variable TUNE_FEATURES:tune-cortexa15-neon was removed Dependency on Variable TUNE_FEATURES:tune-cortexa15t-neon was removed Dependency on Variable TUNE_FEATURES:tune-cortexa15thf-neon was removed Variable DEFAULTTUNE value changed from 'cortexa15thf-neon' to 'core2-64'
Variable OLDEST_KERNEL value changed from '3.3.0' to '5.15'
Variable TUNE_PKGARCH value changed from '${ARMPKGARCH}${ARMPKGSFX_THUMB}${ARMPKGSFX_DSP}${ARMPKGSFX_EABI}${ARMPKGSFX_ENDIAN}${ARMPKGSFX_FPU}' to '${TUNE_PKGARCH:tune-${DEFAULTTUNE}}'
for "bitbake-diffsigs ../build-st-1070764/tmp-sstatesamehash*/stamps/all-poky-linux/wayland-protocols/1.42.do_write_configsigdata.*".
Cheers,
Richard
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [OE-core][PATCH V3 1/5] classes/recipes: remove unnecessary qemu inherit and use qemuwrapper-cross
2025-04-17 2:26 ` Chen, Qi
@ 2025-04-17 10:11 ` Richard Purdie
2025-04-20 4:09 ` Chen, Qi
0 siblings, 1 reply; 10+ messages in thread
From: Richard Purdie @ 2025-04-17 10:11 UTC (permalink / raw)
To: Chen, Qi, openembedded-core@lists.openembedded.org
On Thu, 2025-04-17 at 02:26 +0000, Chen, Qi wrote:
> Got it. I'll look into the problem ASAP.
I did look into it a bit and the issue seems to be that fontcache
recipes are allarch but can call into qemu to run fc-cache. An allarch
recipe can't depend on qemuwrapper-cross since that is target specific.
I guess we may need to exclude the dependency in layer.conf.
Cheers,
Richard
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [OE-core][PATCH V3 2/5] cpio: fix ptest-runner dependency
2025-04-14 5:35 ` [OE-core][PATCH V3 2/5] cpio: fix ptest-runner dependency Qi.Chen
@ 2025-04-17 11:42 ` Ross Burton
0 siblings, 0 replies; 10+ messages in thread
From: Ross Burton @ 2025-04-17 11:42 UTC (permalink / raw)
To: Qi.Chen@windriver.com; +Cc: openembedded-core@lists.openembedded.org
On 14 Apr 2025, at 06:35, Chen Qi via lists.openembedded.org <Qi.Chen=windriver.com@lists.openembedded.org> wrote:
> Also, the above DEPENDS:append:class-targets lacks a leading whitespace,
> add it.
Not strictly true:
> -DEPENDS:append:class-target = "${@bb.utils.contains('PTEST_ENABLED', '1', ' ptest-runner', '', d)}"
> +DEPENDS:append:class-target = " ${@bb.utils.contains('PTEST_ENABLED', '1', ' ptest-runner', '', d)}"
There’s whitespace in the value being added, so if PTEST_ENABLED is false you don’t get whitespace appended for no reason.
Ross
^ permalink raw reply [flat|nested] 10+ messages in thread
* RE: [OE-core][PATCH V3 1/5] classes/recipes: remove unnecessary qemu inherit and use qemuwrapper-cross
2025-04-17 10:11 ` Richard Purdie
@ 2025-04-20 4:09 ` Chen, Qi
0 siblings, 0 replies; 10+ messages in thread
From: Chen, Qi @ 2025-04-20 4:09 UTC (permalink / raw)
To: Richard Purdie, openembedded-core@lists.openembedded.org
Thanks a lot Richard!
I've used your suggestion to fix the qemuwrapper-cross dependency issue (e.g., cantarell-fonts) in Patch 1/5.
I've also fixed the meson + allarch issue (e.g., wayland-protocols) in Patch 5/5.
The V4 patchset has been sent out. It has been tested against world build + 'oe-selftest -r sstatetests'.
Regards,
Qi
-----Original Message-----
From: Richard Purdie <richard.purdie@linuxfoundation.org>
Sent: Thursday, April 17, 2025 6:11 PM
To: Chen, Qi <Qi.Chen@windriver.com>; openembedded-core@lists.openembedded.org
Subject: Re: [OE-core][PATCH V3 1/5] classes/recipes: remove unnecessary qemu inherit and use qemuwrapper-cross
On Thu, 2025-04-17 at 02:26 +0000, Chen, Qi wrote:
> Got it. I'll look into the problem ASAP.
I did look into it a bit and the issue seems to be that fontcache recipes are allarch but can call into qemu to run fc-cache. An allarch recipe can't depend on qemuwrapper-cross since that is target specific.
I guess we may need to exclude the dependency in layer.conf.
Cheers,
Richard
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2025-04-20 4:09 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-14 5:34 [OE-core][PATCH V3 1/5] classes/recipes: remove unnecessary qemu inherit and use qemuwrapper-cross Qi.Chen
2025-04-14 5:35 ` [OE-core][PATCH V3 2/5] cpio: fix ptest-runner dependency Qi.Chen
2025-04-17 11:42 ` Ross Burton
2025-04-14 5:35 ` [OE-core][PATCH V3 3/5] nativesdk.bbclass: handle PACKAGE_WRITE_DEPS Qi.Chen
2025-04-14 5:35 ` [OE-core][PATCH V3 4/5] image/populate_sdk.bbclass: drop qemuwrapper-cross from DEPENDS Qi.Chen
2025-04-14 5:35 ` [OE-core][PATCH V3 5/5] lib/classes/recipes: refactor qemu.bbclass functions into library functions Qi.Chen
2025-04-16 16:55 ` [OE-core][PATCH V3 1/5] classes/recipes: remove unnecessary qemu inherit and use qemuwrapper-cross Richard Purdie
2025-04-17 2:26 ` Chen, Qi
2025-04-17 10:11 ` Richard Purdie
2025-04-20 4:09 ` Chen, Qi
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox