summaryrefslogtreecommitdiffstats
path: root/meta/classes/multilib.bbclass
diff options
context:
space:
mode:
Diffstat (limited to 'meta/classes/multilib.bbclass')
-rw-r--r--meta/classes/multilib.bbclass48
1 files changed, 32 insertions, 16 deletions
diff --git a/meta/classes/multilib.bbclass b/meta/classes/multilib.bbclass
index 9f726e4537..b6c09969b1 100644
--- a/meta/classes/multilib.bbclass
+++ b/meta/classes/multilib.bbclass
@@ -1,3 +1,9 @@
1#
2# Copyright OpenEmbedded Contributors
3#
4# SPDX-License-Identifier: MIT
5#
6
1python multilib_virtclass_handler () { 7python multilib_virtclass_handler () {
2 cls = e.data.getVar("BBEXTENDCURR") 8 cls = e.data.getVar("BBEXTENDCURR")
3 variant = e.data.getVar("BBEXTENDVARIANT") 9 variant = e.data.getVar("BBEXTENDVARIANT")
@@ -24,6 +30,9 @@ python multilib_virtclass_handler () {
24 if val: 30 if val:
25 e.data.setVar(name + "_MULTILIB_ORIGINAL", val) 31 e.data.setVar(name + "_MULTILIB_ORIGINAL", val)
26 32
33 # We nearly don't need this but dependencies on NON_MULTILIB_RECIPES don't work without it
34 d.setVar("SSTATE_ARCHS_TUNEPKG", "${@all_multilib_tune_values(d, 'TUNE_PKGARCH')}")
35
27 overrides = e.data.getVar("OVERRIDES", False) 36 overrides = e.data.getVar("OVERRIDES", False)
28 pn = e.data.getVar("PN", False) 37 pn = e.data.getVar("PN", False)
29 overrides = overrides.replace("pn-${PN}", "pn-${PN}:pn-" + pn) 38 overrides = overrides.replace("pn-${PN}", "pn-${PN}:pn-" + pn)
@@ -35,7 +44,7 @@ python multilib_virtclass_handler () {
35 e.data.setVar('SDKTARGETSYSROOT', e.data.getVar('SDKTARGETSYSROOT')) 44 e.data.setVar('SDKTARGETSYSROOT', e.data.getVar('SDKTARGETSYSROOT'))
36 override = ":virtclass-multilib-" + variant 45 override = ":virtclass-multilib-" + variant
37 e.data.setVar("OVERRIDES", e.data.getVar("OVERRIDES", False) + override) 46 e.data.setVar("OVERRIDES", e.data.getVar("OVERRIDES", False) + override)
38 target_vendor = e.data.getVar("TARGET_VENDOR_" + "virtclass-multilib-" + variant, False) 47 target_vendor = e.data.getVar("TARGET_VENDOR:" + "virtclass-multilib-" + variant, False)
39 if target_vendor: 48 if target_vendor:
40 e.data.setVar("TARGET_VENDOR", target_vendor) 49 e.data.setVar("TARGET_VENDOR", target_vendor)
41 return 50 return
@@ -45,6 +54,7 @@ python multilib_virtclass_handler () {
45 e.data.setVar("RECIPE_SYSROOT", "${WORKDIR}/recipe-sysroot") 54 e.data.setVar("RECIPE_SYSROOT", "${WORKDIR}/recipe-sysroot")
46 e.data.setVar("STAGING_DIR_TARGET", "${WORKDIR}/recipe-sysroot") 55 e.data.setVar("STAGING_DIR_TARGET", "${WORKDIR}/recipe-sysroot")
47 e.data.setVar("STAGING_DIR_HOST", "${WORKDIR}/recipe-sysroot") 56 e.data.setVar("STAGING_DIR_HOST", "${WORKDIR}/recipe-sysroot")
57 e.data.setVar("RECIPE_SYSROOT_MANIFEST_SUBDIR", "nativesdk-" + variant)
48 e.data.setVar("MLPREFIX", variant + "-") 58 e.data.setVar("MLPREFIX", variant + "-")
49 override = ":virtclass-multilib-" + variant 59 override = ":virtclass-multilib-" + variant
50 e.data.setVar("OVERRIDES", e.data.getVar("OVERRIDES", False) + override) 60 e.data.setVar("OVERRIDES", e.data.getVar("OVERRIDES", False) + override)
@@ -65,24 +75,25 @@ python multilib_virtclass_handler () {
65 75
66 override = ":virtclass-multilib-" + variant 76 override = ":virtclass-multilib-" + variant
67 77
68 blacklist = e.data.getVarFlag('PNBLACKLIST', e.data.getVar('PN')) 78 skip_msg = e.data.getVarFlag('SKIP_RECIPE', e.data.getVar('PN'))
69 if blacklist: 79 if skip_msg:
70 pn_new = variant + "-" + e.data.getVar('PN') 80 pn_new = variant + "-" + e.data.getVar('PN')
71 if not e.data.getVarFlag('PNBLACKLIST', pn_new): 81 if not e.data.getVarFlag('SKIP_RECIPE', pn_new):
72 e.data.setVarFlag('PNBLACKLIST', pn_new, blacklist) 82 e.data.setVarFlag('SKIP_RECIPE', pn_new, skip_msg)
73 83
74 e.data.setVar("MLPREFIX", variant + "-") 84 e.data.setVar("MLPREFIX", variant + "-")
75 e.data.setVar("PN", variant + "-" + e.data.getVar("PN", False)) 85 e.data.setVar("PN", variant + "-" + e.data.getVar("PN", False))
76 e.data.setVar("OVERRIDES", e.data.getVar("OVERRIDES", False) + override) 86 e.data.setVar("OVERRIDES", e.data.getVar("OVERRIDES", False) + override)
77 87
78 # Expand WHITELIST_GPL-3.0 with multilib prefix 88 # Expand INCOMPATIBLE_LICENSE_EXCEPTIONS with multilib prefix
79 pkgs = e.data.getVar("WHITELIST_GPL-3.0") 89 pkgs = e.data.getVar("INCOMPATIBLE_LICENSE_EXCEPTIONS")
80 for pkg in pkgs.split(): 90 if pkgs:
81 pkgs += " " + variant + "-" + pkg 91 for pkg in pkgs.split():
82 e.data.setVar("WHITELIST_GPL-3.0", pkgs) 92 pkgs += " " + variant + "-" + pkg
93 e.data.setVar("INCOMPATIBLE_LICENSE_EXCEPTIONS", pkgs)
83 94
84 # DEFAULTTUNE can change TARGET_ARCH override so expand this now before update_data 95 # DEFAULTTUNE can change TARGET_ARCH override so expand this now before update_data
85 newtune = e.data.getVar("DEFAULTTUNE_" + "virtclass-multilib-" + variant, False) 96 newtune = e.data.getVar("DEFAULTTUNE:" + "virtclass-multilib-" + variant, False)
86 if newtune: 97 if newtune:
87 e.data.setVar("DEFAULTTUNE", newtune) 98 e.data.setVar("DEFAULTTUNE", newtune)
88} 99}
@@ -92,6 +103,10 @@ multilib_virtclass_handler[eventmask] = "bb.event.RecipePreFinalise"
92 103
93python __anonymous () { 104python __anonymous () {
94 if bb.data.inherits_class('image', d): 105 if bb.data.inherits_class('image', d):
106 # set rpm preferred file color for 32-bit multilib image
107 if d.getVar("SITEINFO_BITS") == "32":
108 d.setVar("RPM_PREFER_ELF_ARCH", "1")
109
95 variant = d.getVar("BBEXTENDVARIANT") 110 variant = d.getVar("BBEXTENDVARIANT")
96 import oe.classextend 111 import oe.classextend
97 112
@@ -105,7 +120,6 @@ python __anonymous () {
105 d.setVar("LINGUAS_INSTALL", "") 120 d.setVar("LINGUAS_INSTALL", "")
106 # FIXME, we need to map this to something, not delete it! 121 # FIXME, we need to map this to something, not delete it!
107 d.setVar("PACKAGE_INSTALL_ATTEMPTONLY", "") 122 d.setVar("PACKAGE_INSTALL_ATTEMPTONLY", "")
108 bb.build.deltask('do_populate_sdk', d)
109 bb.build.deltask('do_populate_sdk_ext', d) 123 bb.build.deltask('do_populate_sdk_ext', d)
110 return 124 return
111} 125}
@@ -126,6 +140,7 @@ python multilib_virtclass_handler_postkeyexp () {
126 return 140 return
127 141
128 clsextend.map_depends_variable("DEPENDS") 142 clsextend.map_depends_variable("DEPENDS")
143 clsextend.map_depends_variable("PACKAGE_WRITE_DEPS")
129 clsextend.map_variable("PROVIDES") 144 clsextend.map_variable("PROVIDES")
130 145
131 if bb.data.inherits_class('cross-canadian', d): 146 if bb.data.inherits_class('cross-canadian', d):
@@ -177,7 +192,7 @@ def reset_alternative_priority(d):
177 bb.debug(1, '%s: Setting ALTERNATIVE_PRIORITY_%s to %s' % (pkg, pkg, reset_priority)) 192 bb.debug(1, '%s: Setting ALTERNATIVE_PRIORITY_%s to %s' % (pkg, pkg, reset_priority))
178 d.setVar('ALTERNATIVE_PRIORITY_%s' % pkg, reset_priority) 193 d.setVar('ALTERNATIVE_PRIORITY_%s' % pkg, reset_priority)
179 194
180 for alt_name in (d.getVar('ALTERNATIVE_%s' % pkg) or "").split(): 195 for alt_name in (d.getVar('ALTERNATIVE:%s' % pkg) or "").split():
181 # ALTERNATIVE_PRIORITY_pkg[tool] = priority 196 # ALTERNATIVE_PRIORITY_pkg[tool] = priority
182 alt_priority_pkg_name = d.getVarFlag('ALTERNATIVE_PRIORITY_%s' % pkg, alt_name) 197 alt_priority_pkg_name = d.getVarFlag('ALTERNATIVE_PRIORITY_%s' % pkg, alt_name)
183 # ALTERNATIVE_PRIORITY[tool] = priority 198 # ALTERNATIVE_PRIORITY[tool] = priority
@@ -192,12 +207,12 @@ def reset_alternative_priority(d):
192 bb.debug(1, '%s: Setting ALTERNATIVE_PRIORITY[%s] to %s' % (pkg, alt_name, reset_priority)) 207 bb.debug(1, '%s: Setting ALTERNATIVE_PRIORITY[%s] to %s' % (pkg, alt_name, reset_priority))
193 d.setVarFlag('ALTERNATIVE_PRIORITY', alt_name, reset_priority) 208 d.setVarFlag('ALTERNATIVE_PRIORITY', alt_name, reset_priority)
194 209
195PACKAGEFUNCS_append = " do_package_qa_multilib" 210PACKAGEFUNCS:append = " do_package_qa_multilib"
196 211
197python do_package_qa_multilib() { 212python do_package_qa_multilib() {
198 213
199 def check_mlprefix(pkg, var, mlprefix): 214 def check_mlprefix(pkg, var, mlprefix):
200 values = bb.utils.explode_deps(d.getVar('%s_%s' % (var, pkg)) or d.getVar(var) or "") 215 values = bb.utils.explode_deps(d.getVar('%s:%s' % (var, pkg)) or d.getVar(var) or "")
201 candidates = [] 216 candidates = []
202 for i in values: 217 for i in values:
203 if i.startswith('virtual/'): 218 if i.startswith('virtual/'):
@@ -211,7 +226,7 @@ python do_package_qa_multilib() {
211 if len(candidates) > 0: 226 if len(candidates) > 0:
212 msg = "%s package %s - suspicious values '%s' in %s" \ 227 msg = "%s package %s - suspicious values '%s' in %s" \
213 % (d.getVar('PN'), pkg, ' '.join(candidates), var) 228 % (d.getVar('PN'), pkg, ' '.join(candidates), var)
214 package_qa_handle_error("multilib", msg, d) 229 oe.qa.handle_error("multilib", msg, d)
215 230
216 ml = d.getVar('MLPREFIX') 231 ml = d.getVar('MLPREFIX')
217 if not ml: 232 if not ml:
@@ -229,4 +244,5 @@ python do_package_qa_multilib() {
229 check_mlprefix(pkg, 'RSUGGESTS', ml) 244 check_mlprefix(pkg, 'RSUGGESTS', ml)
230 check_mlprefix(pkg, 'RREPLACES', ml) 245 check_mlprefix(pkg, 'RREPLACES', ml)
231 check_mlprefix(pkg, 'RCONFLICTS', ml) 246 check_mlprefix(pkg, 'RCONFLICTS', ml)
247 oe.qa.exit_if_errors(d)
232} 248}