版本 1.5 (dora)

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

主机依赖变更

OpenEmbedded 构建系统对主机新增以下要求:

  • Python 2.7.3+

  • Tar 1.24+

  • Git 1.7.8+

  • 如果使用 Make 3.82,必须是已打补丁的版本。多数提供 3.82 的发行版已包含补丁。

如果构建主机的 Linux 发行版未提供这些包,可安装并使用 Buildtools 压缩包, 它提供类似 SDK 的环境,包含这些工具。

更多信息见“所需的 Git、tar、Python、make 和 gcc 版本”。

atom-pc 板级支持包(BSP)

atom-pc 硬件参考 BSP 已由 genericx86 取代。 新 BSP 不保证在所有 x86 硬件上运行,但覆盖范围比 atom-pc 更广。

备注

还为 64 位 Atom 系统新增了 genericx86-64 BSP。

BitBake

BitBake 有以下变更:

  • 现在支持 _remove 运算符。配方中名称包含 _remove_ 或以 _remove 结尾的函数、变量等必须重命名,以避免意外行为。

  • 移除了全局方法池。它用途有限,且会使不同配方中的同名函数冲突。

  • 移除 "none" 服务器后端。"process" 已长期作为可靠的默认后端。

  • 移除 bitbake-runtask 脚本。

  • bitbake.conf 默认不再将 ${P} 和 ${PF} 加入 PROVIDES。 这些版本特定条目很少使用,且由于 BitBake 依赖解析方式, 使用时可能同时构建两个版本,而非只构建一个。

QA 警告

软件包 QA 检查有以下变更:

  • 如果自定义了 ERROR_QA 或 WARN_QA,请检查是否包含所有希望报告的 问题。旧版本存在错误:未在两者中提及的项也被当作警告, 导致若干重要项未包含在 WARN_QA 默认值中。 所有可能的 QA 检查现已记录于“insane”。

  • 新增 QA 检查,检测是否安装 /usr/share/info/dir。 如果 "make install" 安装了它,配方应在 do_install 中删除。

  • 使用 buildhistory 时,软件包版本倒退检查现在由标准 QA 项控制。 如果自定义了 ERROR_QA 或 WARN_QA 并仍希望执行此检查, 应按预期处理方式向其中一个加入 "version-going-backwards"。 详情见“insane”。

目录布局变更

目录有以下变化:

  • 输出 SDK 安装器的名称现在通过 SDK_NAME 包含镜像名和调优架构。

  • 镜像及相关文件现在安装到机器专属目录,而不再与多机器输出共用父目录。 DEPLOY_DIR_IMAGE 仍指向当前 MACHINE 的镜像目录, 需要引用该位置时都应使用它。runqemu 通过该变量寻找镜像和内核, 并运行 BitBake 确定目录;也可在外部环境设置 DEPLOY_DIR_IMAGE。

  • 启用 buildhistory 时,输出写入 Build Directory,而不是 TMPDIR, 便于删除后者时保留构建历史。生成 SDK 的数据还会按 IMAGE_NAME 分开。

  • 启用 buildhistory 时,输出写入 Build Directory, 而不是 TMPDIR,便于删除后者时保留构建历史。 生成 SDK 的数据还会按 IMAGE_NAME 分开。

  • 打包产生的 pkgdata 目录合并为单个机器专属目录, 位于 sysroots 下,路径为 tmp/sysroots/machine/pkgdata。

缩短 Git SRCREV 值

BitBake 现在将 SRCPV 中 Git 修订号从通常的 40 字符缩为 10 字符, 改善路径和文件名的可用性。相关上下文中相邻修订碰撞概率极低,应是安全的; 相距很远的碰撞对这些值的用法影响不大。

IMAGE_FEATURES

