【问题标题】:How to extend BitBake class如何扩展 BitBake 类
【发布时间】:2021-02-18 09:48:43
【问题描述】:

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

对于 BitBake recipe,我会使用 .bbappend 文件。 应该使用什么?

【问题讨论】:

    标签: yocto bitbake


    【解决方案1】:

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

    然后使用新的 bbclass 代替原来的。

    【讨论】:

      【解决方案2】:

      @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> \
      "
      

      【讨论】:

        【解决方案3】:

        通常对于 .bbclass 文件,缺少与附加配方 (.bbappends) 类似的方法。 @Oleksandr-Kravchuk 提出的解决方案很好,但有一些限制。当您必须修改某些功能或进行更复杂的更改时,我宁愿将这个类文件复制到我的元数据层并在那里进行调整。最后 bitbake 基于层中的配置(conf/layer.conf 文件) - BBFILE_PRIORITY 将决定采用来自具有更高优先级的层的类文件 - 无需接触配方.

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-12-10
          • 2020-06-22
          • 2013-03-30
          • 2016-05-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多