在单个 bblayers.conf 上集成不同的 bsp 层时出现问题

Issue when integrating different bsp-layers on a single bblayers.conf

我正在尝试在单个 Yocto 存储库上为不同平台集成多个 BSP 层,以便轻松地为所有这些平台构建一个 Linux 基于 Yocto 的发行版。

我们的想法是维护一个包含所有可用层的 bblayers.conf,在 local.conf 上设置 PLATFORM 和 DISTRO,调用 bitbake 并获取该平台的最终图像。

使用为单个平台自定义的 bblayers.conf 设置 "build" 目录时,每个平台都会正确构建映像配方。

但是,当我将所有 bsp 层集成到一个 bblayers.conf 中时,某些平台的编译已被破坏。

具体问题是这样的:一个bsp层(meta-rockchip + meta-rockchip-extra)定义了一个recipes-graphics/mesa/mesa_%.bbappend,里面的内容是:

PROVIDES_remove = "virtual/libgles1 virtual/libgles2 virtual/egl virtual/libwayland-egl"

这改变了 poky 层上的 gstreamer 配方,在为元英特尔平台构建时出现此错误:

ERROR: Nothing PROVIDES 'virtual/egl' (but /data/yocto/yocto/sources/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-vaapi_1.12.2.bb, /data/yocto/yocto/sources/poky/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad_1.12.2.bb DEPENDS on or otherwise requires it)

我的问题是:

您认为根据选择的平台定义自定义 bblayers.conf 是个好习惯吗?在为不同的 BSP 层构建时,是否有其他方法可以完全禁用 BSP 层?你们中的一些人可以建议修复这个 rockchip-extra bsp-layer 问题吗?

提前致谢! :)

理论上,所有 BSP 层都应该遵循项目指南,以确保它们可以按照用户的意愿与其他 BSP 层混合。

https://www.yoctoproject.org/docs/latest/bsp-guide/bsp-guide.html

https://www.yoctoproject.org/docs/latest/dev-manual/dev-manual.html#best-practices-to-follow-when-creating-layers

不幸的是,供应商自己创建和维护的 BSP 层通常不符合这些标准,因为供应商只真正对展示他们自己的硬件感兴趣。他们可能不会测试混合 BSP 层。

您可以修复并通过 github 拉取请求提交给他们。否则,您可以做任何您希望对您有用的事情(分叉和修改等)。