我有一些只与特定平台相关的图像(让我们说有些图像只适用于英特尔核心而其他只适用于sabrelite)。
图像是否有可能自动为构建设置MACHINE变量,而与local.conf无关?
如果没有,我是否可以至少让图像拒绝为其他机器构建?
我试着做一些谷歌搜索,但当然" yocto图像选择机器"或类似的请求只返回通用的Yocto教程。
感谢。
答案 0 :(得分:1)
要根据计算机添加包,可以使用python函数.filter()
或base_contains
。例如。 bitbake-how-to-add-package-depending-on-machine
配方中有base-conditional
个输入来检查兼容机器。
building-yocto-image-for-dragonboard-410c-how-to-build-chromium
答案 1 :(得分:1)
不,图像无法影响您正在构建的计算机。
背景:在OpenEmbedded中,机器,图像和发行版的概念应该彼此正交。即任何图像都应该适用于发行版和机器的任何组合。 (当然,在实践中可能并非总是如此)。
您可以通过设置
使图像拒绝构建 COMPATIBLE_MACHINE = "macha"
在您的图像配方中。
如果图像非常相似,另一个想法是,如果正在为正确的机器构建图像,则只安装机器特定的包。这可以通过以下方式轻松完成:
IMAGE_INSTALL_append_macha = " package1 package2"
注意字符串中的前导空格。 (_append
不会在空格前添加字符串。)
后一部分是通常所做的。将图像限制在特定的机器上是很少见的,至少在公共图层中是这样。
注意:macha
是机器的想象名称。