如何扩展BitBake类

时间:2018-08-11 19:09:18

标签: yocto bitbake

我正在用Yocto构建图像,并且需要在上游树中修补BitBake类。我不想修改上游源,而是希望将修改添加到本地层。

对于BitBake 食谱,我将使用.bbappend文件。 课程应该使用什么?

3 个答案:

答案 0 :(得分:3)

@lukaszgard 方法除了一个小问题外都有效。 BBFILE_PRIORITY 不为 bbclass 和 conf 文件提供覆盖功能,它仅适用于配方 (.bb)。这是基于 Yocto 手册的一部分,Prioritizing Your Layer 中说

<块引用>

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

我发现有效的方法是创建一个 bblayer,创建并应用所需 bbclass 的更改,然后在 /build/conf/bblayers.conf 中,将创建的 bblayer 放在您正在尝试覆盖。

这是基于 Yocto manual 的另一部分说

<块引用>

注意:在构建过程中,OpenEmbedded 构建系统会按照从列表顶部到底部的顺序查看层。

示例:

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

答案 1 :(得分:1)

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

然后使用新的bbclass而不是原始的bbclass。

答案 2 :(得分:1)

通常,对于 .bbclass 文件,缺少类似于添加配方(.bbappends)的类似方法。 @ Oleksandr-Kravchuk提出的解决方案虽然不错,但有一些局限性。当您必须修改某些功能或进行更复杂的更改时,我希望将此类文件复制到我的元数据层并在那里进行修改。最终,根据层(conf / layer.conf文件)中的配置进行 bitbake -BBFILE_PRIORITY将决定从具有更高优先级的层中获取此类文件-无需修改配方< / strong>。