版本 3.3 (hardknott)
本节介绍如何从上一版本迁移到 Yocto Project 3.3 版本(代号“hardknott”)。
最低系统要求
构建主机现在至少需要安装 Python 3.6。多数较新发行版已提供此版本;
若所用发行版没有,可以使用 buildtools 压缩包
(通过 scripts/install-buildtools 即可轻松安装)。详情见
所需的 Git、tar、Python、make 和 gcc 版本。
已移除的配方
以下配方已移除:
go-dep:随着 Go modules 的出现而过时gst-validate:由gst-devtools取代linux-yocto:移除 5.8 版本配方(仍提供 5.4 / 5.10)vulkan-demos:由vulkan-samples取代
单一版本通用许可证文件命名
meta/files/common-licenses 中部分许可证文件已重命名,以匹配当前 SPDX 命名约定:
AGPL-3.0 -> AGPL-3.0-only
GPL-1.0 -> GPL-1.0-only
GPL-2.0 -> GPL-2.0-only
GPL-3.0 -> GPL-3.0-only
LGPL-2.0 -> LGPL-2.0-only
LGPL-2.1 -> LGPL-2.1-only
LGPL-3.0 -> LGPL-3.0-only
此外,新增了对应的 "-or-later" 后缀文件,例如 GPL-2.0-or-later。
由于保留了原名称的映射,不要求修改 LICENSE 值。
但在少数情况下,如果配方将 LIC_FILES_CHKSUM 指向
meta/files/common-licenses 中的文件(无论如何都不建议这样做),
则需要更新这些引用。
新增 python3targetconfig 类
新增的 python3targetconfig 类,适用于过去继承
python3native、但又需要访问目标配置数据
(如正确的安装目录)的情况。此类配方应改为继承 python3targetconfig,
而不是 python3native。这也会加入对目标 python3 的依赖,
因此仅应在需要时使用,以免无谓延长构建时间。
已作此变更的配方示例包括 gpgme、libcap-ng 和 python3-pycairo。
Python 模块的 setup.py 路径
Python 模块的 setup.py 有时位于源码树深处。
过去,配方将 S 指向 setup.py 所在的源码子目录来处理此情况。
但近期 pseudo 的变更导致问题:
某些 Python 模块会修改 ${S} 路径之上的文件。例如:
S = "${WORKDIR}/git/python/pythonmodule"
然后 setup.py 通过 ../../src 等相对路径操作源码。
这会导致 pseudo 无法正确跟踪路径而失败。本版本引入 DISTUTILS_SETUP_PATH,
使配方可以显式指定该路径,例如:
S = "${WORKDIR}/git"
DISTUTILS_SETUP_PATH = "${S}/python/pythonmodule"
如果配方继承 distutils3 (或继承它的 setuptools3),
同时按上述方式将 S 指向子目录中的 Python 模块,
现在应改为设置 DISTUTILS_SETUP_PATH。
BitBake 变更
BitBake 现在为所有任务配置默认
umask为022, 由新增的 BB_DEFAULT_UMASK 指定。必要时仍可通过任务函数的umask变量标志逐任务设置,但大多数情况下不需要。如果 PREFERRED_VERSION 指定的版本不可用,现在会触发警告, 而不只是提示,使此类问题更醒目。
打包变更
以下打包方式发生了变化。所有情况下,主软件包仍依赖拆分出的软件包, 因此除非希望利用更细的粒度,否则无需采取措施:
dbus:拆分出-common和-toolsiproute2:将ip二进制文件拆分到独立软件包net-tools:将mii-tool拆分到独立软件包procps:将ps和sysctl各自拆分到独立软件包rpm:将构建和额外功能拆分到独立软件包sudo:将sudo二进制文件拆分到sudo-sudo,库拆分到sudo-libsystemtap:拆分出示例、Python 脚本和运行时内容util-linux:将libuuid拆分为独立的util-linux-libuuid配方及相应软件包, 避免util-linux启用libgcrypt支持时出现循环依赖。util-linux依赖util-linux-libuuid。
其他变更
poky 默认的 DISTRO_VERSION 现在使用核心元数据的 Git 哈希 (METADATA_REVISION),而不是日期(DATE),减少一个小的 不可复现来源。当然,仍可按需指定自己的 DISTRO_VERSION, 尤其是在创建自定义发行版配置时。
重新加入
adwaita-icon-theme3.34.3,并通过meta/conf/distro/include/default-versions.inc中的 PREFERRED_VERSION 将其设为默认,因为新版与librsvg2.40 配合不佳。librsvg已移植到 Rust,而 Rust 尚未进入 OE-Core,当前实际上无法升级它, 但后续版本会改变这一状况。ffmpeg现在默认禁用 GPL 许可部分,以降低意外违反 GPL 的可能性。 若要显式启用,可通过 bbappend 将gpl加入ffmpeg的 PACKAGECONFIG, 或在配置中使用PACKAGECONFIG_append_pn-ffmpeg = " gpl"。connman现在声明与systemd-networkd冲突,因为它们的功能重叠, 运行时可能相互干扰。镜像许可证清单现在使用规范的 SPDX 许可证名称,避免同一许可证的别名同时出现, 例如
GPLv2和GPL-2.0。