NXPコミュニティの皆様、こんにちは。
私はi.MX 8M Plusターゲット用の Yocto ビルドに取り組んでいますが、meta-imx-ml レイヤーの onnxruntime レシピで一貫したビルド失敗が発生しました。
Eigen ライブラリ依存関係をダウンロードしようとすると、do_configure タスク中にチェックサムの不一致によりビルドが失敗します。
ビルド環境:
問題の説明:
onnxruntime のビルド プロセスでは、CMake の FetchContent を使用して Eigen ライブラリをダウンロードします。ダウンロードは成功したように見えますが、ダウンロードしたファイルの SHA1 ハッシュがビルド スクリプト内の予想されるハッシュと一致しないため、検証手順で失敗します。
エラー ログ スニペット:
ログからの関連する失敗は次のとおりです。
-- verifying file... | file='/home2/anil/IMX8MP/build-xwayland/tmp/work/armv8a-poky-linux/onnxruntime/1.17.1/build/_deps/eigen-subbuild/eigen-populate-prefix/src/eigen-e7248b26a1ed53fa030c5c459f7ea095dfd276ac.zip' | -- SHA1 hash of | /home2/anil/IMX8MP/build-xwayland/tmp/work/armv8a-poky-linux/onnxruntime/1.17.1/build/_deps/eigen-subbuild/eigen-populate-prefix/src/eigen-e7248b26a1ed53fa030c5c459f7ea095dfd276ac.zip | does not match expected value | expected: 'be8be39fdbc6e60e94fa7870b280707069b5b81a' | actual: '32b145f525a8308d7ab1c09388b2e288312d8eba' | -- Hash mismatch, removing... | CMake Error at eigen-subbuild/eigen-populate-prefix/src/eigen-populate-stamp/download-eigen-populate.cmake:163 (message): | Each download failed! | | | make[2]: *** [CMakeFiles/eigen-populate.dir/build.make:100: eigen-populate-prefix/src/eigen-populate-stamp/eigen-populate-download] Error 1 | make[1]: *** [CMakeFiles/Makefile2:83: CMakeFiles/eigen-populate.dir/all] Error 2 | make: *** [Makefile:91: all] Error 2 | | CMake Error at /home2/anil/IMX8MP/build-xwayland/tmp/work/armv8a-poky-linux/onnxruntime/1.17.1/recipe-sysroot-native/usr/share/cmake-3.30/Modules/FetchContent.cmake:1918 (message): | Build step for eigen failed: 2
すでに実行したトラブルシューティング手順:
私の質問:
このレシピを適切に修正する方法に関する助言や指導をいただければ幸いです。
ありがとう、
アニル・ドンガレ。
IMX の skyhead Yocto リポジトリを調べたところ、この問題はそこでは修正されていないことがわかりました。私はYoctoを使い始めたばかりなので、私の解釈が間違っているかもしれません。SO、私の推測では、NXP skyhead Yocto リポジトリでは、onnxruntime でもビルドが失敗するでしょう。
NXP は、Yotco イメージ バージョンに直接リンクされた独自の onnxruntime リポジトリを使用します。
NXP IMX スカースギャップ 6.6.36.2.1.0 Yocto
meta-imx/meta-imx-ml/レシピライブラリ/onnxruntime/onnxruntime_1.17.1.bb
ONNXRUNTIME_SRC ?= "gitsm://github.com/nxp-imx/onnxruntime-imx.git; プロトコル = https"
SRCBRANCH = "lf-6.6.36_2.1.0"
SRCREV = "813b93f64103847a21227725cb5ab04b6ca5b5ed"
onnxリポジトリは、eigenを含む欠陥のあるcmake depts.txtを持つ特定のonnxリポジトリを指します。
onnxruntime-imx/cmake/deps.txt
固有。 https://gitlab.com/libeigen/eigen/-/archive/e7248b26a1ed53fa030c5c459f7ea095dfd276ac/eig en-e7248b26...
NXP IMX スカイヘッド 6.12.3.1.0 Yocto
meta-imx/meta-imx-ml/レシピライブラリ/onnxruntime/onnxruntime_1.17.1.bb
ONNXRUNTIME_SRC ?= "gitsm://github.com/nxp-imx/onnxruntime-imx.git; プロトコル = https"
SRCBRANCH = "lf-6.12.3_1.0.0"
SRCREV = "3616ba2f9cd2b7b882252a95e171f0c0c0f1826f"
imx skyhead Yoctoリポジトリでは、onnxruntimeはまだ問題があります
cmake devs.txt の正しい固有チェックサムを持つ、より新しい NXP imx onnxruntime ブランチ lf.6.12.20-2.00 があります。
しかし、これはNXPの最新のYocto Skyheadリポジトリには含まれていません。
上記のパッチがどのように機能し、FUTURE同様の問題が発生した場合にどのように対処するかを理解したかったため、機能したプロセスです。
1. bitbake -c cleanall onnxruntime
clean または cleanall は、dept.txt ファイル内のチェックサムを間違った値にリセットします。パッチ適用後はこれを実行しないでください。
2.cat ~/yocto/frdm-imx93/tmp/work/armv8a-poky-linux/onnxruntime/1.17.1/git/cmake/deps.txt
3. 「eigen」を含む行を見つける
4. wget を実行して https://gitlab.com/libeigen/eigen/-/archive/e7248b26a1ed53fa030c5c459f7ea095dfd276ac/eigen -e7248b26a1ed53fa030c5c459f7ea095dfd276ac.zip を解凍します。
5. sha1sum eigen-e7248b26a1ed53fa030c5c459f7ea095dfd276ac.zip
チェックサムは32b145f525a8308d7ab1c09388b2e288312d8ebaと報告されます
6. deps.txtを編集し、eigen行を次のように変更します。
7. yoctoビルドを続行する
最善の方法は、NXP がアナウンスして、これらすべてを実行するパッチをリリースすることです (または、このよく知られている問題を確認する AI エージェントを作成します。「あなたは完全に正しいです。これは yocto の問題であり、これを修正する方法は次のとおりです」
このパッチはgit/cmake/deps.txtを変更します。
Yocto リポジトリでこのファイルが見つからないようです... (?)
今日、FRDM-IMX93 のフル ビルドで同じ問題が発生しました。掃除しても直りません。
これがいつ解決されるのか。今行き詰まっています。ビルディング完全なイメージには数日かかります。上流のソースコードに欠陥がある可能性があるため、最初からやり直して同じ問題に遭遇したくない
-- SHA1ハッシュ
| /ホーム/build/Yocto/frdm-imx93/tmp/work/armv8a-poky-Linux/onnxruntime/1.17.1/build/_deps/eigen-subbuild/eigen-populate-prefix/src/eigen-e7248b26a1ed53fa030c5c459f7ea095dfd276ac.zip
| 期待値と一致しません
| 予想: 'be8be39fdbc6e60e94fa7870b280707069b5b81a'
| 実際: '32b145f525a8308d7ab1c09388b2e288312d8eba'
この問題は eigen パッケージのバージョン管理に関連しているようで、 https://github.com/microsoft/onnxruntime/issues/18286で説明されているように、Ubuntu ではよく知られています。
一時的な修正としては、ダウンロードの検証に使用されるハッシュを編集することです。onnxruntime パッケージのパッチを準備して、eigen パッケージのハッシュ値を編集し、オンライン ブランチのハッシュが現在示している値 (32b145f525a8308d7ab1c09388b2e288312d8eba) と一致するようにします。
また、onnxruntime の bbapend ファイルも下記にCAN。したがって、次の場所にある onnxruntime パッケージ ソース フォルダーに移動します: sources/meta-imx/meta-imx-ml/recipes-libraries/onnxruntime 、そして bbappend ファイルを貼り付けます。そこに、 filesという名前のフォルダーを作成し、その中にパッチを貼り付けます。
bitbake -c configure onnxruntime を再実行すると、問題は解決するはずです。
これは最も醜い対処方法かもしれませんが、さらに調査する時間はあまりありません。
ありがとう
エラーと思われるこの投稿を見つけましたが、よく分かりません。
https://github.com/microsoft/onnxruntime/issues/24861
imx-linux-scarthgap からこの修正をどのように取り込むかがわかりません。
新しいワークスペースでビルディングを試みましたが、このエラーが引き続き発生します。
bitbake -c clean onnxruntime ではこの問題は解決されません。
こんにちは、
onnx を取り外してすべてをクリーンアップするだけです:
ビットベイク -c クリーンオール
よろしくお願いします。
ビルドログとエラーを添付しました。
こんにちは、
iMX95 のフルイメージでも失敗しますか?これはおそらくバグなので確認してみましょう。この問題を再現できないので、ホスト上のパッケージに問題がある可能性があります。
よろしくお願いします。
私も IMX95 をビルドしようとして同じ問題が発生しており (ビルド情報は下記)、この解決策を探しています。
どなたか助けていただければ幸いです。
事前に感謝いたします。
ビルド環境: