版本 5.1 (styhead)
5.1 (styhead) 迁移说明
本节介绍如何从上一版本迁移到 Yocto Project 5.1 版本(代号“styhead”)。
WORKDIR 变更
不再支持 S = ${WORKDIR}
不再支持将配方的 S 设置为 WORKDIR,这样设置会报错。 应将配方改为:
S = "${UNPACKDIR}"
引用 SRC_URI 文件的所有 WORKDIR 引用,都应改为 S。 这些引用通常位于 do_configure、do_compile、 do_install 和 LIC_FILES_CHKSUM 中。
配方中的 WORKDIR 引用
需要检查其他配方中的 WORKDIR 引用。如果它们引用 SRC_URI
中的文件,通常需要改为 UNPACKDIR。这些引用常见于
do_compile 和 do_install 中,用于服务文件或配置文件等。
一个特殊情况是 ${WORKDIR}/${BP},通常应将它设置为 ${S}。
LIC_FILES_CHKSUM 或其他位置中的 ../ 引用可能需要改为 UNPACKDIR。
sed 命令中的 WORKDIR 引用通常保持原样。
一般说明
do_unpack 现在将文件解包到 WORKDIR/sources-unpack/,
而不是 WORKDIR/。
如果 S 设置为 WORKDIR 下的子目录,且在 do_unpack
执行后,该子目录存在于 sources-unpack 中,就会将其移动到 WORKDIR。
这意味着 S = "${WORKDIR}/${BP}"、S = "${WORKDIR}/git" 以及更深层路径
无需修改即可继续正常工作。不能用符号链接实现这一点,因为它会破坏基于 autotools
的配方。也没有选择将所有源码保留在 sources-unpack 下,因为这样需要对配方
作出更大范围的修改。主要目标是将 do_unpack 的输出与
WORKDIR 分离。
过去总会创建 S,但近期变更后不再如此。这意味着,如果配方没有创建
S,现在会触发 do_unpack_qa 的检查,而过去不会。
因此,仅使用 file:// SRC_URI 条目的配方可能需要补充 S 定义。
为保持一致,建议采用以下写法:
S = "${UNPACKDIR}"
在不将 S 指向 UNPACKDIR 的情况下,无法从 UNPACKDIR 构建 C 文件,因为调试前缀映射不能处理这种情况。
devtool 和 recipetool 已作相应更新,并移除了对 S = WORKDIR 和
oe-local-files 的支持。
支持的内核版本
本版本的 OLDEST_KERNEL 仍为 "5.15",因此默认不支持更旧的内核。 详情见 4.3 迁移说明。
支持的发行版
与此前版本相比,新增支持在以下 GNU/Linux 发行版上运行 BitBake:
Ubuntu 24.10
Fedora 40
OpenSUSE Leap 15.5
OpenSUSE Leap 15.6
同时,不再支持以下较早的发行版:
Ubuntu 23.04
参见 所有受支持的发行版。
Go 语言变更
systemd 变更
新的 PACKAGECONFIG 值
bpf-framework用于预编译 eBPF,供 systemd.resource-control 的RestrictFileSystems和RestrictNetworkInterfaces功能使用。
配方变更
gobject-introspection:giscanner工具现在作为独立的软件包gobject-introspection-tools提供。perf不再使用libnewt编译其文本界面。openssl:仅在启用 ptest 时构建测试套件。
已移除的变量
以下变量已移除:
TCLIBCAPPEND:多个 libc 提供者共享 TMPDIR 已受支持多年, 因此移除此变量。VOLATILE_LOG_DIR:现在改用 FILESYSTEM_PERMS_TABLES。 FILESYSTEM_PERMS_TABLES 默认包含files/fs-perms-volatile-log.txt, 表示启用非持久日志。用户可以从 FILESYSTEM_PERMS_TABLES 中移除files/fs-perms-volatile-log.txt来禁用非持久日志。VOLATILE_TMP_DIR:现在改用 FILESYSTEM_PERMS_TABLES。 FILESYSTEM_PERMS_TABLES 默认包含files/fs-perms-volatile-tmp.txt, 表示启用非持久 tmp。用户可以从 FILESYSTEM_PERMS_TABLES 中移除files/fs-perms-volatile-tmp.txt来禁用非持久 tmp。
已移除的配方
本版本移除了以下配方:
liba52:由ffmpeg取代libomxil:唯一使用者 gstreamer omx 插件已移除,且多年未再开发,因此移除此配方libnewt:移至 meta-oempeg2dec:已停止开发 10 年,由ffmpeg取代pytest-runner:移至 meta-pythonpython3-importlib-metadata:移至 meta-pythonpython3-pathlib2:移至 meta-pythonpython3-py:移至 meta-pythonpython3-rfc3986-validator:移至 meta-pythonpython3-toml:移至 meta-pythonpython3-tomli:移至 meta-pythonusbinit:该配方实际上是 USB gadget 以太网驱动,名称并不准确。 Gadget 以太网如今的用途存疑,且 OE-Core 中没有任何地方引用或使用 usbinit。
已移除的类
本版本移除了以下类:
siteconfig:仅由ncurses和zlib使用,收益很小却增加了大量运行时间, 因此移除。
其他变更
oe-selftest 现在仅重写明确指向构建目录内部的环境变量路径。例如,
X=$BUILDDIR/conf/仍会重写为指向 oe-selftest 的conf/目录, 而Y=$BUILDDIR/../bitbake/不会重写,它仍指向bitbake/目录。例如,在 autobuilder 环境中,BB_LOGCONFIG 设置为
BB_LOGCONFIG="${BUILDDIR}/../bitbake/contrib/autobuilderlog.json"。 注意,该相对路径从构建目录指向目录外部。oe-selftest 现在不再修改此路径。含有从被测试构建目录指向原构建目录外部的相对路径的环境变量,可能需要更新, 因为 oe-selftest 不再修改它们。
insane 类中的多项健全性检查(例如
buildpaths) 已由警告升级为错误。ERROR_QA 的
license-incompatible健全性检查重命名为license-exception。