Yocto перестроить изображение после изменения исходного кода - PullRequest
0 голосов
/ 29 мая 2019

Как я могу перестроить образ после внесения некоторых изменений в исходный код драйвера?

Я пробовал bitbake -f -c compile и bitbake, но я не нашел измененные настройки в драйвере. Может кто-нибудь сказать мне, как я могу восстановить изображение с измененным кодом.

Ответы [ 3 ]

0 голосов
/ 29 мая 2019

Если вы вносили свои изменения не непосредственно в $ {WORKDIR}, вы должны установить SRCREV в свой новый хэш и увеличить свой PR.Затем введите команду

bitbake <image-name>

, которая снова скомпилирует один пакет и создаст новое изображение с вашими изменениями.

Если вы внесли свои изменения в $ {WORKDIR}, добавьте, подтвердитеи вставьте их в свой репозиторий, а затем следуйте моим инструкциям выше.Это самое чистое решение.

Команда, предложенная другими решениями:

bitbake <image-name> -c cleansstate 

Перезапустит все пакеты, что может занять очень много времени, если у вас нет состояниязеркало.

0 голосов
/ 30 мая 2019

Поскольку изменения в $ {WORKDIR} будут перезаписаны после очистки, вы можете поместить свой код во внешнюю рабочую область с помощью команды devtool modify <recipe-name>

По умолчанию код вашего рецепта будет помещен вtmp / workspace / source / directory Теперь вы можете свободно модифицировать свой код и просто строить, используя bitbake <recipe-name>, как обычно.

Когда ваша модификация в порядке, вы можете легко сохранить изменения как патчи в исходном коде рецепта (насколько это возможно).как это, вероятно, с открытым исходным кодом и загружен):

  • зафиксируйте ваши изменения в вашем рабочем пространстве
  • , чтобы автоматически создавать патчи и добавлять их в рецепт, используя команду devtool recipe-update -a <layer-path> <recipe-name>
0 голосов
/ 29 мая 2019

Полагаю, вы хотите заново сгенерировать все изображение, не так ли? Если это так, вы можете попробовать следующие команды, чтобы гарантировать, что bitbake не будет использовать кэш sstate:

bitbake image-name -c cleansstate && bitbake image-name

В случае, если вы просто хотите перестроить ядро, замените image-name на virtual / kernel (или имя любого рецепта, который вы хотите перестроить).

Обратите внимание, что задача do_cleansstate собирается удалить рецепт $ {WORKDIR}!

Для получения дополнительной информации: https://www.yoctoproject.org/docs/latest/ref-manual/ref-manual.html#ref-tasks-cleansstate

В случае, если вы делаете такие изменения непосредственно в $ {WORKDIR}, чего не следует делать, если вы не тестируете, выполнения следующей команды будет достаточно:

bitbake virtual/kernel -f -c compile

или

bitbake virtual/kernel -C compile (to invalidate the stamps and force all tasks starting from do_compile)
...