我正在用Yocto构建图像,并且需要在上游树中修补BitBake类。我不想修改上游源,而是希望将修改添加到本地层。
对于BitBake 食谱,我将使用.bbappend
文件。 课程应该使用什么?
答案 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>。