0

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

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

当使用为单个平台定制的 bblayers.conf 设置“构建”目录时,每个平台都会正确构建图像配方。

但是,当我将所有 bsp-layers 集成到单个 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问题的解决方案吗?

提前非常感谢!:)

4

1 回答 1

1

理论上,所有 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 拉取请求将其提交给他们。否则,您可以做任何您希望对您有用的事情(分叉和修改等)。

于 2018-06-07T17:43:36.523 回答