版本 1.6 (daisy)
本节介绍如何从上一版本迁移到 Yocto Project 1.6 版本(代号“daisy”)。
archiver 类
archiver 已重写,配置也更简单。源码归档器的详情见 Yocto Project 开发任务手册的 “在产品生命周期中维护开源许可证合规”。
打包变更
打包有以下变更:
binutils不再生成binutils-symlinks,改由update-alternatives管理目标上首选的binutils变体。tc(流量控制)工具从主
iproute2拆分到iproute2-tc。gtk-engines的 schema 移至专门的gtk-engines-schemas包。启用 thumb 优化的
armv7a软件包架构后缀改为正确的 "t2"。 1.5 中未使用此后缀,因此软件包源中的架构名称会变化。
BitBake
BitBake 有以下变更。
Git 获取要求匹配分支
通过 SRC_URI 从 Git 仓库获取源码时,BitBake 现在会针对分支验证 SRCREV。分支指定方式如下:
SRC_URI = "git://server.name/repository;branch=branchname"
若未指定,则在默认 "master" 分支查找。
如果需要跳过检查,例如获取不属于任何分支的标签对应修订版本, 可在 SRC_URI 的 URL 末尾添加 ";nobranch=1"。
Python 定义替换
BitBake 移除了 bb 模块中此前已弃用的定义,应改用子模块中的对应项:
bb.MalformedUrl:使用bb.fetch.MalformedUrl。bb.encodeurl:使用bb.fetch.encodeurl。bb.decodeurl:使用bb.fetch.decodeurl。bb.mkdirhier:使用bb.utils.mkdirhier。bb.movefile:使用bb.utils.movefile。bb.copyfile:使用bb.utils.copyfile。bb.which:使用bb.utils.which。bb.vercmp_string:使用bb.utils.vercmp_string。bb.vercmp:使用bb.utils.vercmp。
SVK 获取器
BitBake 已移除 SVK 获取器。
控制台错误输出重定向
BitBake 控制台界面现在向 stderr 而不是 stdout 输出错误。
如果通过管道或重定向传递 bitbake 输出,并希望保留错误,
需要在命令行末尾添加 2>&1 或等效内容。
task-taskname 覆盖
任务名中的下划线现在在 task-taskname 覆盖中替换为连字符,
使其正常工作。例如,do_populate_sdk 的覆盖是 task-populate-sdk。
变量变更
以下变量有变化。构建系统变量的详情见“变量表”。
TMPDIR
TMPDIR 不能再位于 NFS 挂载点上。 NFS 不提供完整的 POSIX 锁和 inode 一致性,用它存储 TMPDIR 可能产生意外问题。
启动时会检查;若发现位于 NFS 挂载点,就会报错。
PRINC
PRINC 已弃用,构建中发现时会警告。因变更递增 PR 应改用 PR 服务。
更多信息见 Yocto Project 开发任务手册的
“使用 PR 服务”。
IMAGE_TYPES
IMAGE_TYPES 的 "sum.jffs2" 选项改为符合处理顺序的 "jffs2.sum"。
COPY_LIC_MANIFEST
COPY_LIC_MANIFEST 现在必须设为 "1" 才启用,不能再使用任意值。
COPY_LIC_DIRS
COPY_LIC_DIRS 现在必须设为 "1" 才启用,不能再使用任意值。
PACKAGE_GROUP
PACKAGE_GROUP 重命名为 FEATURE_PACKAGES,更准确地反映用途。
旧名称仍可用,但构建系统会发出警告。
预处理与后处理命令变量行为
以下变量现在接受分号分隔的函数调用列表,而不是任意 shell 命令:
迁移时可直接将 shell 命令包装到 shell 函数,再调用该函数。例如:
my_postprocess_function() {
echo "hello" > ${IMAGE_ROOTFS}/hello.txt
}
ROOTFS_POSTPROCESS_COMMAND += "my_postprocess_function; "
软件包测试(ptest)
软件包测试(ptest)默认会构建但不安装。用法见 “使用 ptest 测试软件包”, 另见“ptest”。
构建变更
已知能正常工作的部分配方,以及所有继承 cmake 的配方,
现在默认分离构建目录与源码目录。后续版本的 autotools*
也将默认使用独立 Build Directory。如果基于 Autotools 的软件不能树外构建,
配方应改为继承 autotools-brokensep,
而不是 autotools* 或 autotools_stage。
qemu-native
qemu-native 默认不构建基于 SDL 的图形输出支持。
启用时需在 build/conf/local.conf 添加:
PACKAGECONFIG_pn-qemu-native = "sdl"
ASSUME_PROVIDED += "libsdl-native"
备注
默认 build/conf/local.conf 已包含这些语句。 如果构建无图形界面的系统并使用默认文件,需要注释掉这两行。
core-image-basic
core-image-basic 重命名为 core-image-full-cmdline。
相应地,packagegroup-core-basic 也重命名为 packagegroup-core-full-cmdline。
许可证
顶层 LICENSE 文件已修改,以更准确地说明 OpenEmbedded-Core (OE-Core) 各组件的许可证,但许可本身未变。
通常没有副作用,但有些配方在 LIC_FILES_CHKSUM 中引用
${COREBASE}/LICENSE,其校验和必须从 3f40d7994397109285ec7b81fdeb3b58
改为 4d92cd373abda3937c2bc47fbc49d690。
更好的方式是让 LIC_FILES_CHKSUM 指向配方所构建源码自带的许可证说明文件,
尽量避免引用 ${COREBASE}/LICENSE。
CFLAGS 选项
默认 CFLAGS 移除了 "-fpermissive"。 受此影响而构建失败的配方,需要修复编译器报告的问题, 或在该配方的 CFLAGS 中重新加入 "-fpermissive"。
自定义镜像输出类型
通过 IMAGE_FSTYPES 选择的自定义镜像输出类型, 如果依赖其他镜像类型,必须通过新的 IMAGE_TYPEDEP 声明。
任务
不再需要 do_package_write,已移除该任务。
update-alternative 提供者
默认 update-alternatives 提供者由 opkg 改为 opkg-utils,
解决了一些棘手的循环依赖。运行时包也从 update-alternatives-cworth
重命名为 update-alternatives-opkg。
virtclass 覆盖
virtclass 覆盖已弃用,应改用等效的 class 覆盖,
例如 virtclass-native 改为 class-native。
已移除和重命名的配方
以下配方已移除:
packagegroup-toolset-native:基本无人使用。linux-yocto-3.8:移除 3.8 支持,新增linux-yocto-3.10和linux-yocto-3.14。ocf-linux:功能由cryptodev-linux取代。genext2fs:构建系统不再使用,上游无人维护。js:提供的古老 Mozilla JavaScript 引擎已不再需要。zaurusd:移至meta-handheld。eglibc 2.17:由eglibc 2.19取代。gcc 4.7.2:由现已稳定的gcc 4.8.2取代。external-sourcery-toolchain:现在于meta-sourcery维护。linux-libc-headers-yocto 3.4+git:默认使用linux-libc-headers3.10。meta-toolchain-gmae:已过时。packagegroup-core-sdk-gmae:已过时。packagegroup-core-standalone-gmae-sdk-target:已过时。
已移除的类
以下类已过时并移除:
module_strippkg_metainfopkg_distributeimage-empty
参考板级支持包(BSP)
参考 BSP 有以下变更:
ARM 参考硬件 BeagleBoard(
beagleboard)由 BeagleBone(beaglebone)取代。MIPS 参考硬件 RouterStation Pro(
routerstationpro) 由 EdgeRouter Lite(edgerouter)取代。
旧 beagleboard 和 routerstationpro BSP 仍可在新的 meta-yocto-bsp-old
层中获得,位于 源码仓库 的 https://git.yoctoproject.org/meta-yocto-bsp-old/。