mirror of
https://git.yoctoproject.org/poky
synced 2026-02-08 01:36:38 +01:00
RP: The list of recipes in multilib.conf needs to go away and we need to just be able to extend all recipes with the multilib class. Tested by building and running lib32-core-image-sato-sdk. [YOCTO #1563] (From OE-Core rev: 5d691f1bc95dfb9109b07827b33957b1fa5b2fa4) Signed-off-by: Bogdan Marinescu <bogdan.a.marinescu@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
109 lines
4.2 KiB
Plaintext
109 lines
4.2 KiB
Plaintext
python multilib_virtclass_handler () {
|
|
if not isinstance(e, bb.event.RecipePreFinalise):
|
|
return
|
|
|
|
cls = e.data.getVar("BBEXTENDCURR", True)
|
|
variant = e.data.getVar("BBEXTENDVARIANT", True)
|
|
if cls != "multilib" or not variant:
|
|
return
|
|
|
|
# There should only be one kernel in multilib configs
|
|
if bb.data.inherits_class('kernel', e.data) or bb.data.inherits_class('module-base', e.data):
|
|
raise bb.parse.SkipPackage("We shouldn't have multilib variants for the kernel")
|
|
|
|
if bb.data.inherits_class('image', e.data):
|
|
e.data.setVar("PN", variant + "-" + e.data.getVar("PN", False))
|
|
return
|
|
|
|
if bb.data.inherits_class('native', e.data):
|
|
raise bb.parse.SkipPackage("We can't extend native recipes")
|
|
|
|
save_var_name=e.data.getVar("MULTILIB_SAVE_VARNAME", True) or ""
|
|
for name in save_var_name.split():
|
|
val=e.data.getVar(name, True)
|
|
if val:
|
|
e.data.setVar(name + "_MULTILIB_ORIGINAL", val)
|
|
|
|
# Expand this since this won't work correctly once we set a multilib into place
|
|
e.data.setVar("ALL_MULTILIB_PACKAGE_ARCHS", e.data.getVar("ALL_MULTILIB_PACKAGE_ARCHS", True))
|
|
|
|
override = ":virtclass-multilib-" + variant
|
|
|
|
e.data.setVar("MLPREFIX", variant + "-")
|
|
e.data.setVar("PN", variant + "-" + e.data.getVar("PN", False))
|
|
e.data.setVar("SHLIBSDIR_virtclass-multilib-" + variant ,e.data.getVar("SHLIBSDIR", False) + "/" + variant)
|
|
if e.data.getVar("TARGET_VENDOR_virtclass-multilib-" + variant, False) is None:
|
|
e.data.setVar("TARGET_VENDOR_virtclass-multilib-" + variant, e.data.getVar("TARGET_VENDOR", False) + "ml" + variant)
|
|
e.data.setVar("OVERRIDES", e.data.getVar("OVERRIDES", False) + override)
|
|
}
|
|
|
|
addhandler multilib_virtclass_handler
|
|
|
|
STAGINGCC_prepend = "${BBEXTENDVARIANT}-"
|
|
|
|
python __anonymous () {
|
|
variant = d.getVar("BBEXTENDVARIANT", True)
|
|
|
|
import oe.classextend
|
|
|
|
clsextend = oe.classextend.ClassExtender(variant, d)
|
|
|
|
if bb.data.inherits_class('image', d):
|
|
clsextend.map_depends_variable("PACKAGE_INSTALL")
|
|
clsextend.map_depends_variable("LINGUAS_INSTALL")
|
|
clsextend.map_depends_variable("RDEPENDS")
|
|
pinstall = d.getVar("LINGUAS_INSTALL", True) + " " + d.getVar("PACKAGE_INSTALL", True)
|
|
d.setVar("PACKAGE_INSTALL", pinstall)
|
|
d.setVar("LINGUAS_INSTALL", "")
|
|
# FIXME, we need to map this to something, not delete it!
|
|
d.setVar("PACKAGE_INSTALL_ATTEMPTONLY", "")
|
|
|
|
if bb.data.inherits_class('populate_sdk_base', d):
|
|
clsextend.map_depends_variable("TOOLCHAIN_TARGET_TASK")
|
|
clsextend.map_depends_variable("TOOLCHAIN_TARGET_TASK_ATTEMPTONLY")
|
|
|
|
if bb.data.inherits_class('image', d) or bb.data.inherits_class('populate_sdk_base', d):
|
|
return
|
|
|
|
clsextend.rename_packages()
|
|
clsextend.rename_package_variables((d.getVar("PACKAGEVARS", True) or "").split())
|
|
|
|
clsextend.map_depends_variable("DEPENDS")
|
|
clsextend.map_packagevars()
|
|
clsextend.map_variable("PROVIDES")
|
|
clsextend.map_variable("PACKAGES_DYNAMIC")
|
|
clsextend.map_variable("PACKAGE_INSTALL")
|
|
clsextend.map_variable("INITSCRIPT_PACKAGES")
|
|
}
|
|
|
|
PACKAGEFUNCS_append = "do_package_qa_multilib"
|
|
|
|
python do_package_qa_multilib() {
|
|
|
|
def check_mlprefix(pkg, var, mlprefix):
|
|
values = bb.utils.explode_dep_versions(d.getVar('%s_%s' % (var, pkg), True) or d.getVar(var, True) or "")
|
|
candidates = []
|
|
for i in values.keys():
|
|
if i.startswith('virtual/'):
|
|
i = i[len('virtual/'):]
|
|
if (not i.startswith('kernel-module')) and (not i.startswith(mlprefix)):
|
|
candidates.append(i)
|
|
if len(candidates) > 0:
|
|
bb.warn("Multilib QA Issue: %s package %s - suspicious values '%s' in %s"
|
|
% (d.getVar('PN', True), pkg, ' '.join(candidates), var))
|
|
|
|
ml = d.getVar('MLPREFIX', True)
|
|
if not ml:
|
|
return
|
|
|
|
packages = d.getVar('PACKAGES', True)
|
|
for pkg in packages.split():
|
|
check_mlprefix(pkg, 'RDEPENDS', ml)
|
|
check_mlprefix(pkg, 'RPROVIDES', ml)
|
|
check_mlprefix(pkg, 'RRECOMMENDS', ml)
|
|
check_mlprefix(pkg, 'RSUGGESTS', ml)
|
|
check_mlprefix(pkg, 'RREPLACES', ml)
|
|
check_mlprefix(pkg, 'RCONFLICTS', ml)
|
|
}
|
|
|