This service is available only in Japanese-language.
いつもお世話になってます。
Compulab ボード用に Yocto/Kirkstone でイメージをビルドしてます。(https://github.com/compulab-yokneam/meta-bsp-imx8mp/blob/kirkstone-2.2.0...)。 ボードはucm-imx8m-plus SOM です。
bitbake linux-compulab
でビルドしていて、いくつかエラーがありましたが、それらを修正して今はエラーなしでビルドできています。イメージ全体(imx-image-multimedia)のビルドもエラーなくできます。そこで、devtoolを使用してソースの変更を行いたいのですが、
devtool modify linux-compulab
を行ってから、再び同じ:
bitbake linux-compulab
を行うと、長々とエラーが出ます。おそらくエラーのキモはこれではないかと思います:
bb.fetch2.FetchError: Fetcher failure: Recipe uses a floating tag/branch without a fixed SRCREV yet doesn't call bb.fetch2.get_srcrev() (use SRCPV in PV for OE).
ググってみると同じような件がいくつかヒットしますが、解決方法がよくわかりません。
devtool reset linux-compulab で、devtoolの使用をやめると、再びビルドできるようになります。
何か解決策がありますでしょうか?
yakuhito
2023/3/12 (日) 21:17
modify で変更した内容をbitbakeを使って構築する場合はfinishサブコマンドで差分を保存する必要があります
devtool modify を実行すると、workspaceというレイヤが生成され、workspace/appends 以下にbbappendファイルが生成され、workspace layer は、conf/bblayers.conf に追加されます。
この状態でbitbakeを実行すると、devtoolで使用するために生成されているbbappendも適用されてしまうため、上記のエラーが発生します。
devtool modify 実行後に、ソースコードの編集を行い、devtool build で構築を行い、devtool create-image でイメージの生成を行い修正内容の確認が行ったのち、いくつかの手順を実行して編集結果を保存します。
workspace以下に生成されたbbappendを最下部にコメントとして記載されていることから確認できますが、
workspace/source 以下のソースコードはlocalのgitの管理下に置かれています。
ソースコードが展開されたディレクトリに移動して
・git status
を実行して、変更されたファイルを確認します。
・git add
で、変更を行ったファイルを登録します。
・git commit -m
を実行して、変更をcommit します。
ここまでの操作で、devtool modify実行時に展開されたソースツリーに対するpatch を生成する準備ができました。
devtool の finish サブコマンドを使用して、git commit で登録された差分(patch)及びbbappendを作成します。
finishサブコマンドでは、以下のオプションを付加することをお勧めします。
-r (remove)
-f (force)
tamo3
2023/3/15 (水) 04:02
devtool build でも同じエラーがでます
丁寧な回答ありがとうございます。
devtool modify linux-compulab の直後に devtool build linux-compulab を実行しても全く同じエラーが出てしまいます。何か根本的に間違っているのでしょうか?
tamo3
2023/3/15 (水) 11:16
meta-bsp-imx8mp/recipes
meta-bsp-imx8mp/recipes-kernel/linux/linux-compulab_5.15.71.inc の中で、
SRCREV = "${AUTOREV}"
という行があるので、これを他のハッシュに変えても同じようなエラーになります:
Exception: bb.fetch2.FetchError: Fetcher failure: Recipe uses a floating tag/branch '7888e7d' for repo 'github.com/compulab-yokneam/linux-compulab' without a fixed SRCREV yet doesn't call bb.fetch2.get_srcrev() (use SRCPV in PV for OE).
tamo3
2023/3/17 (金) 06:31
回避策がありました
とりあえず
BB_SRCREV_POLICY = "cache"
を local.conf に追加することで(fetchに行かなくなることで)問題を回避できました。workspaceを使っている間はこの設定で問題を回避して、workspaceの使用が終わった時点で、この行を削除するつもりです。
お世話になりました。
yakuhito
2023/3/17 (金) 08:59
有益な情報提供ありがとうございます
BB_SRCREV_POLICY の変数の説明は、https://docs.yoctoproject.org/ref-manual/index.html には記載されておらず見落としていました。
https://docs.yoctoproject.org/bitbake/2.2/index.html で確認すると、The BB_SRCREV_POLICY variable is useful when working without a network. と記載されていますね。
LOCAL_MIRRORを有効にして、BB_NO_NETWORK = "1" と指定した際に、AUTOREVとなっているソースはエラーとなっていましたが、BB_SRCREV_POLICY の値を設定することで、キャッシュされたデータを使用することができますね。
tamo3
2023/3/17 (金) 11:18
いつもお世話になる一方ですので
いつもお世話になる一方ですので、ほんのわずかでも貢献できたならばよかったです。
いまだに広大で深い Yocto の海で溺れてます・・・
tamo3
2023/3/21 (火) 06:06
Compulab から fix が届きました
BSP 供給元である Comopulab から解決策がきました。
linux-compulab_5.15.71.bbappend という Patch を recipes-devtool/linux/ にあてることで、上記の問題が解決しました。
Patch の内容は
SRCREV = "a665d8bd3ff24b1cb2fcf6300d7f95cc7bdb46cd"
LINUX_VERSION = "5.15.71-devtool"
です。
Patch がやっていることは何となく理解できますけど、SRCREV を hash に設定するというのは私も linux-compulab_5.15.71.inc の中で試してみたのですけどうまくいきませんでした。よくわからないけどビルドできるのでよし、ということにします。
お世話になりました。
tamo3
2023/3/25 (土) 08:16
AUTOREV について
上記のレシピ以外にも AUTOREV を使用している箇所があるようですけど、これはビルド(というかfetchですかね)する時間によって、結果が異なる可能性がある、ということでしょうか? Kirkstone 2.2.0 といっても、必ずしも同じビルド結果にならない可能性がある、ということでしょうか?
私どもの社内で何人かがビルドしているのですが、人によって、ビルドがうまくいったり行かなかったり、エラーもまちまちだったりすることがあります。
yakuhito
2023/3/25 (土) 11:52
AUTOREVはfetch時点の最新のコミットを取得します
開発途中はAUTOREVの指定をおこなうことは良くありますが、リリース版を制定する場合は、最終的に動作確認をおこなったコミットで固定にするのが一般的となっています。
tamo3
2023/3/25 (土) 12:58
ありがとうございます。
やはりそういうものなのですね。ありがとございました!