版本 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 检查与验证有以下变化:
其他变更
其他变更如下:
send-error-report指定服务器地址时,现在必须在地址前使用 "-s" 选项。oe-pkgdata-util现在要求在pkgdata目录前使用 "-p",该目录参数改为可选。 如果省略,脚本会运行 BitBake,从构建环境查询 PKGDATA_DIR。