mirror of
https://git.yoctoproject.org/poky
synced 2026-03-02 21:39:40 +01:00
For a given system we only want one kernel to be built. This change makes the main kernel recipe provide all of the provides of the various enabled multilibs hence allowing it to fulfil all the appropriate dependencies. To make this work a global multilib class file needed to be created. This patch also enables this multi provider functionality for "allarch" packages. [YOCTO #1361] (From OE-Core rev: 2fd257f6c610624f05c8dd3fe1486364af04696f) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
40 lines
1.4 KiB
Plaintext
40 lines
1.4 KiB
Plaintext
python multilib_virtclass_handler_global () {
|
|
if not e.data:
|
|
return
|
|
|
|
variant = e.data.getVar("BBEXTENDVARIANT", True)
|
|
|
|
if isinstance(e, bb.event.RecipeParsed) and not variant:
|
|
if bb.data.inherits_class('kernel', e.data) or bb.data.inherits_class('module-base', e.data) or bb.data.inherits_class('allarch', e.data):
|
|
origprovs = provs = e.data.getVar("PROVIDES", True)
|
|
variants = (e.data.getVar("MULTILIB_VARIANTS", True) or "").split()
|
|
for variant in variants:
|
|
provs = provs + " " + multilib_map_variable("PROVIDES", variant, e.data)
|
|
e.data.setVar("PROVIDES", origprovs)
|
|
e.data.setVar("PROVIDES", provs)
|
|
}
|
|
|
|
addhandler multilib_virtclass_handler_global
|
|
|
|
def multilib_extend_name(variant, name):
|
|
if name.startswith("virtual/"):
|
|
subs = name.split("/", 1)[1]
|
|
if not subs.startswith(variant):
|
|
return "virtual/" + variant + "-" + subs
|
|
return name
|
|
if not name.startswith(variant):
|
|
return variant + "-" + name
|
|
return name
|
|
|
|
def multilib_map_variable(varname, variant, d):
|
|
var = d.getVar(varname, True)
|
|
if not var:
|
|
return
|
|
var = var.split()
|
|
newvar = []
|
|
for v in var:
|
|
newvar.append(multilib_extend_name(variant, v))
|
|
newdata = " ".join(newvar)
|
|
d.setVar(varname, newdata)
|
|
return newdata
|