BitBake 找不到更新的配方。

4

我尝试将当前yocto版本的升级后的自动工具包含到我的现有OE环境中,而不需要升级所有现有软件包,因此我在我的conf文件中添加了yocto作为一个层:

BBLAYERS += " \
...
        ${OEBASE}/sources/meta-yocto/meta \
...
        ${OEBASE}/sources/oe-core/meta \

在原始的oe-core层中,我有automake_1.12.3:
../sources/oe-core/meta/recipes-devtools/automake/
├── automake
│   ├── path_prog_fixes.patch
│   ├── prefer-cpio-over-pax-for-ustar-archives.patch
│   ├── py-compile-compile-only-optimized-byte-code.patch
│   └── python-libdir.patch
├── automake_1.12.3.bb
└── automake.inc

在Yocto层中:
../sources/meta-yocto/meta/recipes-devtools/automake/
├── automake
│   ├── buildtest.patch
│   ├── py-compile-compile-only-optimized-byte-code.patch
│   └── python-libdir.patch
├── automake_1.14.1.bb
└── automake.inc

然而,bitbake 只能找到1.12.3版本:

$ bitbake -s | grep automake
automake                                           :1.12.3-r2                          
automake-native                                    :1.12.3-r2                          
nativesdk-automake                                 :1.12.3-r2  

然而,我相信图层配置和路径是正确的,因为如果我在yocto图层中通过复制/重命名automake_1.14.1.bb来创建一个虚拟配方zz:

../sources/meta-yocto/meta/recipes-devtools/zz
├── automake
│   ├── buildtest.patch
│   ├── py-compile-compile-only-optimized-byte-code.patch
│   └── python-libdir.patch
├── automake.inc
└── zz_1.14.1.bb

然后,bitbake能够很好地找到它:
$ bitbake -s | grep zz
nativesdk-zz                                       :1.14.1-r0                          
zz                                                 :1.14.1-r0                          
zz-native                                          :1.14.1-r0                          

这让我想知道bitbake是否有某种缓存状态,导致它跳过搜索更新版本的automake。
有没有办法强制bitbake忽略其缓存并重新搜索,并详细说明它正在使用的确切搜索过程?(我使用了-vDDD,但仅显示它添加了Yocto层,而没有给出给定包的具体搜索细节)。
谢谢, B

2
不是解决方案,但您可以使用 bitbake-layers show-overlayedbitbake-layers show-recipes 命令来检查可用的配方。它会显示这些配方来自哪些版本和哪些层。如果需要进一步帮助,请将这两个命令的输出发布到 pastebin 等网站上。 - Anders
谢谢 - 我不知道有 bitbake-layers 这个工具。 - Brad
1个回答

6
层次优先级会决定如果两个层次中都有一个版本的配方,哪个会被使用。我猜你原始的层次具有更高的优先级(在你的情况下,你可能不想改变它)。层次优先级通过BBFILE_PRIORITY设置。
解决方案之一是在你的local.conf文件中使用PREFERRED_VERSION_automake = "1.14.%",告诉bitbake始终偏爱1.14.x 版本。或者,您可以添加具有高优先级的自己的层,其中仅包含automake配方。

2
创建自己的层是我正在做的事情(实际上我并没有用整个yocto负载填充yocto层,只有一些配方)。在这种情况下,优先级是相等的,但不仅优先级相等,而且layer.conf文件中的层名称也相同(“core”),这似乎让事情变得混乱。一旦我给新的yocto层一个新的名称,事情就开始按照我的预期工作了。感谢您提供PREFERRED_VERSION的提示。 - Brad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接