【问题标题】:How to override a .conf file in Yocto如何在 Yocto 中覆盖 .conf 文件
【发布时间】:2019-11-02 00:01:42
【问题描述】:

我知道如何使用自定义层内的.bbappend 覆盖.bb 文件,复制原始文件的确切路径。

但是当要覆盖的文件是.conf 时?我正在阅读大型手册,但找不到此信息(也许我正在查看错误的章节)。

更新

这是我想做的一个例子。 原始 .conf 文件包含这一行:

IMAGE_FEATURES[validitems] += "qtcreator-debug"

我想删除它。如果它是一个 .bb 文件,我将创建一个 bbappend 文件:

IMAGE_FEATURES[validitems] -= "qtcreator-debug"

【问题讨论】:

  • 你想完成什么? AFAIK 无法附加特定的配置文件,但我也无法想象它会在哪里使用

标签: yocto bitbake


【解决方案1】:

基本上,.conf 文件是从上到下评估的。因此,您始终可以覆盖任何内容,并且每当您在某事上运行 bitbake -e 时,都会列出准确的评估顺序,而且每个变量上都有详细的评估清单。

所以,这就是其中的一部分。另一个是,正确的 .conf 文件实际上设置了它们的变量,意味着要使用 ?=??= 运算符进行调整,这样更容易覆盖。因此,如果要覆盖的 .conf 是您正在维护的文件,请考虑重写它。如果不是,还要想想为什么它可能没有这样写,如果覆盖它实际上是正确的解决方案还是仅仅是胶带解决方案。

【讨论】:

  • .conf 文件来自现有环境。我正在寻找一种方法来覆盖它,因为如果我更改原始版本,当发布更新时我需要重新进行所有更改...
  • @Mark 正如所指出的,看看conf文件的评估顺序,肯定有足够的点可以注入任何你需要的东西。
  • 有时你需要让层维护者将bitbake变量赋值从=更改为?=,或者提交相应的补丁以获得可覆盖的东西
【解决方案2】:

有多种方法可以做到这一点。 1)你总是可以覆盖local.conf中的东西,它具有最高的评估优先级。但限制是 local.conf 需要手动编辑,并且更改仅适用于具有特定 local.conf 的构建。 2)如果有意义,您可以创建一个新的conf文件并使用“require”继承原始conf文件,然后覆盖东西。这在基于现有文件创建新机器 conf 文件时很有用。 3)最后,覆盖整个conf文件的蛮力机制是在自定义层内部新建一个同名的conf文件,并将自定义层的层优先级设置为高于包含原始conf文件的层。这意味着您必须自己维护覆盖的 conf 文件。此方法也适用于覆盖 bbclasses。 4) 您也可以修改图像配方中的 IMAGE_FEATURES(参见http://cgit.openembedded.org/openembedded-core/tree/meta/recipes-sato/images/core-image-sato.bb)。

【讨论】:

    猜你喜欢
    • 2023-01-26
    • 2020-04-18
    • 2019-07-03
    • 2022-11-17
    • 2018-03-14
    • 1970-01-01
    • 1970-01-01
    • 2013-03-07
    • 1970-01-01
    相关资源
    最近更新 更多