版本 1.7 (dizzy)

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

local.conf 中 QEMU PACKAGECONFIG 设置变更

QEMU 配方现在通过多个 PACKAGECONFIG 选项启用可选功能。 由于默认值设置方式变化,现有 build/conf/local.conf 需要改为追加 qemu-native 和 nativesdk-qemu 的 PACKAGECONFIG, 而不是直接设置。启用 QEMU 图形输出应使用:

PACKAGECONFIG_append_pn-qemu-native = " sdl"
PACKAGECONFIG_append_pn-nativesdk-qemu = " sdl"

最低 Git 版本

构建主机最低要求 Git 1.7.8, 因为 BitBake 的 Git 获取器现在需要 --list 选项。 主机版本不足时,可使用提供该版本的 buildtools 压缩包。 更多信息见 “所需的 Git、tar、Python、make 和 gcc 版本”。

Autotools 类变更

autotools* 有以下变更:

  • 默认使用独立的 :term:`Build Directory`:构建目录 B 现在与源码目录 S 分离,通常称为 B != S 或树外构建。

    软件若已支持独立构建目录,无需修改。否则,需要为软件打补丁以支持, 或将配方改为继承 autotools-brokensep, 而不是 autotools* 或 autotools_stage。

  • 运行 autoconf 时不再向 automake 传入 --foreign。 此选项表明软件不遵循 GNU 标准,因此不必分发 ChangeLog、AUTHORS 等文件。 多数上游软件自行启用 foreign 模式,该选项通常多余,但部分配方需要补丁。 可修改 configure.ac,向 AM_INIT_AUTOMAKE() 传入 "foreign"。 示例见 此提交。

禁用二进制配置脚本

部分核心配方现在禁用原来打包的二进制配置脚本,因为它们需要容易出错的路径替换。 通过这些脚本链接库的软件应改用更可靠的 pkg-config。 本版本涉及以下配方及配置脚本:

directfb (directfb-config)
freetype (freetype-config)
gpgme (gpgme-config)
libassuan (libassuan-config)
libcroco (croco-6.0-config)
libgcrypt (libgcrypt-config)
libgpg-error (gpg-error-config)
libksba (ksba-config)
libpcap (pcap-config)
libpcre (pcre-config)
libpng (libpng-config, libpng16-config)
libsdl (sdl-config)
libusb-compat (libusb-config)
libxml2 (xml2-config)
libxslt (xslt-config)
ncurses (ncurses-config)
neon (neon-config)
npth (npth-config)
pth (pth-config)
taglib (taglib-config)

对于上述少数上游尚未提供 pkg-config 的软件,也已在配方中补充支持。

glibc 2.20 取代 eglibc 2.19

eglibc 与 glibc 已十分接近,替换通常不要求其他链接 eglibc 的软件大幅修改。 不过,glibc 2.20 上游的若干小变化可能需要补丁,例如移除 _BSD_SOURCE 功能测试宏。

glibc 2.20 要求 Linux 内核 2.6.32 或更高版本,不能再与旧内核一起使用。

完整变更见 上游发布说明。

内核模块自动加载

module_autoload_* 已弃用,应改用 KERNEL_MODULE_AUTOLOAD。module_conf_* 现在也必须配合新的 KERNEL_MODULE_PROBECONF 使用。 新变量无需将模块名放入变量名,不仅简化用法,也使变量值正确纳入任务签名, 在变化时触发适当任务重执行。请将 module_autoload_* 引用替换为 KERNEL_MODULE_AUTOLOAD,并将设置了 module_conf_* 的模块加入 KERNEL_MODULE_PROBECONF。

QA 检查变更

QA 流程有以下变更:

  • 新增 file-rdeps 和 build-deps,分别验证文件依赖是否满足 (如包中脚本需要 /bin/bash),以及构建时依赖是否声明。 更多信息见“质量检查错误和警告消息”。

  • 软件包 QA 检查现在在新的 do_package_qa 任务中执行, 不再属于 do_package,以便更多并行执行。 通常无影响,但将打包任务标记为 noexec 的高度定制配方, 也需要禁用 do_package_qa。

  • do_populate_sysroot 期间覆盖文件现在触发错误,而不是警告。 配方不应覆盖其他配方写入系统根目录的文件,必须调整此类配方。

    如果配置或元数据变化在系统根目录留下孤立文件,也可能出现此错误。 解决方法是删除或移走 TMPDIR 后重新构建。 已完成且无需重建的内容会从共享状态缓存恢复,其余构建可正常继续。

已移除的配方

以下配方已移除:

  • x-load:在所有基于 Cortex 的 TI SoC 上已由 U-Boot SPL 取代。 旧开发板可使用 meta-ti 中仍维护的配方。

  • ubootchart:已过时,新增 bootchart2 配方替代其功能。

  • linux-yocto 3.4:移除 3.4 支持,保留 3.10、3.14,新增 3.17。

  • eglibc:由 glibc 取代,详情见“glibc 2.20 取代 eglibc 2.19”。

其他变更

其他变更如下:

  • 构建历史现在写入 build-id.txt 而不是 build-id,并包含 BitBake 启动构建时打印的完整构建头。应手动删除现有构建历史仓库中的旧 "build-id", 避免混淆。功能详情见 Yocto Project 开发任务手册的 使用 buildhistory 保持构建输出质量。