Патчи Buildroot не обнаруживаются?

Мой вопрос - это вариант этого. Фактически, этот также связан с ним, ожидая, что он на самом деле дальше, чем я. Насколько я могу судить, я не могу получить buildroot, чтобы найти и применить какие-либо из моих исправлений.

Я выполнил инструкции по форматированию, чтобы создать свой файл исправления, который теперь жив здесь:

./buildroot/board/mycompany/myboard/patches/myprogram/myversion/myprogram-0-fix.patch

Насколько я могу судить, я правильно настроил путь и имя файла, следуя этим инструкциям < / а>. Я также установил BR2_GLOBAL_PATCH_DIR на:

"board/mycompany/myboard/patches"

Я сделал предположение, что после всего этого, загрузив мой файл конфигурации (тот, который указывает на папку «myboard» и с установленным глобальным каталогом патчей) - а затем запустил make, мои патчи будут применены автоматически во время процесса. Однако, похоже, он вообще не собирает патчи.

Я считаю, что мне не хватает некоторых шагов для установки исправлений. В этом разделе документации описывается, как применяются исправления, но я Я изо всех сил пытаюсь это понять. Как мне запустить команду <packagename>_PRE_PATCH_HOOKS? Может ли это выполняться автоматически при запуске make?

Для справки: myprogram начинается как загруженный архив в папке dl/ - позже он извлекается и компилируется. Я надеялся, что мне не придется изменять содержимое этого архива и я смогу использовать механизм исправления buildroot для применения исправления после извлечения содержимого, но до сборки пакета. Это вообще допустимый способ применения патча в buildroot?


person dtmland    schedule 27.02.2015    source источник


Ответы (1)


Описанные вами шаги верны, поэтому, вероятно, есть один из них, который вы применили неправильно.

Вы, должно быть, правильно установили BR2_GLOBAL_PATCH_DIR, потому что ошибки buildroot, если он не существует. В качестве проверки работоспособности измените его в какой-нибудь несуществующий каталог и обратите внимание на то, что вы получите сообщение об ошибке.

Так что, скорее всего, что-то не так в именах ваших каталогов.

В качестве первого шага я бы оставил часть пути версии - это полезно, только если вы хотите поддерживать несколько версий myprogram. Так что вставьте свой патч в board/mycompany/myboard/patches/myprogram/0-fix.patch.

Также проверьте правописание myprogram.

В противном случае запустите:

make myprogram-dirclean
make myprogram-patch V=1

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

Что касается MYPROGRAM_PRE_PATCH_HOOKS, это то, что вы бы поместили в свой myprogram.mk файл. Его можно использовать, например, когда применяемые исправления являются частью самого архива.

person Arnout    schedule 28.02.2015
comment
Я немного запоздал с ответом, но благодаря вашему ответу я обнаружил, что в ветку, с которой я работал (2013.02), еще не добавлена ​​функция BR2_GLOBAL_PATCH_DIR. Это коммит, в который была добавлена ​​функция. Основываясь на кратком поиске, он был бы впервые доступен в 2013.05. - person dtmland; 27.05.2015