9 在构建中创建新配置片段

配置片段 定义顶层构建配置功能,可以通过 标准工具独立启用或禁用。这些功能由一条或多条构建配置语句组成,语句可以保存 在片段文件中,也可以通过 Built-in Fragment 机制间接设置。

本节介绍如何为构建创建新片段。

配置片段分为两类:

  • 标准 配置片段 保存在文件中,包含摘要、 描述以及随后的配置语句。

  • 内置片段 用于为单个变量赋值,无需单独的定义 文件。当可能取值的列表很长或无限时,尤其有用。

9 创建标准配置片段

默认情况下,所有配置片段位于 layer 的 conf/fragments 目录。 此位置由 OE_FRAGMENTS_PREFIX 变量定义,该变量作为参数传给 bitbake.conf 中的 addfragments 指令。

可以在 layer 的此目录中创建一个或多个 configuration fragment 文件。以下示例使用 custom-fragment.conf 作为自定义片段文件:

meta-custom
├── conf
│   ├── fragments
│   │   └── custom-fragment.conf
│   └── layer.conf
...

在 custom-fragment.conf 中,必须 设置以下变量, OpenEmbedded Build System 才会将它视为有效片段:

备注

BB_CONF_FRAGMENT_SUMMARY 和 BB_CONF_FRAGMENT_DESCRIPTION 变量也作为参数传给 bitbake.conf 中的 addfragments 指令。

设置这些变量后,自定义片段如下:

custom-fragment.conf
BB_CONF_FRAGMENT_SUMMARY = "This fragment sets a limit of 4 bitbake threads and 4 parsing threads"
BB_CONF_FRAGMENT_DESCRIPTION = "This fragment is useful to constrain resource consumption when the Yocto default \
is causing an overload of host machine's memory and CPU resources."

目前片段还没有其他配置语句。添加以下赋值:

custom-fragment.conf(续)
BB_NUMBER_THREADS = "4"
BB_NUMBER_PARSE_THREADS = "4"

启用此片段后,将通过 BB_NUMBER_THREADS 和 BB_NUMBER_PARSE_THREADS 限制 BitBake 使用的线程数。

此时片段已经存在,且会由 bitbake-config-build list-fragments 命令列出,但尚未启用。使用 bitbake-config-build enable-fragment 命令启用它:

bitbake-config-build enable-fragment meta-custom/custom-fragment

备注

上述命令中的 meta-custom 前缀取决于层名称,由层的 conf/layer.conf 文件中的 BBFILE_COLLECTIONS 变量定义。

标准配置片段可以采用更复杂的组织方式,例如通过子目录分类:

meta-custom
├── conf
│   ├── fragments
│   │   ├── networking
│   │   │   └── mirrors.conf
│   │   └── resources
│   │       └── numberthreads.conf
│   └── layer.conf
...

上例中,构建将可以使用 meta-custom/networking/mirrors 和 meta-custom/resources/numberthreads 两个片段。

9 创建内置片段

在 OpenEmbedded Build System 中,内置片段由 OE_FRAGMENTS_BUILTIN 变量定义,它作为参数传给 bitbake.conf 中的 addfragments 指令。

在 layer 配置文件中追加 OE_FRAGMENTS_BUILTIN,即可添加 新的 内置片段:

layer.conf
OE_FRAGMENTS_BUILTIN:append = " custom-builtin-fragment:CUSTOM_VARIABLE"

警告

上述赋值务必使用 :append 覆盖,使用 += 可能导致意外行为。

警告

由于 BitBake 解析文件的方式,并非任意 configuration file 都能修改 OE_FRAGMENTS_BUILTIN。创建新内置片段应在 layer 配置文件(conf/layer.conf)中设置该变量。

然后可以使用 bitbake-config-build enable-fragment 命令为 CUSTOM_VARIABLE 赋值:

bitbake-config-build enable-fragment custom-builtin-fragment/somevalue