Как лучше всего делать небольшие изменения в исходном коде в Yocto

Правильно ли редактировать исходный код в каталоге poky / build / tmp / work? потому что, если мы случайно очистим состояние, изменения будут стерты.

В качестве альтернативы мы можем редактировать исходный код в каталоге «files» вместе с файлом рецепта, но поскольку в основном код здесь находится в заархивированной форме из-за большого количества файлов, нам нужно будет снова разархивировать и снова заархивировать, чтобы изменить одну строку кода.

Итак, как лучше всего редактировать исходный код в yocto?


person waqas    schedule 26.11.2015    source источник


Ответы (2)


Если ваш вопрос касается постоянных изменений, то Дэн должен ответить. Т.е. добавьте <recipe name>.bbappend к рецепту на вашем собственном слое, в котором вы добавляете SRC_URI += "file://mypatch1.patch \ file://mypatch2.patch \ " , перечисляя все необходимые вам патчи.

Если имеется большое количество патчей, может иметь смысл разветвить вышестоящий репозиторий и сохранить собственную ветку в своей вилке. В этом случае вы, вероятно, захотите сослаться на свой собственный репозиторий, а не на исходный репозиторий или tarball.

OTOH, если ваш вопрос был больше о незавершенной работе; тогда конечно, сделать это в oky/build/tmp/workoky/build/tmp/work/xxxx будет работать. (И вполне вероятно, что это то, чем большинство людей занимались в течение длительного времени).

Однако в последних выпусках (начиная с 1.8, fido) есть способ лучше. Новый инструмент называется devtool. Вы можете использовать его следующим образом:

devtool modify -x <recipe-name> <path-to-unpack-source> распаковывает исходный код и создает новый bbappend для сборки из распакованного исходного кода. Он также создает репозиторий git в исходном каталоге.

Теперь вы можете изменить источник. Вы можете протестировать модифицированный исходный код, запустив devtool build <recipe-name>. Когда вы будете удовлетворены, используйте git add ... и git commit, чтобы зафиксировать изменения в локальном репо. После того, как вы зафиксировали изменения в локальном репо, вы можете запустить: devtool update-recipe <recipe-name> , чтобы обновить рассматриваемый рецепт. Когда вы будете удовлетворены, вы можете запустить devtool reset <recipe-name>, чтобы удалить временный файл bbappend.

См. Также: Руководство Yocto по изменению исходный код

person Anders    schedule 01.12.2015

Если вы постоянно «исправляете» данный пакет вручную, я бы порекомендовал вам взглянуть на реализацию файла .bbappend на отдельном уровне, который применяет ваш патч с помощью функции do_patch (http://www.yoctoproject.org/docs/2.0/mega-manual/mega-manual.html#patching-dev-environment).

person Dan Rosenqvist    schedule 27.11.2015
comment
@Anders et.al. это ответ, но просто не упомянул, что devtool создает файл bbappend, если вы используете другой слой, чем оригинал. - person Ariel M.; 10.02.2019