版本 1.4 (dylan)

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

BitBake

差异如下:

  • 注释续行:如果注释以续行符(\)结尾,下一行也必须为注释, 否则现在会警告。应移除续行符,或确保下一行也是注释。

  • 软件包名称覆盖:运行时包特定变量 RDEPENDS、RRECOMMENDS、 RSUGGESTS、RPROVIDES、RCONFLICTS、RREPLACES、 FILES、ALLOW_EMPTY,以及安装和卸载前后函数 pkg_preinst、 pkg_postinst、pkg_prerm、pkg_postrm,始终应带有软件包名称覆盖。 例如主包使用 RDEPENDS_${PN} 而非 RDEPENDS。 BitBake 解析配方时会执行更严格的检查。

构建行为

差异如下:

  • 共享状态代码:已优化以避免不必要的任务。例如,以下命令不再填充目标系统根目录, 因为这并不必要:

    $ bitbake -c rootfs some-image
    

    系统仅需提取输出包内容、重新创建包并构建根文件系统。 除非缺少依赖声明,否则不太可能产生问题。

  • 扫描目录名:扫描 SRC_URI 文件时,现在使用 FILESOVERRIDES 而非 OVERRIDES 生成目录名。一般而言,旧值已包含在 FILESOVERRIDES 中。但如果依赖自己添加到 OVERRIDES 的额外值,可能需要也加入 FILESOVERRIDES,除非已通过 MACHINEOVERRIDES 或 DISTROOVERRIDES 添加。相关变更见 “变量”。

代理与源码获取

新增 oe-git-proxy,取代过去处理代理和从 Git 获取源码的方法。 用法见 meta-yocto/conf/site.conf.sample。

自定义 interfaces 文件(netbase 变更)

如果通过 netbase 的追加文件定制 etc/network/interfaces, 现在应改为为 init-ifupdown 创建追加文件。 该配方位于 OpenEmbedded-Core (OE-Core) 的 meta/recipes-core/init-ifupdown。 追加文件的用法见 Yocto Project 开发任务手册的 “通过自己的层追加其他层元数据”。

远程调试

Eclipse IDE 远程调试支持拆分为镜像功能 eclipse-debug, 对应 packagegroup-core-eclipse-debug 包组。 过去通过 tools-debug 镜像功能及 packagegroup-core-tools-debug 包组提供。

变量

以下变量发生变化:

  • SANITY_TESTED_DISTROS:现在使用主机发行商 ID 加版本构成的发行版 ID, 而非描述字段,例如 "Ubuntu 12.10" 变为 "Ubuntu-12.10"。 如果未显式设置此变量,或将其设为 "",无需关注此变化。

  • SRC_URI:用于寻找所引用文件的 FILESPATH 默认值,移除了 ${PN}、${PF}、 ${P} 和 FILE_DIRNAME 目录。 极少数依赖这些目录的配方需要显式添加路径,或重新安排文件。 常见位置仍由 ${BP}、${BPN} 和 "files" 覆盖,它们仍在 FILESPATH 默认值中。

使用 RPM 的目标包管理

启用运行时包管理并选择 RPM 后端时,现在安装 Smart 代替 Zypper, 用于软件下载、依赖解析和升级。使用帮助可在目标上运行:

smart --help

已移动的配方

由于 OpenEmbedded-Core 中没有使用者,以下配方已迁移:

  • clutter-box2d:移至 meta-oe。

  • evolution-data-server:移至 meta-gnome。

  • gthumb:移至 meta-gnome。

  • gtkhtml2:移至 meta-oe。

  • gupnp:移至 meta-multimedia。

  • gypsy:移至 meta-oe。

  • libcanberra:移至 meta-gnome。

  • libgdata:移至 meta-gnome。

  • libmusicbrainz:移至 meta-multimedia。

  • metacity:移至 meta-gnome。

  • polkit:移至 meta-oe。

  • zeroconf:移至 meta-networking。

移除与重命名

移除或重命名的内容如下:

  • evieext:2008 年起已从 xserver 移除,因此删除。

  • Gtk+ DirectFB:上游 Gtk+ 自 2.18 不再支持,因此移除支持。

  • libxfontcache / xfontcacheproto:2008 年已从 Xorg 服务器移除,因此删除。

  • libxp / libxprintapputil / libxprintutil / printproto: XPrint 服务器 2008 年已从 Xorg 移除,因此删除。

  • libxtrap / xtrapproto:上游功能已损坏,因此移除。

  • linux-yocto 3.0 内核:移除并新增 3.8,仍保留 3.2 和 3.4。

  • lsbsetup:移除,功能由 lsbtest 提供。

  • matchbox-stroke:一直仅是概念验证,因此移除。

  • matchbox-wm-2 / matchbox-theme-sato-2:无人维护,因此移除。 仍提供 matchbox-wm 和 matchbox-theme-sato。

  • mesa-dri:重命名为 mesa。

  • mesa-xlib:不再有用,移除。

  • mutter:无人使用且配方陈旧,移除。

  • orinoco-conf:已过时,移除。

  • update-modules:不再使用,内核模块的 postinstall 和 postrm 现在无需此脚本即可完成相同工作。

  • web:无人维护,由 web-webkit 取代。

  • xf86bigfontproto:上游自 2007 年默认禁用且无人使用,因此移除。

  • xf86rushproto:xserver 对它的依赖是多余的,已于 2005 年移除,因此删除。

  • zypper / libzypp / sat-solver:移除。使用 RPM 打包并启用目标包管理时, 其功能由 Smart(python-smartpm)取代。