版本 5.2 (walnascar)
5.2 (walnascar) 迁移说明
本节介绍如何从上一版本迁移到 Yocto Project 5.2 版本 (代号“walnascar”)。
从 IMAGE_FEATURES 移除 debug-tweaks
debug-tweaks 镜像功能现已移除,因为其名称没有清楚说明实际效果:
生成允许 root 用户无密码登录的镜像。
要达到相同效果,应手动将过去由 debug-tweaks 添加的功能加入
IMAGE_FEATURES 变量。这些功能为:
allow-empty-passwordallow-root-loginempty-root-passwordpost-install-logging
相应语句如下:
IMAGE_FEATURES += "allow-empty-password allow-root-login empty-root-password post-install-logging"
可用镜像功能列表见 Yocto Project 参考手册的 镜像功能 一节。
支持的内核版本
本版本将 OLDEST_KERNEL 设置为 5.15,因此默认不支持更旧的内核。 详情见 4.3 迁移说明。
支持的发行版
与此前版本相比,新增支持在以下 GNU/Linux 发行版上运行 BitBake:
Fedora 41
CentOS Stream 9
同时,不再支持以下较早的发行版:
CentOS Stream 8
Fedora 38
OpenSUSE Leap 15.4
Ubuntu 20.04
参见 所有受支持的发行版。
Rust 语言变更
继承 cargo 的配方不再默认安装库。 可通过 CARGO_INSTALL_LIBRARIES 变量控制这一行为。
systemd 变更
Systemd 更新到 255 版本后,移除了
split-usr和unmerged-usr支持。 此选项原来允许在/lib、/sbin或/bin等目录 未 合并到/usr的系统上安装 Systemd。因此,
systemd配方不再包含usrmergePACKAGECONFIG 选项, 因为该行为现在是默认要求。systemd.bbclass:如果systemd服务文件通过 Also 引用并启动其他服务文件,过去会将这些服务文件自动加入同一软件包的 FILES 变量。例如:a.service 包含:
[Install] Also=b.service
如果
a.service被打包到软件包A,b.service也会自动打包到A。 即使通过 FILES 和 SYSTEMD_SERVICE 变量将b.service显式加入软件包B,也仍会发生这一行为,导致无法将这些服务拆分到不同软件包。 因此,已移除服务文件的这一自动行为(套接字文件不受影响)。 现在必须将所有服务文件显式加入 FILES。将
create-log-dirs重新加入配置选项。要启用持久日志,用户现在可以将journald.conf的 "Storage" 选项设为 "persistent"。 此时日志使用/var/log/journal目录,而不是/run/log。如果 DISTRO_FEATURES 中没有
pni-names,现在会禁用 systemd 的 可预测网络接口命名 功能。此前,即使 DISTRO_FEATURES 不包含pni-names,该功能仍然启用。 如果希望保留 systemd 的这一行为,请务必将该功能加入 DISTRO_FEATURES。
多配置变更
默认多配置的 BB_CURRENT_MC 值由 default 改为空字符串,
以避免在 BitBake 内部映射这些值。某些情况下原本就没有进行映射,
因此这一变更也修复了一些隐蔽的错误。
任何依赖 BB_CURRENT_MC 默认等于 default 的逻辑,
都应改为判断它是否等于空字符串。
虚拟工具链提供者变更
对于 BB_VIRTUAL_RECIPE_PROVIDERS 中列出的特定关键工具链提供者,
现在支持按配方选择虚拟提供者。作为这项支持的一部分,cross 提供者移除了
三元组前缀(TARGET_PREFIX、SDK_PREFIX 和 HOST_PREFIX),
从而简化并统一命名。以下示例展示如何将这些变量引用改为新的 cross 语法:
virtual/${HOST_PREFIX}binutils -> virtual/cross-binutils
virtual/${TARGET_PREFIX}binutils -> virtual/cross-binutils
virtual/${HOST_PREFIX}gcc -> virtual/cross-cc
virtual/${TARGET_PREFIX}gcc -> virtual/cross-cc
virtual/${SDK_PREFIX}gcc -> virtual/nativesdk-cross-cc
virtual/${HOST_PREFIX}compilerlibs -> virtual/compilerlibs
virtual/${TARGET_PREFIX}compilerlibs -> virtual/compilerlibs
virtual/nativesdk-${SDK_PREFIX}compilerlibs -> virtual/nativesdk-compilerlibs
virtual/${TARGET_PREFIX}g++ -> virtual/cross-c++
PREFERRED_PROVIDER 的赋值可按如下方式转换:
PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}binutils -> PREFERRED_PROVIDER_virtual/cross-binutils
PREFERRED_PROVIDER_virtual/${SDK_PREFIX}binutils -> PREFERRED_PROVIDER_virtual/cross-binutils:class-nativesdk
PREFERRED_PROVIDER_virtual/${SDK_PREFIX}g++ -> PREFERRED_PROVIDER_virtual/nativesdk-cross-c++
上述示例涵盖大多数情况,但有时无法直接替换。更多示例见 OpenEmbedded-Core (OE-Core) 中的提交 "classes/recipes: Switch virtual/XXX-gcc to virtual/cross-cc (and c++/binutils)"。
autotools* 变更
aclocal的调用方式发生变化,ACLOCALDIR和ACLOCALEXTRAPATH不再使用。不再自动查找包含 m4 文件的目录并传给
autoreconf。 如果配方因找不到 m4 宏而配置失败,通常可在配方中设置EXTRA_AUTORECONF += "-I path/to/m4"解决。autotools* 类现在要求所有继承它的配方都有
configure脚本。配置脚本的位置存放在 CONFIGURE_SCRIPT 变量中。 如果缺少该脚本,do_configure 任务会失败。
UBOOT_ENTRYPOINT 变更
UBOOT_ENTRYPOINT 变量的值现在应带有 0x 前缀。例如,原来的赋值:
UBOOT_ENTRYPOINT ?= "20008000"
现在应替换为:
UBOOT_ENTRYPOINT ?= "0x20008000"
Git 获取器:移除单个 URL 对应多个修订版本的支持
BitBake 已移除 SRC_URI 中单个 URL 对应多个 Git 修订版本的支持, 因此不再支持以下语法:
SRC_URI = "git://some.host/somepath;bareclone=1;branch=branchX,branchY;name=nameX,nameY"
SRCREV_nameX = "xxxxxxxxxxxxxxxxxxxx"
SRCREV_nameY = "yyyyyyyyyyyyyyyyyyyy"
核心仓库很少使用这一机制,因为它仅适用于由配方自行处理 Git 检出的裸克隆
(SRC_URI 的 bareclone=1 选项)。移除此支持简化了多处代码逻辑。
如果某个配方使用此机制,可以将源码获取拆分为两个独立条目:
SRC_URI = "git://some.host/somepath;bareclone=1;branch=branchX;name=nameX \
git://some.host/somepath;bareclone=1;branch=branchY;name=nameY"
SRCREV_nameX = "xxxxxxxxxxxxxxxxxxxx"
SRCREV_nameY = "yyyyyyyyyyyyyyyyyyyy"
Git 获取器:SRC_URI 现在必须提供 branch 参数
在 SRC_URI 中指定 Git 仓库时,现在必须提供 branch 参数,例如:
SRC_URI = "git://some.host/somepath;branch=branchX"
缺少 branch 参数过去仅产生警告,现在则会报错。
配方变更
libnss-mdns配方现已重命名为avahi-libnss-mdns,以避免与 meta-networking 冲突。由于更新到 Glibc 2.41 后出现回归问题,移除了
valgrind配方的 ptest 支持。
已移除的变量
以下变量已移除:
PACKAGE_SNAP_LIB_SYMLINKS:与无人维护且已过时的 "micro" 发行版 相关。SETUPTOOLS_INSTALL_ARGS:已过时且未使用的变量。BB_DANGLINGAPPENDS_WARNONLY:不再支持在.bbappend文件无法应用到 原配方时仅向用户发出警告。替代方案见 Yocto Project 开发任务手册的 通过自己的层追加其他层元数据 一节。
已移除的配方
本版本移除了以下配方:
liburi-perl:移至 meta-perl。python3-isodate:移至 meta-python。python3-iniparse:openembedded-core 和 meta-openembedded 中均无使用者,因此移除。blktool:2004 年作为 hdparm 的替代工具创建,之后未再更新 (而 hdparm 仍在积极开发)。cargo-c-native:转换为目标配方,并重命名为cargo-c。libnss-mdns:重命名为avahi-libnss-mdns。
已移除的类
本版本移除了以下类:
migrate_localcount.bbclass:已过时,其代码早在 2012 年就已移除。
已移除的功能
从 DISTRO_FEATURES 中移除
ld-is-gold发行版功能。
其他变更
ZSTD_COMPRESSION_LEVEL 现在是普通整数,而不是带连字符前缀的命令行选项 (例如应设置为
3,而不是-3)。此前,U-Boot 配方和
kernel-fitimage.bbclass都会处理 UBOOT_ENV。 但将 U-Boot 脚本加入内核 FIT 镜像是另一项独立操作,应使用独立变量。 因此,kernel-fitimage.bbclass不再处理 UBOOT_ENV。 应使用新变量 FIT_UBOOT_ENV 将 U-Boot 脚本加入 FIT 镜像。eSDK 中移除了
devtool ide-sdk工具 (但它仍可在 BitBake 环境中使用)。