【问题标题】:bitbake doesn't find newer recipebitbake 没有找到更新的食谱
【发布时间】:2015-06-23 15:58:05
【问题描述】:

我试图在我现有的 OE 环境中包含从当前 yocto 版本升级的自动工具,而不升级我所有现有的包,所以我在我的 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 层,而不是给定包的特定搜索详细信息。

谢谢, 乙

【问题讨论】:

  • 不是解决方案,但您可以使用 bitbake-layers show-overlayedbitbake-layers show-recipes 检查哪些食谱可用。它将显示这些配方来自哪些版本和哪些层。如果您需要进一步的帮助,请将这两个命令的输出发布到例如粘贴箱。
  • 谢谢 - 不知道 bitbake-layers。

标签: yocto bitbake openembedded


【解决方案1】:

如果两个层都有一个配方版本,则层优先级将决定使用哪一个。我猜你的原始层有更高的优先级(你可能不想在你的情况下改变它)。层优先级通过BBFILE_PRIORITY设置。

一种解决方案是在 local.conf 中使用 PREFERRED_VERSION_automake = "1.14.%" 来告诉 bitbake 始终首选 1.14.x 版本。或者,您可以添加自己的具有高优先级的层,其中仅包含 automake 配方。

【讨论】:

  • 创建我自己的层基本上就是我正在做的事情(我实际上并没有用整个 yocto 有效负载填充 yocto 层,只是一些食谱。)在这种情况下,优先级是相同的,但是不仅优先级相同,layer.conf 文件中的层名称也相同(“核心”),这似乎令人困惑。一旦我给新的 yocto 层起了一个新的名字,事情就开始按我的预期工作了。感谢您提供有关 PREFERRED_VERSION 的提示。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-04-22
  • 2021-11-01
  • 1970-01-01
  • 2018-04-21
  • 2018-11-27
  • 1970-01-01
  • 2018-03-20
相关资源
最近更新 更多