Yocto Dunfell 错误“没有可用的食谱”,单个自定义元层中的多台机器

2024-03-28

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

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

问题是 Yocto 会针对我的 bbappend 文件抛出错误“没有可用的食谱”。该错误似乎是在解析期间发生的,并且没有考虑我是否在当前目标中使用该配方。

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

比特烘烤版本:

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

您发现的问题是 Yocto 无法匹配.bbappend当您切换到另一个食谱时将文件保存到任何食谱MACHINE.

您可以通过有条件地包括您的.bbappend仅当启用特定层时才文件。 Yocto 通过以下方式支持这一点BBFILE_DYNAMIC https://www.yoctoproject.org/docs/latest/mega-manual/mega-manual.html#var-BBFILES_DYNAMIC多变的。

例如,如果您保留您的.bbappend文件在dynamic-layers/meta-atmel您自己的图层中的文件夹,并且您只想包含这些.bbappend文件如果meta-atmel正在使用中,然后将以下内容添加到您的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/...到搜索路径的路径。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Yocto Dunfell 错误“没有可用的食谱”,单个自定义元层中的多台机器 的相关文章

随机推荐