Bitbake:“元数据不确定,需要修复”

问题描述 投票:0回答:10

我正在构建 Bitbake 配方并收到以下错误消息:

ERROR: When reparsing virtual:native:/path/to/poky/meta/recipes-devtools/cve-check-tool/cve-check-tool_5.6.4.bb.do_populate_cve_db, the basehash value changed from 0b637979bcb5db4263f9ed97497a6330 to bcd28a5efe646ed4d327fefa349f889c. The metadata is not deterministic and this needs to be fixed.

这会在干净的版本中重现(在

bitbake -c cleanall -c cleansstate <recipe>
之后)。

这个错误的原因是什么?上游版本没有修改配方。

yocto bitbake
10个回答
10
投票

我使用的修复方法是转到该食谱并在最后添加一个空行,这将有助于 bitbake 重新识别该食谱


8
投票

以下是添加此诊断消息的yocto补丁 https://patchwork.openembedded.org/patch/133517/

这是提交消息,解释了其原因以及获取问题更多详细信息的可能方法:

Bitbake 可以解析 Cooker 和 Worker 中的元数据 构建。如果元数据不确定,它可能会在 这两个解析让事情变得很混乱。事实证明是 目前很难调试这些问题。

此补丁确保原始解析的基本哈希值被传递 进入工人并在重新分析时检查这些 一致性。如果不一致,用户会看到一条错误消息 找到了。

siggen.py 中有调试代码(请参阅“慢但可能对 调试不匹配的基哈希”注释代码),我们不启用此功能 由于性能问题默认。如果您遇到此消息, 启用此代码,您将在 tmp/stamps 中找到“sigbasedata”文件 它应该对应于此错误消息中显示的哈希值。 文件上的 bitbake-diffsigs 应显示哪些变量 改变。

签字人:理查德·普迪


8
投票

我偶然发现了类似的错误。对我来说,它发生在 do_install 例程中。我的目标是存储一个文件的副本,其名称附加有 ${DATETIME} ,指的是特定位置的构建时间。

显然,食谱在构建过程中被解析多次,并且由于第二次解析时时间已更改,因此插入了不同的 ${DATETIME} 值,因此元数据被识别为已更改。


6
投票

最简单的解决方案:

touch <recipename>
。然后在你的食谱上运行
cleansstate
。然后从这里开始照常进行。


4
投票

它对我删除菜谱的共享缓存有帮助:

bitbake recipename -c cleansstate

然后,一切都像魅力一样发挥作用。


2
投票

发生这种情况是因为任务被评估两次,第一次是由 Cooker 评估,第二次是由 Bitbake Worker 评估。任务哈希会计算两次,如果不匹配,则认为元不稳定。基本哈希值是根据任务脚本中使用的变量计算得出的。因此,如果您使用与时间相关的变量(例如 DATETIME),您将收到此哈希不匹配错误。为了避免此错误,您需要使用 VarFlags 从哈希计算中排除变量。

do_something[vardepsexclude]="DATETIME"

在这里您可以找到更详细的解释。 https://www.kc8apf.net/2017/01/tired-of-taskhash-mismatch/


1
投票

不管怎样,这样做让我明白了:

devtool modify <recipe>
devtool reset <recipe>

1
投票

如果您在构建时修改配方,也会发生这种情况...

这意味着如果您在构建过程中编辑配方文件,您所说的错误就会发生。如果这是您的情况,只需完成编辑并重新启动构建,它应该可以工作。我也遇到过这样的情况,解决了。


0
投票

当配方包含更改数据并且您尝试重建它时,会发生这种情况,避免这种情况的一种方法是删除 tmp/ 目录[不是一个好的解决方案],但这是最不可能的解决方案。


0
投票

对于像我这样的 yocto 菜鸟来说。我还发现,如果配方将注释掉的行附加到任务中,则会发生此错误。所以我的食谱附加到 do_deploy 任务,但有些行前面有一个 #,当您执行或不执行干净命令时,它会生成此错误。即:

do_deploy:append () {
  cp a b
# cp b c
}
© www.soinside.com 2019 - 2024. All rights reserved.