如何扩展 BitBake 类

4
我正在使用Yocto构建镜像,并需要在上游树中打补丁BitBake类。我不想修改上游源代码,而是更喜欢将修改添加到本地层。
对于BitBake "recipe",我会使用`.bbappend`文件。对于一个"class"应该使用什么?
3个回答

8
在您的元层中创建“classes”文件夹并创建一个新类,例如“myclass.bbclass”。使用“inherit original-bitbake-CLASS”继承原始类,并添加所需的任何功能。然后使用新的bbclass替换原来的类。

7
@lukaszgard 的方法基本可行,只有一个小问题。 BBFILE_PRIORITY 无法覆盖 bbclass 和 conf 文件,它只能用于 recipe (.bb) 文件。这来自 Yocto 手册的一个部分 Prioritizing Your Layer,其中提到:

注意:在一个优先级更高的层中,具有低版本号 PV 的 recipe 可能会优先处理。 此外,层优先级目前不影响 .conf 或 .bbclass 文件的顺序。 BitBake 的未来版本可能会解决这个问题。

我发现的一种方法是创建一个 bblayer,创建并应用所需 bbclass 的更改,然后在 /build/conf/bblayers.conf 中,将创建的 bblayer 放置在要覆盖的 layer 上面。

这是基于Yocto手册的另一部分,该部分指出:

注意:在构建过程中,OpenEmbedded构建系统按照列表从上到下的顺序查找层。

例如:

BBLAYERS ?= " \
  ${TOPDIR}/../layers/<layer with new bbclass> \
  ${TOPDIR}/../layers/<layer with old bbclass> \
"

2
一般来说,对于 .bbclass 文件,缺乏像附加配方 (.bbappends) 一样的类似方法。由 @Oleksandr-Kravchuk 提出的解决方案很好,但有一些限制。当您需要修改某些函数或进行更复杂的更改时,我更喜欢将此类文件复制到我的元数据层并在那里进行适应。最后,bitbake 基于层中的配置 (conf/layer.conf 文件) - BBFILE_PRIORITY 将决定采用具有较高优先级级别的层中的此类文件 - 而不会影响配方

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接