IMAGE_FEATURES 有以下变更:

  • 现在验证其值,避免无效功能条目。部分用户错误地将包名加入此变量, 而非 IMAGE_INSTALL,这并不能把软件包加入镜像,新检查旨在发现此类情况。 有效功能来自 PACKAGE_GROUP 定义、COMPLEMENTARY_GLOB, 以及 IMAGE_FEATURES 新增的 "validitems" 变量标志。 后者允许添加未由前两种机制提供的功能。

  • 不再支持已弃用的 "apps-console-core"。它实际仅启用启动画面, 如需此功能,请将 "splash" 加入 IMAGE_FEATURES。

/run

引入 FHS 3.0 的 /run 目录。部分影响见 此处。 这也要求修改向 /var/run 安装文件的配方,修改指南见 此处。

镜像配方中的包管理器数据库删除

core-image-minimal 不再将 remove_packaging_data_files 加入 ROOTFS_POSTPROCESS_COMMAND。现在 IMAGE_FEATURES 不含 "package-management" 时会自动处理。 自定义镜像配方如有此添加语句,应移除,因为它既多余,又可能干扰安装后脚本。

镜像仅在发生变更时重建

do_rootfs 及相关镜像构建任务不再标记 "nostamp", 因此只在输入变化时重执行。过去每次请求都会重建镜像,而非仅在必要时。

任务配方

移除了此前已弃用的 task.bbclass。原来继承它的配方应从 task-* 重命名为 packagegroup-*,并改为继承 packagegroup。

详情见“packagegroup”。

BusyBox

默认将 BusyBox 拆分为两个二进制文件:需要的组件使用 suid root,其他组件使用另一份。 这使优化成为可能,并按上游建议移除 tinylogin。 将 BUSYBOX_SPLIT_SUID 设为 "0" 可禁用拆分。

自动化镜像测试

新增基于 testimage 的自动化镜像测试框架, 取代旧的 imagetest-qemu。

使用方法见 Yocto Project 测试环境手册的 “执行自动化运行时测试”。

构建历史

构建历史有以下变更:

  • 已安装包大小:镜像的 installed-package-sizes.txt 现在记录各包安装文件的大小, 而不是压缩包归档大小。

  • 依赖图 depends*.dot 现在使用实际包名,不再将连字符、点和加号替换为下划线。

  • buildhistory-diff 和 buildhistory-collect-srcrevs 改善了命令行处理。 新语法见各工具的 --help。

更多信息见 Yocto Project 开发任务手册的 使用 buildhistory 保持构建输出质量。

udev

udev 有以下变更:

  • 不再通过 RRECOMMENDS 自动引入 udev-extraconf,因为它本应可选。 如需额外规则,请将其加入镜像。

  • 不再通过 RRECOMMENDS 引入 pciutils-ids 或 usbutils-ids。 udev 自身不需要它们,移除可节省约 350KB。

已移除和重命名的配方

  • 移除 linux-yocto 3.2 内核。

  • libtool-nativesdk 重命名为 nativesdk-libtool。

  • tinylogin 移除,由 Busybox 的 suid 部分取代,详情见“BusyBox”。

  • external-python-tarball 重命名为 buildtools-tarball。

  • web-webkit 移除,功能由 midori 取代。

  • imake 移除,已无其他配方需要。

  • transfig-native 移除,已无其他配方需要。

  • anjuta-remote-run 移除,Anjuta IDE 集成已多个版本未获正式支持。

其他变更

其他变更简述如下:

  • run-postinsts:实现通用化。

  • base-files:移除多余的 media/xxx 目录。

  • alsa-state:默认提供空 asound.conf。

  • classes/image:确保 BAD_RECOMMENDATIONS 支持重命名前的包名。

  • classes/rootfs_rpm:为 RPM 实现 BAD_RECOMMENDATIONS。

  • systemd:若 DISTRO_FEATURES 不含 systemd,移除 systemd_unitdir。

  • systemd:如果有 systemd 单元文件且发行版未启用 sysvinit,移除 init.d。

  • libpam:对 OTHER 条目拒绝所有服务。

  • image:移动 runtime_mapping_rename 以避免 multilib 冲突。 详情见 YOCTO #4993。

  • linux-dtb:使用内核构建系统生成 dtb。

  • kern-tools:从 guilt 切换到新的 kgit-s2q 工具。