版本 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 包:

  • acl

  • apmd

  • aspell

  • attr

  • augeas

  • bzip2

  • cogl

  • curl

  • elfutils

  • gcc-target

  • libgcc

  • libtool

  • libxmu

  • opkg

  • pciutils

  • rpm

  • sysfsutils

  • tiff

  • xz

它们现在均遵循标准打包方案:每个配方各有一个 -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 不符合此用途。