web-dev-qa-db-ja.com

Bitbake:「メタデータは確定的ではなく、これを修正する必要があります」

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>の後)。

このエラーの理由は何ですか?レシピは上流バージョンから変更されていません。

8

以下は、この診断メッセージを追加するヨクトパッチです https://patchwork.openembedded.org/patch/133517/

これがコミットメッセージで、その理由と問題の詳細を取得するための可能な方法を説明しています。

Bitbakeは、ビルド中にクッカーとワーカーでメタデータを解析できます。メタデータが確定的でない場合、これらの2つの解析間で変化する可能性があり、これにより多くの混乱が生じます。現在、これらの問題をデバッグするのは難しいことがわかりました。

このパッチにより、元の解析からのベースハッシュがワーカーに渡され、一貫性を再解析するときにこれらがチェックされることが保証されます。不整合が見つかると、ユーザーにエラーメッセージが表示されます。

Siggen.pyにはデバッグコードがあります(「遅いが、一致しないベースハッシュをデバッグするのに役立つ」コメント付きのコードを参照)。パフォーマンスの問題のため、デフォルトではこれを有効にしていません。このメッセージが表示された場合は、このコードを有効にすると、tmp/stampsに「sigbasedata」ファイルが見つかります。このファイルは、このエラーメッセージに示されているハッシュに対応しているはずです。ファイルのbitbake-diffsigsは、どの変数が変更されているかを示す必要があります。

サインオフ:Richard Purdie

6
Sergio

レシピの共有キャッシュを削除するのに役立ちます:

bitbake recipename -c cleansstate

そして、すべてが魅力のように機能します。

3
AcRap

これは、レシピに変更データが含まれていて、それを再構築しようとしたときに発生します。これを回避する1つの方法は、tmp /ディレクトリを削除することです[適切な解決策ではありません]。

1
Sajjad Ahmed

私が使用した修正は、そのレシピに行き、最後に空の行を追加することです。これにより、ビットベイクがレシピを再認識しやすくなります。

0
Xiao Xiu Zhe