版本 2.0 (jethro)
本节介绍如何从上一版本迁移到 Yocto Project 2.0 版本(代号“jethro”)。
GCC 5
默认编译器现为 GCC 5.2,因此多个其他配方需要修复编译错误。
一个重要例子是,GCC 5 构建的 Linux 内核可能在 ARM 启动时冻结。
如果为 ARM 使用自定义内核配方或源码树,很可能需要应用此
补丁。
标准 linux-yocto 源码树已包含针对同一问题的变通修复。
详情见 https://gcc.gnu.org/gcc-5/changes.html 和移植指南 https://gcc.gnu.org/gcc-5/porting_to.html。
也可以设置 GCCVERSION 切回 GCC 4.9 或 4.8,例如:
GCCVERSION = "4.9%"
移除 Gstreamer 0.10
移除 Gstreamer 0.10,改用 1.x。0.10 及相关软件的配方现位于 meta-multimedia。
因此,Qt4 的 Phonon 和 QtWebkit 中的 Gstreamer 支持默认禁用。
已移除的配方
以下配方已移动或移除:
bluez4:bluez5已完全集成,旧配方过时,移至meta-oe。gamin:已过时,移除。gnome-icon-theme:功能由adwaita-icon-theme取代。Gstreamer 0.10 配方:移除,改用 1.x 配方。
insserv:已过时,移除。libunique:不再使用,移至meta-oe。midori:功能由epiphany取代。python-gst:仅包含 Gstreamer 0.10 绑定,已过时,移除。qt-mobility:依赖已被取代的Gstreamer 0.10,已过时,移除。subversion:移除所有 1.6.x 版本。webkit-gtk:移除旧 1.8.3,改用webkitgtk。
BitBake 数据存储改进
BitBake 数据存储的覆盖处理方式已变更。覆盖现在动态应用,
bb.data.update_data() 变为空操作,不再需要调用它来应用正确覆盖。
实际上通常无需修改元数据,但有以下细微行为变化:
运行以下命令时,变量历史现在显示所有可能的覆盖:
$ bitbake -e
d.delVar('VARNAME')和d.setVar('VARNAME', None)会清除变量及其全部覆盖值,而过去只清除未覆盖值。
Shell 消息函数变更
BitBake 消息函数的 shell 版本 bbdebug、bbnote、bbwarn、bbplain、
bberror 和 bbfatal,现在分别连接到 bb.debug()、bb.note()、
bb.warn()、bb.plain()、bb.error() 和 bb.fatal()。
预期显示在 BitBake 界面的消息现在会实际输出,意味着:
如果控制台出现过去未见的消息,可能需要清理
bbwarn、bberror等调用, 或直接移除这些调用。bbfatal现在抑制界面中的完整错误日志。 仍希望看到完整日志的调用应改为die或bbfatal_log。
额外开发/调试软件包清理
以下配方移除了额外的 dev/dbg 包:
aclapmdaspellattraugeasbzip2coglcurlelfutilsgcc-targetlibgcclibtoollibxmuopkgpciutilsrpmsysfsutilstiffxz
它们现在均遵循标准打包方案:每个配方各有一个 -dev、-dbg 和 -staticdev 包。
配方维护跟踪数据移至 OE-Core
过去属于 meta-yocto 的配方维护跟踪数据移至 OpenEmbedded-Core (OE-Core),
包括通常由 distrodata 启用的 package_regex.inc 和 distro_alias.inc。
upstream_tracking.inc 的内容也已拆分到相关配方。
自动清理过时系统根目录文件
当前配置中不再存在的配方,其过时文件现在会从系统根目录及其他共享状态管理位置 自动删除。因此,构建系统现在能正确处理配方构建端重命名、 从 build/conf/bblayers.conf 移除层,以及 DISTRO_FEATURES 变化。
此外,也会清理旧配方版本的工作目录。如需禁用,设置:
SSTATE_PRUNE_OBSOLETEWORKDIR = "0"
linux-yocto 内核元数据仓库与源码分离
过去 linux-yocto 在一个源码树中同时包含内核修改和配置元数据。
这有助于保持二者同步,但相比源码,开发者未必清楚如何操作元数据。
元数据处理已从 kernel-yocto 中移出。
一直用于初始化 linux-yocto 的 "meta" 分支的外部仓库 yocto-kernel-cache,
现在成为这些数据的主要存放位置。linux-yocto 因而不再处理合并树。
如果使用自己的合并内核仓库,也必须拆分,并相应更新配方。
示例见 meta/recipes-kernel/linux/linux-yocto_4.1.bb。
新增 QA 检查
新增以下 QA 检查:
"host-user-contaminated":检查
/home之外打包文件的所有权, 查找错误地归运行 BitBake 的主机用户、而非目标系统有效用户所有的文件。"invalid-chars":检查元数据变量值(DESCRIPTION、SUMMARY、 LICENSE 和 SECTION)中的无效非 UTF-8 字符, 因为部分包管理器不支持这些字符。
"invalid-packageconfig":检查 PACKAGECONFIG 中指定、 但配方未定义的选项。
其他变更
其他变更如下:
gtk-update-icon-cache重命名为gtk-icon-utils。IMAGE_FEATURES 的
tools-profile及对应的packagegroup-core-tools-profile不再引入oprofile。 原先添加它是为了辅助资源受限目标上的编译,但使用不广, 随着目标平台更强大及交叉编译工具改善,未来也不太可能需要。IMAGE_FSTYPES 默认由
ext3改为ext4。移除
PRINC的全部支持。packagegroup-core-full-cmdline不再引入lighttpd。 该组旨在提供默认由busybox提供的命令行工具的完整版本,lighttpd 不符合此用途。