版本 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 语言变更

  • go 类移除了自定义 do_unpack 后,Go 配方 现在应在 SRC_URI 中添加 destsuffix=${GO_SRCURI_DESTSUFFIX}, 以解包到正确路径。例如:

    SRC_URI = "git://go.googlesource.com/example;branch=master;protocol=https;destsuffix=${GO_SRCURI_DESTSUFFIX}"
    
  • Go 模块不再使用 --linkmode=external 编译。

systemd 变更

  • 新的 PACKAGECONFIG 值 bpf-framework 用于预编译 eBPF,供 systemd.resource-control 的 RestrictFileSystems 和 RestrictNetworkInterfaces 功能使用。

配方变更

  • gobject-introspection:giscanner 工具现在作为独立的软件包 gobject-introspection-tools 提供。

  • perf 不再使用 libnewt 编译其文本界面。

  • openssl:仅在启用 ptest 时构建测试套件。

已移除的变量

以下变量已移除:

已移除的配方

本版本移除了以下配方:

  • liba52:由 ffmpeg 取代

  • libomxil:唯一使用者 gstreamer omx 插件已移除,且多年未再开发,因此移除此配方

  • libnewt:移至 meta-oe

  • mpeg2dec:已停止开发 10 年,由 ffmpeg 取代

  • pytest-runner:移至 meta-python

  • python3-importlib-metadata:移至 meta-python

  • python3-pathlib2:移至 meta-python

  • python3-py:移至 meta-python

  • python3-rfc3986-validator:移至 meta-python

  • python3-toml:移至 meta-python

  • python3-tomli:移至 meta-python

  • usbinit:该配方实际上是 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。