我想为一台新机器(称之为 A)添加一些从上游获取的层,主要是为了使用这些层提供的机器 A 配置文件、内核和 u-boot。然而,新层有几个 bbappend 文件(还有 bb 文件),其版本与我的 yocto 项目中其他机器的层不同。
例如,机器A有它自己的gstreamer1.0_1.8.1.bb和 bbappend 文件。其他机器正在使用gstreamer1.0_1.6.1.bb。当我为另一台机器构建镜像时,它会构建版本 1.8.1,因为 Yocto 将始终寻找最新的兼容版本的包并构建它。但是,gstreamer1.0_1.8.1.bbappend文件是专门为A机器编写的,不适用于其他机器并导致错误。不仅仅是 gstreamer,还有更多。
我有一个想法BBLAYERS_A += "new_layers \ ..."
在 bblayers.conf 文件中,但不幸的是它没有按照我想要的方式工作。
我的另一个想法是这样的:
BBMASK_B = "new_layers \ ..."
BBMASK_C = "new_layers \ ..."
BBMASK_D = "new_layers \ ..."
BBMASK_E = "new_layers \ ..."
BBMASK_F = "new_layers \ ..."
BBMASK_G = "new_layers \ ..."
BBMASK_H = "new_layers \ ..."
BBMASK_I = "new_layers \ ..."
...
它对我来说看起来不太好,而且我怀疑它也不会起作用。我认为构建过程是首先加载 bblayers.conf 文件,然后加载 local.conf。因此,在知道要构建什么机器之前,需要先部署各层。
我的问题是我怎样才能使那些新添加的层与机器A仅,但不会被使用其他机器.
您应该尝试使 BSP 层仅在使用该层中的任何机器时才产生任何影响。
在你的例子中,gstreamer1.0_1.8.1.bb
,你应该添加
COMPATIBLE_MACHINE = "^machinea$"
请注意,这是一个正则表达式,因此省略前导^
和结束$
,您可能会错误地匹配类似命名的机器。
另请注意,我更改了您的机器名称示例A
to machinea
,因为机器需要是小写字母。
如果您要添加.bbappend
文件,您通常让它们修改构建,例如。
SOME_VAR_machinea
如果您要覆盖文件,通常会将它们放入如下结构中:
recipes-support/myrecipe/myrecipe/machinea/some-file
在这种情况下,请注意额外的子目录machinea
,这将确保some-file
仅用于该特定机器。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)