gpt4 book ai didi

layer - 如何在 Yocto 中为特定机器启用/禁用特定 bbappend

转载 作者:行者123 更新时间:2023-12-02 02:47:53 29 4
gpt4 key购买 nike

我试图了解 Yocto 提供的为特定机器启用/禁用特定 bbappend 的机制。我读了这个链接(修改变量以支持不同的机器):

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

还找到了一些关于堆栈溢出的相关信息:

Machine specific layers in yocto

我曾尝试将所有这些信息付诸实践,但没有成功。这是我的特殊问题:

“x”平台的 BSP 层提供了一个 qtbase_%.bbappend,它修改了 meta-qt5 中的 qtbase 配方。我只需要在为 MACHINE="x"构建时才需要这个 qtbase_%.bbappend,而不是其他不同的机器。

这是在 x-bsp-layer 上定义的原始 qtbase_%.bbappend 的内容:

PACKAGECONFIG_GL   = "gles2"
PACKAGECONFIG_FONTS = "fontconfig"
PACKAGECONFIG_APPEND = " \
${@bb.utils.contains("DISTRO_FEATURES", "wayland", "xkbcommon-evdev", \
bb.utils.contains("DISTRO_FEATURES", "x11", " ", "libinput eglfs gbm", d), d)} \
"
PACKAGECONFIG_append = " ${PACKAGECONFIG_APPEND} kms accessibility sm"
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
PACKAGECONFIG_remove = "evdev"

每当我尝试为不同于“x”的平台构建图像时,编译都会被破坏:
| ERROR: Feature 'opengles2' was enabled, but the pre-condition 'config.win32 || (!config.watchos && !features.opengl-desktop && libs.opengl_es2)' failed.
| ERROR: Feature 'eglfs' was enabled, but the pre-condition '!config.android && !config.darwin && !config.win32 && features.egl' failed.
| ERROR: Feature 'gbm' was enabled, but the pre-condition 'libs.gbm' failed.

从 bblayers.conf 中删除 x-BSP-layer 可以解决问题,但这不是我正在寻找的解决方案。

我尝试使用先前链接中提供的信息来解决此问题。我以这种方式修改了 qtbase_%.bbappend 配方:
PACKAGECONFIG_GL_x   = "gles2"
PACKAGECONFIG_FONTS_x = "fontconfig"
PACKAGECONFIG_APPEND_x = " \
${@bb.utils.contains("DISTRO_FEATURES", "wayland", "xkbcommon-evdev", \
bb.utils.contains("DISTRO_FEATURES", "x11", " ", "libinput eglfs gbm", d), d)} \
"
PACKAGECONFIG_append_x = " ${PACKAGECONFIG_APPEND} kms accessibility sm"
FILESEXTRAPATHS_prepend_x := "${THISDIR}/${PN}:"
PACKAGECONFIG_remove_x = "evdev"

如您所见,我在所有配方变量后附加了“_x”后缀。假设(至少这是我的理解)那些“_x”使变量被分配,以防万一 PLATFORM="x"被定义。对?但它没有按预期工作,它产生了同样的问题。所以,在实践中,这意味着我什至不理解这种机制的基础知识。

你们中的一些人能对此提供一个很好的解释吗?我认为它应该对其他有同样问题的人有所帮助。非常感谢您的时间! :-)

最佳答案

只需在 .bbappend 文件中添加 COMPATIBLE_MACHINE = "x"即可。

As you can see, I appended "_x" suffix to all recipe variables



删除 .bbappend 文件中的所有“_x”后缀。

关于layer - 如何在 Yocto 中为特定机器启用/禁用特定 bbappend,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50818740/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com