我正在設置yocto v1.7.1「dizzy」以檢查自定義的Linux內核修訂版本到我的本地git倉庫。
在執行構建過程時,它會在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()
?我在這裏錯過了什麼?
編輯:更多信息...
的問題也似乎是固定的,如果我修改我內核yocto.bbclass如下... @ 285
- machine_srcrev="${SRCREV_machine}"
+ machine_srcrev="${@ get_machine_branch(d, "${SRCREV}")}"
我的理解我的變化是我明確重新從我的機器分支中獲取$SRCREV
。原文似乎認爲已存儲在${SRCREV_machine}
。雖然原始結果爲空字符串,並且我的更改結果爲AUTOINC
。
雖然我仍然認爲我必須缺少一些東西,因爲我不需要編輯基類。但我總是更傾向於認爲我錯過了一些東西,而不是這是一個錯誤。也許我應該把它發佈到某個地方的yocto郵件列表中。
不確定是否需要您的情況,但是您是否通過http://www.yoctoproject.org/docs/1.6/dev-manual/dev-manual.html#platdev將「SRCPV」添加到了「PV」 -appdev-srcrev? – lnmx
是的,我有'PV =「$ {LINUX_VERSION} + git $ {SRCPV}」'這是原來我運行yocto-bsp創建的。 這似乎可以通過在包含'3.14.28 + gitAUTOINC + 7035c2a67d-r0'目錄的構建過程中生成的目錄結構來確認。 –