summaryrefslogtreecommitdiffstats
path: root/meta/classes/multilib_global.bbclass
diff options
context:
space:
mode:
Diffstat (limited to 'meta/classes/multilib_global.bbclass')
-rw-r--r--meta/classes/multilib_global.bbclass39
1 files changed, 39 insertions, 0 deletions
diff --git a/meta/classes/multilib_global.bbclass b/meta/classes/multilib_global.bbclass
new file mode 100644
index 0000000000..217349b2d4
--- /dev/null
+++ b/meta/classes/multilib_global.bbclass
@@ -0,0 +1,39 @@
1python multilib_virtclass_handler_global () {
2 if not e.data:
3 return
4
5 variant = e.data.getVar("BBEXTENDVARIANT", True)
6
7 if isinstance(e, bb.event.RecipeParsed) and not variant:
8 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):
9 origprovs = provs = e.data.getVar("PROVIDES", True)
10 variants = (e.data.getVar("MULTILIB_VARIANTS", True) or "").split()
11 for variant in variants:
12 provs = provs + " " + multilib_map_variable("PROVIDES", variant, e.data)
13 e.data.setVar("PROVIDES", origprovs)
14 e.data.setVar("PROVIDES", provs)
15}
16
17addhandler multilib_virtclass_handler_global
18
19def multilib_extend_name(variant, name):
20 if name.startswith("virtual/"):
21 subs = name.split("/", 1)[1]
22 if not subs.startswith(variant):
23 return "virtual/" + variant + "-" + subs
24 return name
25 if not name.startswith(variant):
26 return variant + "-" + name
27 return name
28
29def multilib_map_variable(varname, variant, d):
30 var = d.getVar(varname, True)
31 if not var:
32 return
33 var = var.split()
34 newvar = []
35 for v in var:
36 newvar.append(multilib_extend_name(variant, v))
37 newdata = " ".join(newvar)
38 d.setVar(varname, newdata)
39 return newdata