Как применить патчи к пакету в Buildroot? - PullRequest
8 голосов
/ 17 июня 2011

Я работаю над встроенной системой, которая использует buildroot как инструмент для сборки ядра и корневой файловой системы.Я хочу применить некоторые исправления к этому исходному дереву ядра. Может кто-нибудь сказать мне, как buildroot применяет исправления?

Ответы [ 4 ]

6 голосов
/ 06 мая 2014

Чтобы расширить ответ @ pradeepchhentri.Quilt будет искать файл, расположенный в той же папке, что и файл * .mk.Чтобы создать соответствующий файл:

  1. преобразовать исходный пакет из оригинала в файл с именем

    имя_пакета - число - описание .patch

    где

    имя_пакета - должно совпадать с названием пакета

    число - это порядок, в котором патчи должны применяться, если у вас есть более одного патча для применения (в противном случае он будет применен в алфавитном порядке)

    описание -может быть любым свободным текстом

  2. Поместите этот файл в пакет на том же уровне, что и файл [packagename] .mk, и файл package / Config.in.

Не забудьте сдуть ваши файлы сборки или выполнить [пакет] -сборку, если вы это сделаете.Вы должны увидеть сообщение «Patching ...», если это сделано правильно.

3 голосов
/ 27 июня 2011

Изучив архитектуру buildroot, я узнал, что buildroot использует инструмент quilt для применения патчей.quilt отслеживает все патчи в файле с именем "series", который присутствует в каталоге "patches".Вы должны хранить свои патчи в этом каталоге.И добавьте вашу запись патчей в файл серии в том порядке, в котором вы хотите, чтобы патчи были применены, оставляя патч примененным сначала вверху.

Таким образом, когда вы запустите make-файл buildroot, онавтоматически применит патчи, перечисленные в файле серии.

2 голосов

BR2_GLOBAL_PATCH_DIR патчи вне дерева

Структура каталогов:

Добавить в конфигурацию:

BR2_GLOBAL_PATCH_DIR=../global_patch_dir

Затем построить с:

cd buildroot
make

Патч должен быть применен к output/build/packagename-1.0.0/ перед сборкой.

Сгенерируйте патчи с помощью *_OVERRIDE_SRCDIR

Если вы просто взламываете пакеты прямо под output/build/,у вас не будет ничего для сравнения.

Вместо этого используйте механизм *_OVERRIDE_SRCDIR, который позволяет вам указать на git-репо по вашему выбору: Как изменить источник пакетов Buildroot для пакетаразработка? , которую вы должны отслеживать как подмодуль git.

1 голос
/ 16 мая 2017

некоторые сведения о файлах исправлений в проекте buildroot :

  1. вам нужно

    diff -u "old_file" "new_file" > file.patch
    

стоя точно над извлеченным местоположением вашей посылки tar.gz определено в

PACKAGE_NAME_SOURCE

Это означает, что ваш путь к файлу должен включать имя извлеченной папки пакета.

  1. на случай, если вам интересно, будет ли путь "old_file" отличаться от исходного - не волнуйтесь, важным является путь "new_file" и имя - оно должно совпадать с вашим извлеченным пакетом.

  2. соглашение об именах для исправлений, уже используемых / определенных в buildroot (все части разделены знаком '-' ):

    • 4-значный приоритет патча (начиная с 0001)
    • целевое имя файла
    • причина исправления
    • . Патч расширение

пример:

0001-configure.ac-convert-AC_TRY_COMPILE-AC_COMPILE_IFELS.patch
  1. внесите файл патча в buildroot / package / "имя вашего пакета" / .

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

  1. в случае сбоя файл reject-patch (по имени похожему на файл, который вы пытаетесь исправить, но с расширением .rej ) будет помещен в папку, извлеченную из пакета.
...