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:片段的描述。
备注
BB_CONF_FRAGMENT_SUMMARY 和 BB_CONF_FRAGMENT_DESCRIPTION 变量也作为参数传给 bitbake.conf 中的 addfragments 指令。
设置这些变量后,自定义片段如下:
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."
目前片段还没有其他配置语句。添加以下赋值:
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,即可添加 新的 内置片段:
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