我正在尝试在单个Yocto存储库上为不同平台集成多个BSP层,以便轻松地为所有这些平台构建基于Linux Yocto的发行版。
我们的想法是维护一个bblayers.conf,其中包含所有可用层,在local.conf上设置PLATFORM和DISTRO,调用bitbake并获取该平台的最终图像。
使用为单个平台定制的bblayers.conf设置“build”目录时,每个平台都会正确构建映像配方。
但是,当我将所有bsp层集成到一个bblayers.conf中时,某些平台的编译已被破坏。
具体问题是:一个bsp层(meta-rockchip + meta-rockchip-extra)定义了一个食谱 - 图形/ mesa / mesa _%。bbappend里面有这个内容:
PROVIDES_remove = "virtual/libgles1 virtual/libgles2 virtual/egl virtual/libwayland-egl"
这改变了poky图层上的gstreamer配方,在构建meta-intel平台时出现此错误:
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)
我的问题是:
根据选择的PLATFORM,您认为定义自定义bblayers.conf是一个好习惯吗?有什么其他方法可以在构建另一个BSP层时完全禁用BSP层吗?你们有些人可以提出修复方案来解决这个摇滚乐额外的bsp层问题吗?
提前多多感谢! :)
答案 0 :(得分:1)
理论上,所有BSP层都应遵循项目指南,以确保它们可以根据用户的意愿与其他BSP层混合。
https://www.yoctoproject.org/docs/latest/bsp-guide/bsp-guide.html
不幸的是,供应商自己创建和维护的BSP层通常不符合这些标准,因为供应商只对展示自己的硬件感兴趣。混合BSP层并不是他们可能会测试的东西。
您可以处理修复并通过github pull请求将其提交给他们。否则你可以做任何你想做的事情(分叉和修改等)。