From: Richard Purdie <richard.purdie@linuxfoundation.org>
To: openembedded-core@lists.openembedded.org
Subject: [PATCH 22/25] utils: Move functions from utils.bbclass to utils.py
Date: Sun, 2 Aug 2026 11:28:51 +0100 [thread overview]
Message-ID: <20260802102854.3952760-23-richard.purdie@linuxfoundation.org> (raw)
In-Reply-To: <20260802102854.3952760-1-richard.purdie@linuxfoundation.org>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
---
meta/classes-global/base.bbclass | 2 +-
meta/classes-global/package.bbclass | 2 +-
meta/classes-global/sanity.bbclass | 8 +-
meta/classes-global/utils.bbclass | 90 -------------------
meta/classes-recipe/cross-canadian.bbclass | 2 +-
meta/classes-recipe/image.bbclass | 4 +-
meta/classes-recipe/populate_sdk_base.bbclass | 10 +--
meta/classes-recipe/populate_sdk_ext.bbclass | 2 +-
meta/classes/multilib.bbclass | 2 +-
meta/conf/multilib.conf | 2 +-
meta/lib/oe/utils.py | 85 ++++++++++++++++++
meta/recipes-core/glibc/glibc-ld.inc | 2 +-
meta/recipes-core/meta/dummy-sdk-package.inc | 2 +-
meta/recipes-core/meta/meta-environment.bb | 2 +-
meta/recipes-core/meta/meta-go-toolchain.bb | 2 +-
.../packagegroup-cross-canadian.bb | 6 +-
.../packagegroup-go-cross-canadian.bb | 2 +-
.../packagegroup-rust-cross-canadian.bb | 2 +-
18 files changed, 111 insertions(+), 116 deletions(-)
diff --git a/meta/classes-global/base.bbclass b/meta/classes-global/base.bbclass
index 4684dbd60c8..8b4abe8f1e2 100644
--- a/meta/classes-global/base.bbclass
+++ b/meta/classes-global/base.bbclass
@@ -72,7 +72,7 @@ BASEDEPENDS:class-nativesdk = "${@get_base_dep(d)}"
DEPENDS:prepend = "${BASEDEPENDS} "
-FILESPATH = "${@base_set_filespath(["${FILE_DIRNAME}/${BP}", "${FILE_DIRNAME}/${BPN}", "${FILE_DIRNAME}/files"], d)}"
+FILESPATH = "${@oe.utils.base_set_filespath(["${FILE_DIRNAME}/${BP}", "${FILE_DIRNAME}/${BPN}", "${FILE_DIRNAME}/files"], d)}"
# THISDIR only works properly with imediate expansion as it has to run
# in the context of the location its used (:=)
THISDIR = "${@os.path.dirname(d.getVar('FILE'))}"
diff --git a/meta/classes-global/package.bbclass b/meta/classes-global/package.bbclass
index cb92b495714..3d293dead77 100644
--- a/meta/classes-global/package.bbclass
+++ b/meta/classes-global/package.bbclass
@@ -54,7 +54,7 @@ PKGDEST = "${WORKDIR}/packages-split"
LOCALE_SECTION ?= ''
-ALL_MULTILIB_PACKAGE_ARCHS = "${@all_multilib_tune_values(d, 'PACKAGE_ARCHS')}"
+ALL_MULTILIB_PACKAGE_ARCHS = "${@oe.utils.all_multilib_tune_values(d, 'PACKAGE_ARCHS')}"
# rpm is used for the per-file dependency identification
# dwarfsrcfiles is used to determine the list of debug source files
diff --git a/meta/classes-global/sanity.bbclass b/meta/classes-global/sanity.bbclass
index 5c5cf311da1..91c22599bfe 100644
--- a/meta/classes-global/sanity.bbclass
+++ b/meta/classes-global/sanity.bbclass
@@ -720,13 +720,13 @@ def check_sanity_version_change(status, d):
missing = ""
- if not check_app_exists("${MAKE}", d):
+ if not oe.utils.check_app_exists("${MAKE}", d):
missing = missing + "GNU make,"
- if not check_app_exists('gcc', d):
+ if not oe.utils.check_app_exists('gcc', d):
missing = missing + "C Compiler (gcc),"
- if not check_app_exists('g++', d):
+ if not oe.utils.check_app_exists('g++', d):
missing = missing + "C++ Compiler (g++),"
# installing emacs on Ubuntu 24.04 pulls in emacs-gtk -> libgcc-14-dev despite gcc being 13
@@ -737,7 +737,7 @@ def check_sanity_version_change(status, d):
required_utilities = d.getVar('SANITY_REQUIRED_UTILITIES')
for util in required_utilities.split():
- if not check_app_exists(util, d):
+ if not oe.utils.check_app_exists(util, d):
missing = missing + "%s," % util
if missing:
diff --git a/meta/classes-global/utils.bbclass b/meta/classes-global/utils.bbclass
index 443f0c65560..cee847594ee 100644
--- a/meta/classes-global/utils.bbclass
+++ b/meta/classes-global/utils.bbclass
@@ -265,96 +265,6 @@ hardlinkdir () {
(cd $from; find . -print0 | cpio --null -pdlu $to)
}
-
-def check_app_exists(app, d):
- app = d.expand(app).split()[0].strip()
- path = d.getVar('PATH')
- return bool(bb.utils.which(path, app))
-
-def base_set_filespath(path, d):
- filespath = []
- extrapaths = (d.getVar("FILESEXTRAPATHS") or "")
- # Remove default flag which was used for checking
- extrapaths = extrapaths.replace("__default:", "")
- # Don't prepend empty strings to the path list
- if extrapaths != "":
- path = extrapaths.split(":") + path
- # The ":" ensures we have an 'empty' override
- overrides = (":" + (d.getVar("FILESOVERRIDES") or "")).split(":")
- overrides.reverse()
- for o in overrides:
- for p in path:
- if p != "":
- filespath.append(os.path.join(p, o))
- return ":".join(filespath)
-
-def extend_variants(d, var, extend, delim=':'):
- """Return a string of all bb class extend variants for the given extend"""
- variants = []
- whole = d.getVar(var) or ""
- for ext in whole.split():
- eext = ext.split(delim)
- if len(eext) > 1 and eext[0] == extend:
- variants.append(eext[1])
- return " ".join(variants)
-
-def multilib_pkg_extend(d, pkg):
- variants = (d.getVar("MULTILIB_VARIANTS") or "").split()
- if not variants:
- return pkg
- pkgs = pkg
- for v in variants:
- pkgs = pkgs + " " + v + "-" + pkg
- return pkgs
-
-def get_multilib_datastore(variant, d):
- return oe.utils.get_multilib_datastore(variant, d)
-
-def all_multilib_tune_values(d, var, unique = True, need_split = True, delim = ' '):
- """Return a string of all ${var} in all multilib tune configuration"""
- values = []
- variants = (d.getVar("MULTILIB_VARIANTS") or "").split() + ['']
- for item in variants:
- localdata = get_multilib_datastore(item, d)
- # We need WORKDIR to be consistent with the original datastore
- localdata.setVar("WORKDIR", d.getVar("WORKDIR"))
- value = localdata.getVar(var) or ""
- if value != "":
- if need_split:
- for item in value.split(delim):
- values.append(item)
- else:
- values.append(value)
- if unique:
- #we do this to keep order as much as possible
- ret = []
- for value in values:
- if not value in ret:
- ret.append(value)
- else:
- ret = values
- return " ".join(ret)
-
-def all_multilib_tune_list(vars, d):
- """
- Return a list of ${VAR} for each variable VAR in vars from each
- multilib tune configuration.
- Is safe to be called from a multilib recipe/context as it can
- figure out the original tune and remove the multilib overrides.
- """
- values = {}
- for v in vars:
- values[v] = []
- values['ml'] = ['']
-
- variants = (d.getVar("MULTILIB_VARIANTS") or "").split() + ['']
- for item in variants:
- localdata = get_multilib_datastore(item, d)
- values[v].append(localdata.getVar(v))
- values['ml'].append(item)
- return values
-all_multilib_tune_list[vardepsexclude] = "OVERRIDES"
-
# If the user hasn't set up their name/email, set some defaults
check_git_config() {
if ! git config user.email > /dev/null ; then
diff --git a/meta/classes-recipe/cross-canadian.bbclass b/meta/classes-recipe/cross-canadian.bbclass
index fe991f44bb5..25e67d9e079 100644
--- a/meta/classes-recipe/cross-canadian.bbclass
+++ b/meta/classes-recipe/cross-canadian.bbclass
@@ -94,7 +94,7 @@ python () {
# Also need to handle multilib target vendors
vendors = d.getVar("CANADIANEXTRAVENDOR")
if not vendors:
- vendors = all_multilib_tune_values(d, 'TARGET_VENDOR')
+ vendors = oe.utils.all_multilib_tune_values(d, 'TARGET_VENDOR')
origvendor = d.getVar("TARGET_VENDOR_MULTILIB_ORIGINAL")
if origvendor:
d.setVar("TARGET_VENDOR", origvendor)
diff --git a/meta/classes-recipe/image.bbclass b/meta/classes-recipe/image.bbclass
index 53f1a9dc45b..460e5ab39fa 100644
--- a/meta/classes-recipe/image.bbclass
+++ b/meta/classes-recipe/image.bbclass
@@ -33,7 +33,7 @@ PACKAGES = ""
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())}:"
+PATH:prepend = "${@":".join(oe.utils.all_multilib_tune_values(d, 'STAGING_BINDIR_CROSS').split())}:"
INHIBIT_DEFAULT_DEPS = "1"
@@ -102,7 +102,7 @@ USE_DEPMOD ?= "1"
PID = "${@os.getpid()}"
PACKAGE_ARCH = "${MACHINE_ARCH}"
-SSTATE_ARCHS_TUNEPKG = "${@all_multilib_tune_values(d, 'TUNE_PKGARCH')}"
+SSTATE_ARCHS_TUNEPKG = "${@oe.utils.all_multilib_tune_values(d, 'TUNE_PKGARCH')}"
LDCONFIGDEPEND ?= "ldconfig-native:do_populate_sysroot"
LDCONFIGDEPEND:libc-musl = ""
diff --git a/meta/classes-recipe/populate_sdk_base.bbclass b/meta/classes-recipe/populate_sdk_base.bbclass
index 1d9faecc16b..a321e7ef445 100644
--- a/meta/classes-recipe/populate_sdk_base.bbclass
+++ b/meta/classes-recipe/populate_sdk_base.bbclass
@@ -11,7 +11,7 @@ PACKAGES = ""
# This exists as an optimization for SPDX processing to only run in image and
# SDK processing context. This class happens to be common to these usages.
-SPDX_MULTILIB_SSTATE_ARCHS = "${@all_multilib_tune_values(d, 'SSTATE_ARCHS')}"
+SPDX_MULTILIB_SSTATE_ARCHS = "${@oe.utils.all_multilib_tune_values(d, 'SSTATE_ARCHS')}"
inherit image-postinst-intercepts image-artifact-names nopackages
@@ -77,9 +77,9 @@ TOOLCHAIN_HOST_TASK ?= " \
"
TOOLCHAIN_HOST_TASK_ATTEMPTONLY ?= ""
TOOLCHAIN_TARGET_TASK ?= " \
- ${@multilib_pkg_extend(d, 'packagegroup-core-standalone-sdk-target')} \
- ${@bb.utils.contains('SDK_TOOLCHAIN_LANGS', 'go', multilib_pkg_extend(d, 'packagegroup-go-sdk-target'), '', d)} \
- ${@bb.utils.contains('SDK_TOOLCHAIN_LANGS', 'rust', multilib_pkg_extend(d, 'libstd-rs'), '', d)} \
+ ${@oe.utils.multilib_pkg_extend(d, 'packagegroup-core-standalone-sdk-target')} \
+ ${@bb.utils.contains('SDK_TOOLCHAIN_LANGS', 'go', oe.utils.multilib_pkg_extend(d, 'packagegroup-go-sdk-target'), '', d)} \
+ ${@bb.utils.contains('SDK_TOOLCHAIN_LANGS', 'rust', oe.utils.multilib_pkg_extend(d, 'libstd-rs'), '', d)} \
${@bb.utils.contains('SDK_TOOLCHAIN_LANGS', 'kernel', 'kernel-devsrc', '', d)} \
target-sdk-provides-dummy \
"
@@ -119,7 +119,7 @@ python () {
SDK_RDEPENDS = "${TOOLCHAIN_TARGET_TASK} ${TOOLCHAIN_HOST_TASK}"
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())}:"
+PATH:prepend = "${WORKDIR}/recipe-sysroot/${SDKPATHNATIVE}${bindir}/crossscripts:${@":".join(oe.utils.all_multilib_tune_values(d, 'STAGING_BINDIR_CROSS').split())}:"
SDK_DEPENDS += "nativesdk-glibc-locale"
# We want the MULTIARCH_TARGET_SYS to point to the TUNE_PKGARCH, not PACKAGE_ARCH as it
diff --git a/meta/classes-recipe/populate_sdk_ext.bbclass b/meta/classes-recipe/populate_sdk_ext.bbclass
index 7d28415ab37..8349e03db58 100644
--- a/meta/classes-recipe/populate_sdk_ext.bbclass
+++ b/meta/classes-recipe/populate_sdk_ext.bbclass
@@ -462,7 +462,7 @@ def prepare_locked_cache(d, baseoutpath, derivative, conf_initpath):
# Filter the locked signatures file to just the sstate tasks we are interested in
excluded_targets = get_sdk_install_targets(d, images_only=True)
sdk_targets = d.getVar('SDK_TARGETS')
- ext_sdk_target_set = set(multilib_pkg_extend(d, sdk_targets).split())
+ ext_sdk_target_set = set(oe.utils.multilib_pkg_extend(d, sdk_targets).split())
excluded_set = set(excluded_targets.split())
# Ensure SDK_TARGETS and their image SPDX/SBOM tasks are included in the locked signatures,
diff --git a/meta/classes/multilib.bbclass b/meta/classes/multilib.bbclass
index 6e90af261dc..7266f6661d9 100644
--- a/meta/classes/multilib.bbclass
+++ b/meta/classes/multilib.bbclass
@@ -32,7 +32,7 @@ python multilib_virtclass_handler () {
d.setVar(name + "_MULTILIB_ORIGINAL", val)
# We nearly don't need this but dependencies on NON_MULTILIB_RECIPES don't work without it
- d.setVar("SSTATE_ARCHS_TUNEPKG", "${@all_multilib_tune_values(d, 'TUNE_PKGARCH')}")
+ d.setVar("SSTATE_ARCHS_TUNEPKG", "${@oe.utils.all_multilib_tune_values(d, 'TUNE_PKGARCH')}")
overrides = e.data.getVar("OVERRIDES", False)
pn = e.data.getVar("PN", False)
diff --git a/meta/conf/multilib.conf b/meta/conf/multilib.conf
index aff55c1e9da..d692723da3b 100644
--- a/meta/conf/multilib.conf
+++ b/meta/conf/multilib.conf
@@ -1,7 +1,7 @@
baselib = "${@d.getVar('BASE_LIB:tune-' + (d.getVar('DEFAULTTUNE') or 'INVALID')) or d.getVar('BASELIB')}"
-MULTILIB_VARIANTS = "${@extend_variants(d,'MULTILIBS','multilib')}"
+MULTILIB_VARIANTS = "${@oe.utils.extend_variants(d,'MULTILIBS','multilib')}"
MULTILIB_VARIANTS[vardeps] += "MULTILIBS"
MULTILIB_SAVE_VARNAME = "DEFAULTTUNE TARGET_ARCH TARGET_SYS TARGET_VENDOR"
diff --git a/meta/lib/oe/utils.py b/meta/lib/oe/utils.py
index 082f6cef74f..d24f49b875a 100644
--- a/meta/lib/oe/utils.py
+++ b/meta/lib/oe/utils.py
@@ -553,3 +553,88 @@ def make_arch_independent(d):
d.setVar("qemu_wrapper_cmdline", "def qemu_wrapper_cmdline(data, rootfs_path, library_paths):\n return 'false'")
+def base_set_filespath(path, d):
+ filespath = []
+ extrapaths = (d.getVar("FILESEXTRAPATHS") or "")
+ # Remove default flag which was used for checking
+ extrapaths = extrapaths.replace("__default:", "")
+ # Don't prepend empty strings to the path list
+ if extrapaths != "":
+ path = extrapaths.split(":") + path
+ # The ":" ensures we have an 'empty' override
+ overrides = (":" + (d.getVar("FILESOVERRIDES") or "")).split(":")
+ overrides.reverse()
+ for o in overrides:
+ for p in path:
+ if p != "":
+ filespath.append(os.path.join(p, o))
+ return ":".join(filespath)
+
+def check_app_exists(app, d):
+ app = d.expand(app).split()[0].strip()
+ path = d.getVar('PATH')
+ return bool(bb.utils.which(path, app))
+
+def all_multilib_tune_values(d, var, unique = True, need_split = True, delim = ' '):
+ """Return a string of all ${var} in all multilib tune configuration"""
+ values = []
+ variants = (d.getVar("MULTILIB_VARIANTS") or "").split() + ['']
+ for item in variants:
+ localdata = get_multilib_datastore(item, d)
+ # We need WORKDIR to be consistent with the original datastore
+ localdata.setVar("WORKDIR", d.getVar("WORKDIR"))
+ value = localdata.getVar(var) or ""
+ if value != "":
+ if need_split:
+ for item in value.split(delim):
+ values.append(item)
+ else:
+ values.append(value)
+ if unique:
+ #we do this to keep order as much as possible
+ ret = []
+ for value in values:
+ if not value in ret:
+ ret.append(value)
+ else:
+ ret = values
+ return " ".join(ret)
+
+def all_multilib_tune_list(vars, d):
+ """
+ Return a list of ${VAR} for each variable VAR in vars from each
+ multilib tune configuration.
+ Is safe to be called from a multilib recipe/context as it can
+ figure out the original tune and remove the multilib overrides.
+ """
+ values = {}
+ for v in vars:
+ values[v] = []
+ values['ml'] = ['']
+
+ variants = (d.getVar("MULTILIB_VARIANTS") or "").split() + ['']
+ for item in variants:
+ localdata = oe.utils.get_multilib_datastore(item, d)
+ values[v].append(localdata.getVar(v))
+ values['ml'].append(item)
+ return values
+
+def extend_variants(d, var, extend, delim=':'):
+ """Return a string of all bb class extend variants for the given extend"""
+ variants = []
+ whole = d.getVar(var) or ""
+ for ext in whole.split():
+ eext = ext.split(delim)
+ if len(eext) > 1 and eext[0] == extend:
+ variants.append(eext[1])
+ return " ".join(variants)
+
+def multilib_pkg_extend(d, pkg):
+ variants = (d.getVar("MULTILIB_VARIANTS") or "").split()
+ if not variants:
+ return pkg
+ pkgs = pkg
+ for v in variants:
+ pkgs = pkgs + " " + v + "-" + pkg
+ return pkgs
+
diff --git a/meta/recipes-core/glibc/glibc-ld.inc b/meta/recipes-core/glibc/glibc-ld.inc
index da8fcc430b1..0fb8d090bc2 100644
--- a/meta/recipes-core/glibc/glibc-ld.inc
+++ b/meta/recipes-core/glibc/glibc-ld.inc
@@ -5,7 +5,7 @@ GLIBC_GETLOADER = "${@get_linuxloader(d)}"
def glibc_dl_info(d):
infos = {'ldconfig':set(), 'lddrewrite':set()}
- loaders = all_multilib_tune_values(d, "GLIBC_GETLOADER").split()
+ loaders = oe.utils.all_multilib_tune_values(d, "GLIBC_GETLOADER").split()
for loader in loaders:
infos['ldconfig'].add('{"' + loader + '",' + "FLAG_ELF_LIBC6" + ' }')
infos['lddrewrite'].add(loader)
diff --git a/meta/recipes-core/meta/dummy-sdk-package.inc b/meta/recipes-core/meta/dummy-sdk-package.inc
index 60dfe9f73bb..d2781a64643 100644
--- a/meta/recipes-core/meta/dummy-sdk-package.inc
+++ b/meta/recipes-core/meta/dummy-sdk-package.inc
@@ -24,7 +24,7 @@ PR[vardeps] += "DUMMYPROVIDES"
PR[vardeps] += "DUMMYPROVIDES_PACKAGES"
DUMMYPROVIDES_PACKAGES ??= ""
-DUMMYPROVIDES_PACKAGES_MULTILIB = "${@' '.join([multilib_pkg_extend(d, pkg) for pkg in d.getVar('DUMMYPROVIDES_PACKAGES').split()])}"
+DUMMYPROVIDES_PACKAGES_MULTILIB = "${@' '.join([oe.utils.multilib_pkg_extend(d, pkg) for pkg in d.getVar('DUMMYPROVIDES_PACKAGES').split()])}"
DUMMYPROVIDES += "${DUMMYPROVIDES_PACKAGES_MULTILIB}"
python populate_packages:prepend() {
diff --git a/meta/recipes-core/meta/meta-environment.bb b/meta/recipes-core/meta/meta-environment.bb
index e2590993130..f8140612817 100644
--- a/meta/recipes-core/meta/meta-environment.bb
+++ b/meta/recipes-core/meta/meta-environment.bb
@@ -21,7 +21,7 @@ inherit cross-canadian
do_generate_content[cleandirs] = "${SDK_OUTPUT}"
do_generate_content[dirs] = "${SDK_OUTPUT}/${SDKPATH}"
# Need to ensure we have the virtual mappings and site files for all multtilib variants
-do_generate_content[depends] = "${@oe.utils.build_depends_string(all_multilib_tune_values(d, 'TOOLCHAIN_NEED_CONFIGSITE_CACHE'), 'do_populate_sysroot')}"
+do_generate_content[depends] = "${@oe.utils.build_depends_string(oe.utils.all_multilib_tune_values(d, 'TOOLCHAIN_NEED_CONFIGSITE_CACHE'), 'do_populate_sysroot')}"
python do_generate_content() {
# Handle multilibs in the SDK environment, siteconfig, etc files...
localdata = bb.data.createCopy(d)
diff --git a/meta/recipes-core/meta/meta-go-toolchain.bb b/meta/recipes-core/meta/meta-go-toolchain.bb
index 758963d1e58..cb2b11bb1eb 100644
--- a/meta/recipes-core/meta/meta-go-toolchain.bb
+++ b/meta/recipes-core/meta/meta-go-toolchain.bb
@@ -8,7 +8,7 @@ TOOLCHAIN_HOST_TASK:append = " \
"
TOOLCHAIN_TARGET_TASK:append = " \
- ${@multilib_pkg_extend(d, 'packagegroup-go-sdk-target')} \
+ ${@oe.utils.multilib_pkg_extend(d, 'packagegroup-go-sdk-target')} \
"
# rv32/ppc32 do not support go
COMPATIBLE_HOST:riscv32 = "null"
diff --git a/meta/recipes-core/packagegroups/packagegroup-cross-canadian.bb b/meta/recipes-core/packagegroups/packagegroup-cross-canadian.bb
index 49c075eb116..4b0499b1b97 100644
--- a/meta/recipes-core/packagegroups/packagegroup-cross-canadian.bb
+++ b/meta/recipes-core/packagegroups/packagegroup-cross-canadian.bb
@@ -11,9 +11,9 @@ GCC = "gcc-cross-canadian-${TRANSLATED_TARGET_ARCH}"
GDB = "gdb-cross-canadian-${TRANSLATED_TARGET_ARCH}"
RDEPENDS:${PN} = "\
- ${@all_multilib_tune_values(d, 'BINUTILS')} \
- ${@all_multilib_tune_values(d, 'GCC')} \
- ${@all_multilib_tune_values(d, 'GDB')} \
+ ${@oe.utils.all_multilib_tune_values(d, 'BINUTILS')} \
+ ${@oe.utils.all_multilib_tune_values(d, 'GCC')} \
+ ${@oe.utils.all_multilib_tune_values(d, 'GDB')} \
meta-environment-${MACHINE} \
"
diff --git a/meta/recipes-core/packagegroups/packagegroup-go-cross-canadian.bb b/meta/recipes-core/packagegroups/packagegroup-go-cross-canadian.bb
index d0596efe7a7..56c2a73f467 100644
--- a/meta/recipes-core/packagegroups/packagegroup-go-cross-canadian.bb
+++ b/meta/recipes-core/packagegroups/packagegroup-go-cross-canadian.bb
@@ -8,5 +8,5 @@ PACKAGEGROUP_DISABLE_COMPLEMENTARY = "1"
GO = "go-cross-canadian-${TRANSLATED_TARGET_ARCH}"
RDEPENDS:${PN} = " \
- ${@all_multilib_tune_values(d, 'GO')} \
+ ${@oe.utils.all_multilib_tune_values(d, 'GO')} \
"
diff --git a/meta/recipes-core/packagegroups/packagegroup-rust-cross-canadian.bb b/meta/recipes-core/packagegroups/packagegroup-rust-cross-canadian.bb
index 7e220d2cce6..c73c8d33335 100644
--- a/meta/recipes-core/packagegroups/packagegroup-rust-cross-canadian.bb
+++ b/meta/recipes-core/packagegroups/packagegroup-rust-cross-canadian.bb
@@ -8,7 +8,7 @@ PACKAGEGROUP_DISABLE_COMPLEMENTARY = "1"
RUST = "rust-cross-canadian-${TRANSLATED_TARGET_ARCH}"
RDEPENDS:${PN} = " \
- ${@all_multilib_tune_values(d, 'RUST')} \
+ ${@oe.utils.all_multilib_tune_values(d, 'RUST')} \
nativesdk-binutils \
nativesdk-gcc \
nativesdk-glibc-dev \
next prev parent reply other threads:[~2026-08-02 10:29 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-02 10:28 [PATCH 00/25] Class file improvements Richard Purdie
2026-08-02 10:28 ` [PATCH 01/25] sstatesig: Use kernel.bbclass instead of linux-kernel-base.bbclass Richard Purdie
2026-08-02 10:28 ` [PATCH 02/25] linux-kernel-base: Delete unused function Richard Purdie
2026-08-02 10:28 ` [PATCH 03/25] lib/oe/kernel: Move python functions from linux-kernel-base to library code Richard Purdie
2026-08-02 10:28 ` [PATCH 04/25] kernel-yocto: Simplify code for cleanliness and slight performance Richard Purdie
2026-08-02 10:28 ` [PATCH 05/25] kernel-arch: Move kernel and uboot arch functions to lib/oe/kernel.py Richard Purdie
2026-08-02 10:28 ` [PATCH 06/25] kernel-arch: Simplify KERNEL_ARCH variable usage Richard Purdie
2026-08-02 10:28 ` [PATCH 07/25] kernel-arch: Don't export UBOOT_ARCH Richard Purdie
2026-08-02 10:28 ` [PATCH 08/25] u-boot: Separate out from kernel-arch.bbclass Richard Purdie
2026-08-02 10:28 ` [PATCH 09/25] barebox: " Richard Purdie
2026-08-02 10:28 ` [PATCH 10/25] lib/oe/kernel: Simplify map_uboot_arch Richard Purdie
2026-08-02 10:28 ` [PATCH 11/25] image_types/kernel-uimage: Swap UBOOT_ARCH for oe.kernel.map_uboot_arch call Richard Purdie
2026-08-02 10:58 ` Patchtest results for " patchtest
2026-08-02 10:28 ` [PATCH 12/25] kernel-fit-image: " Richard Purdie
2026-08-02 10:28 ` [PATCH 13/25] linux-yocto-fitimage: Set UBOOT_ARCH Richard Purdie
2026-08-02 10:28 ` [PATCH 14/25] kernel-arch: Drop UBOOT_ARCH Richard Purdie
2026-08-02 10:28 ` [PATCH 15/25] linux-libc-headers: Drop kernel-arch and set ARCH directly Richard Purdie
2026-08-02 10:28 ` [PATCH 16/25] toolchain-scripts: Drop usage of kernel-arch Richard Purdie
2026-08-02 10:28 ` [PATCH 17/25] kernel-arch: Move ARCH usage into target classes Richard Purdie
2026-08-02 10:28 ` [PATCH 18/25] linux-yocto-fitimage: Drop obsolete dependency on linux-kernel-base Richard Purdie
2026-08-02 10:58 ` Patchtest results for " patchtest
2026-08-02 10:28 ` [PATCH 19/25] linux-kernel-base: Fold remainder into kernel-arch and drop Richard Purdie
2026-08-02 10:28 ` [PATCH 20/25] kernel-devicetree: Add missing function prefixes Richard Purdie
2026-08-02 10:28 ` [PATCH 21/25] utils: Drop explode_deps function Richard Purdie
2026-08-02 10:28 ` Richard Purdie [this message]
2026-08-02 10:58 ` Patchtest results for [PATCH 22/25] utils: Move functions from utils.bbclass to utils.py patchtest
2026-08-02 10:28 ` [PATCH 23/25] lib/oe/lsb: Merge distro_identifier functions Richard Purdie
2026-08-02 10:28 ` [PATCH 24/25] sanity: Move code to lib/oe Richard Purdie
2026-08-02 10:58 ` Patchtest results for " patchtest
2026-08-02 10:28 ` [PATCH 25/25] sanity: Drop unreachable code Richard Purdie
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260802102854.3952760-23-richard.purdie@linuxfoundation.org \
--to=richard.purdie@linuxfoundation.org \
--cc=openembedded-core@lists.openembedded.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox