0

yocto v1.7.1 "dizzy" をセットアップして、ローカルの git リポジトリにチェックインされたカスタマイズされた Linux カーネル リビジョンからカスタム Linux イメージをビルドしています。

ビルド プロセスを実行するdo_validate_branches()と、次のエラー メッセージが表示されて失敗します。

DEBUG: Executing shell function do_validate_branches
usage: git cat-file (-t|-s|-e|-p|<type>|--textconv) <object>
   or: git cat-file (--batch|--batch-check) < <list_of_objects>

<type> can be one of: blob, tree, commit, tag
    -t                    show object type
    -s                    show object size
    -e                    exit with zero when there's no error
    -p                    pretty-print object's content
    --textconv            for blob objects, run textconv on object's content
    --batch[=<format>]    show info and content of objects fed from the standard input
    --batch-check[=<format>]
                          show info about objects fed from the standard input

ERROR:  is not a valid commit ID.
ERROR: The kernel source tree may be out of sync
WARNING: exit code 1 from a shell command.
ERROR: Function failed: do_validate_branches (log file is located at etc..)

do_validate_branches に対して生成されたコードを見ると、問題は を呼び出しているためと思われますgit cat-file -t ${machine_srcrev}${machine_srcrev}、空の文字列です。さらに、これはlinux-yocto-custom.bbで次を使用しているためと思われます

SRCREV="${AUTOREV}"

リビジョン番号に置き換えると、次のような問題が発生しなくなるため...

SRCREV="7035c2a67d964acbb5d917f470bcda42691a3d9c"

問題は、実際にはこのレシピをブランチの HEAD からビルドすることです。そのため、特定のリビジョンを配置することは、私が求めているものではなく、SRCREV="${AUTOREV}"実際に必要なもののように思われます。しかし、上で述べたように、これは、評価されるべきだと思うので${SRCREV_machine}はなく、空の文字列になります。AUTOINC

SRCREV正しいものを含むようにレシピを常に更新し、それを通過させることなく、レシピを頭に従うようにする方法について、誰かが私に洞察を提供できますdo_validate_branches()か? ここで何が欠けていますか?

編集:詳細...

kernel-yocto.bbclassを次のように変更すると、この問題も修正されるようです... @285

-    machine_srcrev="${SRCREV_machine}" 
+    machine_srcrev="${@ get_machine_branch(d, "${SRCREV}" )}"

私の変更についての私の理解は$SRCREV、マシンブランチから明示的に再取得するようにしていることです。オリジナルが考えているように見えるものは、すでに に保存されてい${SRCREV_machine}ます。元の結果は空の文字列になり、私の変更はAUTOINC.

基本クラスを編集する必要はないはずなので、まだ何かが足りないと思います。しかし、私はこれがバグであるというよりも、何かが欠けていると考える傾向があります。おそらく、これを yocto メーリング リストのどこかに投稿する必要があります。

4

1 に答える 1