Yocto Dunfell 错误'No recipes available for'在单个自定义元层中使用多台计算机



我维护了一个与Dunfall兼容的自定义Yocto元层。它支持基于Microchip SAMA5D27处理器的板。我在这个层中有几个bbappend文件,它们只适用于meta-atmel和其他Microchip特定包中的文件。

现在,我想重用这个自定义元层的许多部分,并支持来自不同供应商的新处理器。我在我的层中创建了自己的新图像配方,其中不包括这些仅与Microchip相关的bbappend文件。

问题是Yocto抛出了关于我的bbappend文件的错误"No recipes available for"。该错误似乎发生在解析过程中,并且没有考虑我是否在当前目标中使用配方。

我已经广泛地寻找解决方案,但到目前为止都没有找到。如何使用1个元层并维护不同的bbappend文件,同时能够为不同的目标构建切换MACHINE变量?

Bitbake版本:

root@buildmachine:/$ bitbake --version
BitBake Build Tool Core version 1.46.0

我曾尝试在这些bbappend文件中使用COMPATIBLE_HOST和COMPATIBLE_MACHINE变量,但错误仍然存在。

# Only compatible with sama5d27 microchip
COMPATIBLE_HOST = "arm-poky-linux-musleabi"
COMPATIBLE_MACHINE = "sama5d27-wlsom1-ek-sd"

错误输出:

root@buildmachine:~/Desktop/compulab/build-cmdline$ MACHINE=iot-gate-imx8 bitbake iot-gate-imx8-image
WARNING: Host distribution "ubuntu-20.04" has not been validated with this version of the build system; you may possibly experience unexpected failures. It is recommended that you use a tested distribution.
Loading cache: 100% |#######################################################################################################################################################| Time: 0:00:01
Loaded 4938 entries from dependency cache.
ERROR: No recipes available for:
/home/me/Desktop/compulab/sources/meta-proprietary/recipes-bsp/at91bootstrap/at91bootstrap_3.10.0.bbappend
/home/me/Desktop/compulab/sources/meta-proprietary/recipes-bsp/dt-overlay-at91/dt-overlay-at91_git.bbappend
/home/me/Desktop/compulab/sources/meta-proprietary/recipes-bsp/libubootenv/libubootenv_%.bbappend
/home/me/Desktop/compulab/sources/meta-proprietary/recipes-bsp/u-boot/u-boot-at91_2020.01.bbappend
/home/me/Desktop/compulab/sources/meta-proprietary/recipes-core/initrdscripts/initramfs-debug_%.bbappend
/home/me/Desktop/compulab/sources/meta-proprietary/recipes-httpd/nginx/nginx_%.bbappend
/home/me/Desktop/compulab/sources/meta-proprietary/recipes-kernel/linux/linux-at91_5.4.bbappend

您发现的问题是,当您切换到另一个MACHINE时,Yocto无法将.bbappend文件与任何配方相匹配。

只有在启用了特定图层的情况下,才可以通过有条件地包含.bbappend文件来解决此问题。Yocto通过BBFILE_DYNAMIC变量支持这一点。

例如,如果您将.bbappend文件保存在自己层内的dynamic-layers/meta-atmel文件夹中,并且只想在使用meta-atmel时包含这些.bbappend文件,则将以下内容添加到layer.conf中:

BBFILES_DYNAMIC += "
meta-atmel:${LAYERDIR}/dynamic-layers/meta-atmel/recipes-*/*/*.bbappend 
meta-atmel:${LAYERDIR}/dynamic-layers/meta-atmel/recipes-*/*/*/*.bbappend 
"

(根据需要调整路径/文件夹深度(。

这意味着,如果meta-atmel包含在层列表中,则将两个dynamic-layers/...路径添加到搜索路径中。

不能追加到一个一开始就不存在的配方中。

如果配方存在:

  • 在91bootstrap_.10.0.bb
  • dt-overlay-at91_git.bb

确保将其图层添加到bblayers.conf.

相关内容