base: Switch virtual/cross-XXX to be under recipe specific providers

Currently, providers are set on a global config basis. This change allows
for a select set of providers to be configured using BB_RECIPE_VIRTUAL_PROVIDERS
on a per recipe basis. This would allow for the selection of virtual/cross-cc
as gcc or clang for example.

The PROVIDERS are removed from the recipes so that if a version of the
dependency accidentally slips through, the build will fail and the user
can correct the issue.

(From OE-Core rev: 6eeab1a5d7f23917b94c130e417d59afb757b546)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Richard Purdie 2025-01-13 17:55:52 +00:00
parent 90e0a0f7f4
commit 6b1e65b7d6
5 changed files with 7 additions and 4 deletions

View File

@ -155,6 +155,12 @@ def preferred_ml_updates(d):
extramp.append(translate_provide(pref, p))
d.setVar("BB_MULTI_PROVIDER_ALLOWED", " ".join(mp + extramp))
virtprovs = d.getVar("BB_RECIPE_VIRTUAL_PROVIDERS").split()
for p in virtprovs.copy():
for pref in prefixes:
virtprovs.append(translate_provide(pref, p))
d.setVar("BB_RECIPE_VIRTUAL_PROVIDERS", " ".join(virtprovs))
abisafe = (d.getVar("SIGGEN_EXCLUDERECIPES_ABISAFE") or "").split()
extras = []
for p in prefixes:

View File

@ -1,6 +1,7 @@
#
# Default virtual providers
#
BB_RECIPE_VIRTUAL_PROVIDERS = "virtual/cross-cc virtual/cross-c++ virtual/cross-binutils virtual/nativesdk-cross-cc virtual/nativesdk-cross-c++ virtual/nativesdk-cross-binutils"
PREFERRED_PROVIDER_virtual/xserver ?= "xserver-xorg"
PREFERRED_PROVIDER_virtual/xserver-xf86 ?= "xserver-xorg"
PREFERRED_PROVIDER_virtual/egl ?= "mesa"

View File

@ -1,5 +1,4 @@
inherit cross
PROVIDES = "virtual/cross-binutils"
PN = "binutils-cross-${TARGET_ARCH}"
BPN = "binutils"

View File

@ -1,7 +1,5 @@
require binutils-cross_${PV}.bb
PROVIDES = "virtual/nativesdk-cross-binutils"
inherit crosssdk
PN = "binutils-crosssdk-${SDK_SYS}"

View File

@ -3,7 +3,6 @@ inherit cross
INHIBIT_DEFAULT_DEPS = "1"
EXTRADEPENDS = ""
DEPENDS = "virtual/cross-binutils ${EXTRADEPENDS} ${NATIVEDEPS}"
PROVIDES = "virtual/cross-cc virtual/c++"
python () {
if d.getVar("TARGET_OS").startswith("linux"):
d.setVar("EXTRADEPENDS", "linux-libc-headers")