8 使用配置片段

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

本文提供 bitbake-config-build 工具的速查说明,并列出 OpenEmbedded Build System 核心仓库中 可用的 配置片段 和 内置片段。

备注

有关如何为构建定义新片段的详细信息,请参阅《Yocto Project 开发任务手册》的 在构建中创建新配置片段 一节。

8 bitbake-config-build 速查

配置片段 由 bitbake-config-build 命令行工具管理,该工具在 初始化构建环境 之后即可使用。

bitbake-config-build 命令行工具通过子命令管理片段, 下文各节将详细介绍这些子命令。每个子命令都可以传入 --help 标志, 获取更多信息。

8.1.1 bitbake-config-build list-fragments

bitbake-config-build list-fragments 命令列出当前可用的 内置片段 和 配置片段, 并显示哪些片段已启用、哪些已禁用。

8.1.2 bitbake-config-build show-fragment

bitbake-config-build show-fragment 命令用于显示片段的位置和值。 例如,运行 bitbake-config-build show-fragment core/yocto/sstate-mirror-cdn 将显示 core/yocto/sstate-mirror-cdn 片段的内容。

8.1.3 bitbake-config-build enable-fragment

bitbake-config-build enable-fragment 命令用于启用片段。 启用片段后,BitBake 会解析该片段的配置变量, 这些变量的值将在构建中全局可用。

通过 bitbake-config-build list-fragments 命令返回的列表, 可以确定构建能够启用哪些片段。

例如,以下命令启用 core/yocto/sstate-mirror-cdn 片段:

bitbake-config-build enable-fragment core/yocto/sstate-mirror-cdn

备注

可以使用同一条命令同时启用多个片段:

bitbake-config-build enable-fragment <fragment1> <fragment2> ...

内置片段 的启用方式相同, 其值直接在命令行中定义。例如,以下命令通过 machine/ 片段 将 MACHINE 设置为 qemuarm64:

bitbake-config-build enable-fragment machine/qemuarm64

可以在命令行中将此片段设为另一个值,从而覆盖原有设置,例如:

bitbake-config-build enable-fragment machine/qemux86-64

在上述示例中,MACHINE 的新值为 qemux86-64。

使用 bitbake-config-build enable-fragment 启用片段后, 其名称会自动追加到 build/conf/toolcfg.conf 中的 OE_FRAGMENTS 变量。

备注

也可以修改配置文件(如 build/conf/local.conf)中的 OE_FRAGMENTS 变量,手动删除或添加片段。

8.1.4 bitbake-config-build disable-fragment

凡是通过 bitbake-config-build enable-fragment 命令启用的片段, 都可以通过 bitbake-config-build disable-fragment 命令禁用。 已启用片段的列表可以通过 bitbake-config-build list-fragments 获取。

例如,以下命令禁用 core/yocto/sstate-mirror-cdn 片段:

bitbake-config-build disable-fragment core/yocto/sstate-mirror-cdn

内置片段 的禁用方式也相同。 例如,以下命令禁用 machine/qemuarm64 片段:

bitbake-config-build disable-fragment machine/qemuarm64

备注

可以使用同一条命令同时禁用多个片段:

bitbake-config-build disable-fragment <fragment1> <fragment2>

8.1.5 bitbake-config-build disable-all-fragments

bitbake-config-build disable-all-fragments 命令禁用当前所有 已启用的片段。已启用片段的列表可以通过 bitbake-config-build list-fragments 获取。

此命令不带参数运行:

bitbake-config-build disable-all-fragments

8 核心片段

8 核心内置片段

内置片段 用于为单个变量进行全局赋值。 OpenEmbedded Build System 定义了多个内置片段,详见本节。

8.2.1.1 machine/

machine/ built-in fragment 可用于全局设置 MACHINE 变量的值。

8.2.1.2 distro/

distro/ built-in fragment 可用于全局设置 DISTRO 变量的值。

8 核心配置片段

8 Yocto Project 片段

本组定义与 Yocto Project 基础设施相关的通用片段。

8.2.2.1.1 core/yocto/sstate-mirror-cdn

core/yocto/sstate-mirror-cdn configuration fragment 可用于 设置 BB_HASHSERVE_UPSTREAM 和 SSTATE_MIRRORS, 以使用标准 Yocto 构建配置的预构建 共享状态缓存 产物。

这意味着构建开始时会查询 Yocto Project 镜像站,检查是否存在所需产物。 虽然会增加初始等待时间,但如果缓存中已有相应产物,就不必重新构建, 从而加快后续构建过程。这一机制假定下载产物比自行构建更快, 实际情况取决于网络配置。

8.2.2.1.2 core/yocto/root-login-with-empty-password

core/yocto/root-login-with-empty-password configuration fragment 可用于允许 root 用户通过串口控制台和 SSH 无密码登录。

8.2.2.1.3 core/yocto/sbom-cve-check

core/yocto/sbom-cve-check configuration fragment 可用于配置构建, 使其使用 sbom-cve-check 类。

此配置片段执行以下操作:

  • 将 create-spdx 类添加到全局继承的类列表中, 因为它依赖该类。

  • 将输入 CVE 数据库的源码修订版本(SRCREV)设为 AUTOREV, 使构建开始时自动获取并更新这些数据库。

  • 使用 SPDX_INCLUDE_VEX 变量, 将 VEX 声明包含到输入 SPDX 文档中。

8.2.2.1.4 core/yocto/monitor-disk-space

core/yocto/monitor-disk-space configuration fragment 通过为 BB_DISKMON_DIRS 变量设置合理的值,在构建所用磁盘空间不足时 产生警告或错误。有关更多信息,请参阅 BB_DISKMON_DIRS 的定义。

8 Yocto Project Autobuilder 片段

本组定义用于 Yocto Project Autobuilder 的片段。 详情请参阅《Yocto Project 测试环境手册》的 Yocto 项目 Autobuilder 概览 一节。

8.2.2.2.1 core/yocto-autobuilder/autobuilder

core/yocto-autobuilder/autobuilder 片段定义由 Yocto Project Autobuilder 发起的构建所使用的公共变量。

8.2.2.2.2 core/yocto-autobuilder/autobuilder-resource-constraints

core/yocto-autobuilder/autobuilder 片段定义用于限制 Yocto Project Autobuilder 构建期间资源使用量的变量。 有关限制资源的更多详情,请参阅《Yocto Project 开发任务手册》的 限制主机资源使用量 一节。

8.2.2.2.3 core/yocto-autobuilder/multilib-mips64-n32

core/yocto-autobuilder/multilib-mips64-n32 片段为 MIPS64 机器启用三架构的 multilib 配置,其中包括 mips64-n32、mips64 和 mips32r2。

8.2.2.2.4 core/yocto-autobuilder/multilib-x86-lib32

core/yocto-autobuilder/multilib-x86-lib32 片段启用 multilib 配置,以便在 64 位 X86 构建中支持 32 位库。

8.2.2.2.5 core/yocto-autobuilder/multilib-x86-lib64

core/yocto-autobuilder/multilib-x86-lib64 片段启用 multilib 配置,以便在 32 位 X86 构建中支持 64 位库。