版本 1.8 (fido)

本节介绍如何从上一版本迁移到 Yocto Project 1.8 版本(代号“fido”)。

已移除的配方

以下配方已移除:

  • owl-video:功能由 gst-player 取代。

  • gaku:功能由 gst-player 取代。

  • gnome-desktop:已在 meta-gnome 提供,此处不再需要。

  • gsettings-desktop-schemas:已在 meta-gnome 提供,此处不再需要。

  • python-argparse:默认 Python 发行内容已通过同名包提供 argparse, 不再需要独立配方。

  • telepathy-python, libtelepathy, telepathy-glib, telepathy-idle, telepathy-mission-control: 全部移至 meta-oe,OpenEmbedded-Core 中已无配方需要它们。

  • linux-yocto_3.10 和 linux-yocto_3.17:移除这两个内核的支持, 保留 3.14,并新增 3.19。

  • poky-feed-config-opkg:已过时,不再需要,改用 meta-oe 的 distro-feed-config。

  • libav 0.8.x:现在使用 libav 9.x。

  • sed-native:不再需要,主机发行版应提供可用的 sed。

BlueZ 4.x / 5.x 选择

现在内置支持选择 BlueZ 5.x 代替默认的 4.x。 只需将 "bluez5" 加入 DISTRO_FEATURES。 如果此前通过 *.bbappend 实现选择,现在可以移除这些追加文件。

此外,新增 bluetooth 类,简化配方中选择适当蓝牙支持的操作。 用法示例如下:

inherit bluetooth
PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', '${BLUEZ}', '', d)}"
PACKAGECONFIG[bluez4] = "--enable-bluetooth,--disable-bluetooth,bluez4"
PACKAGECONFIG[bluez5] = "--enable-bluez5,--disable-bluez5,bluez5"

内核构建变更

内核构建流程已改变:源码放在公共共享工作区,构建产物与源码分开存放。 理论上已为常见内核配方用法提供迁移路径,但未必覆盖所有情况。 尤其要确保 do_configure 和 do_install 等函数 正确使用 ${S} (源码)和 ${B} (构建产物)。 不继承 kernel-yocto 或不包含 linux-yocto.inc 的内核配方, 可参考 meta-oe 的 linux.inc 所需修改。相关更新 提交 可供参考。

依赖内核源码但不继承 module 的配方, 可能需要显式依赖内核的 do_shared_workdir 任务,例如:

do_configure[depends] += "virtual/kernel:do_shared_workdir"

OpenSSL 现在禁用 SSL 3.0

构建 OpenSSL 时现在禁用 SSL 3.0,避免残留的 POODLE 漏洞。 如果认为必须重新启用,可为 openssl 添加 *.bbappend, 从 EXTRA_OECONF 移除 "-no-ssl3"。

默认系统根目录失效处理

gcc 的默认系统根目录和头文件目录现在被“毒化”,即重定向到不存在的位置, 以发现未传入正确选项而意外使用主机目录的情况。 这同时适用于构建中使用的交叉编译器和 SDK 生成的交叉编译器。

如果因此导致构建失败,几乎可以确定是未向底层软件正确传递编译器标志或命令, 需要进行修正。

重新构建改进

base、autotools* 和 cmake 已调整,在重新执行 do_configure 时清理生成文件。

其中一项改进是存在 Makefile 时尝试运行 "make clean"。 部分软件包没有可用的 clean 目标,此类配方需设置 CLEANBROKEN 为 "1":

CLEANBROKEN = "1"

QA 检查与验证变更

QA 检查与验证有以下变化:

  • PRINC 过去触发警告,现在触发错误。请移除配方和追加文件中的剩余用法。

  • 新增 QA 检查,检测 FILES 中错误使用 ${D} 的情况, 此处不应包含 D。同一检查还要求 pkg_preinst/pkg_postinst/pkg_prerm/pkg_postrm 使用 $D 而非 ${D}。

  • 配方中的 S 现在必须有效。若未设置,不会自动创建目录。 do_unpack 完成时若 S 未指向存在的目录,会显示警告。

  • LICENSE 现在检查多许可证格式是否正确。 格式无效时会警告,例如列出多个许可证却未使用运算符说明其关系。

其他变更

其他变更如下:

  • send-error-report 指定服务器地址时,现在必须在地址前使用 "-s" 选项。

  • oe-pkgdata-util 现在要求在 pkgdata 目录前使用 "-p",该目录参数改为可选。 如果省略,脚本会运行 BitBake,从构建环境查询 PKGDATA_DIR。