Files
poky/meta/classes/multilib_global.bbclass
Richard Purdie f9c3639238 multilib: Only build one kernel
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>
2011-09-02 18:25:11 +01:00

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