对 Yocto 图层集进行版本控制的当前最佳实践



Yocto有一组独立的存储库,其中包含基本系统(Poky)和各种软件组件(此处的所有meta-*存储库,以及openembedded layer index)。因此,当您想要为特定设备和用途构建映像时,您需要签出一些存储库。

这些都由build目录中的conf/bblayers.confconf/local.conf文件捆绑在一起。但这是一个构建目录 — 它应该是一次性的,只包含可以根据请求轻松重新生成的信息。它确实如此 — 除了conf/bblayers.conf中的层列表和几个定义,例如定义要为其构建的目标系统的conf/local.conf中的MACHINE

我应该如何对这些信息进行版本控制?

目前我们有一个相当黑客的脚本,它组装构建目录并写入配置文件,但它不知道在更改时如何正确更新它们。

那么有更好的选择吗?最好是避免在签出/更新(使用子模块或repo)、oe-init-build-envinit 脚本(如果不存在,则创建构建目录)和使用适当的目标映像运行bitbake之间的任何额外步骤?

实际上,repo是管理具有所有所需存储库的清单文件的便捷工具。

然后,您可以使用TEMPLATECONF版本local.confbblayers.conf。以下是我们的做法: https://pelux.io/software-factory/master/chapters/baseplatform/building-PELUX-sources.html

Poky 发行版本身使用组合图层工具,该工具似乎旨在解决此特定问题。但是,使用此工具时,尚不清楚工作流程应该是什么样子。

关于默认的bblayers.conflocal.conf文件,您可以在项目中的任何位置对它们进行版本控制,并在调用oe-init-build-env后让脚本将它们复制到构建文件夹中,或者简单地使用meta-poky/conf/bblayers.conf.samplemeta-poky/conf/local.conf.sample,它们在首次创建构建目录时由oe-init-build-env自动安装。

现在,当您进行更改或添加图层时,您必须清除构建目录才能使.sample文件中的更改生效。