版本 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 有以下变更:
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-yocto3.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工具。