Я настраиваю yocto v1.7.1 "dizzy" для создания пользовательского образа Linux из настраиваемой версии ядра 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"
дело в том, я на самом деле хочу этот рецепт, чтобы построить из руководителя филиала, поэтому поставив конкретную ревизию не кажется, что я после и SRCREV="${AUTOREV}"
, казалось бы, что я на самом деле хочу. Но, как упоминалось выше, ${SRCREV_machine}
- это пустая строка, а не AUTOINC
, как я думаю, она должна оцениваться.
Может ли кто-нибудь предложить мне какое-либо представление о том, как я могу получить рецепт для обоих, следуя за головой, не постоянно обновляя рецепт, чтобы содержать правильный SRCREV
и передать его do_validate_branches()
? Что мне здесь не хватает?
Edit: Подробнее ...
Проблема также, кажется, фиксируется, если я изменить мой ядро-yocto.bbclass следующим образом ... @ 285
- machine_srcrev="${SRCREV_machine}"
+ machine_srcrev="${@ get_machine_branch(d, "${SRCREV}")}"
Мое понимание мое изменение заключается в том, что я делаю это явно для того, чтобы вернуть $SRCREV
из моей ветви машины. Кажется, что оригинал, кажется, уже сохранен в ${SRCREV_machine}
. Хотя исходные результаты в пустой строке и мое изменение приводит к AUTOINC
.
Хотя я все еще думаю, что мне что-то не хватает, потому что мне не нужно редактировать базовые классы. Но я всегда склонен думать, что я что-то упустил, чем это ошибка. Возможно, я должен разместить это в списках рассылки yocto.
Не уверен, что это необходимо для вашего случая, но вы добавили 'SRCPV' в' PV' за http://www.yoctoproject.org/docs/1.6/dev-manual/dev-manual.html#platdev -appdev-srcrev? – lnmx
У меня есть 'PV =" $ {LINUX_VERSION} + git $ {SRCPV} ", который был включен в оригинал, который я получил от запуска yocto-bsp create. Это, по-видимому, подтверждается структурой каталогов, созданной во время сборки, которая содержит директорию '3.14.28 + gitAUTOINC + 7035c2a67d-r0'. –