Добавляем свой пакет в Buildroot

Как-то давно я писал о том как сделать ПО под autotools. Штука весьма интересная и широко применяемая.
Так вот дело пришло к сборке при помощи buildroot окружения для моего Raspberry Pi B+.
Я не выдумывал велосипеды и слил уже приспособленный для малины buildroot с github: https://github.com/gamaral/rpi-buildroot
В buildroot куча пакетов, но не всегда там есть нужный да и все таки мы можем собрать собственный.

Как оказалось добавить пакет в Buildroot проще простого. Нужно создать папку и три файла.
Итак. Будем считать, что пакет с ПО создан при помощи autotools, а архив лежит по адресу https://blablacode.ru/blablacode_auto_helloworld-0.01.tar.gz
В слитом дистрибутиве buildroot заходим в каталог package и создаем каталог для файлов конфигурации для нашего ПО.
Поскольку у меня helloworld я обозвал его blablacode_helloworld.
В этом каталоге создаем файл Config.in и добавляем описание.

config BR2_PACKAGE_BLABLACODE_HELLOWORLD
        bool "blablacode_helloworld"
        help
          This is a comment that explains what blablacode_helloworld is.

          https://blablacode.ru/blablacode_auto_helloworld-0.01.tar.gz

Тут все очень похоже на систему конфигурации ядра. Собвственно это она и есть. Если есть вопросы гуглим Kconfig.
При конфигурации в меню Target packages появится наша пошина.

Отлично. Теперь создадим инструкции о сборке пакета.
Для этого создаем в том же каталоге файл blablacode_auto_helloworld.mk

BLABLACODE_HELLOWORLD_VERSION = 0.01
BLABLACODE_HELLOWORLD_SOURCE = blablacode_auto_helloworld-$(BLABLACODE_HELLOWORLD_VERSION).tar.gz
BLABLACODE_HELLOWORLD_SITE = https://blablacode.ru/
BLABLACODE_HELLOWORLD_INSTALL_STAGING = YES
BLABLACODE_HELLOWORLD_INSTALL_TARGET = YES
BLABLACODE_HELLOWORLD_DEPENDENCIES = host-pkgconf

$(eval $(autotools-package))

Тут мы указываем версию, имя архива с исходником, имя хоста где он расположен и систему сборки (autotools). Buildroot поддерживает еще сырые make файлы и cmake.

Для первой проверки осталось только поправить файл package/Config.in
Я добавил наш пакет в самое начало файла, в меню Target packeges

menu "Target packages"

        source "package/busybox/Config.in"
        source "package/blablacode_helloworld/Config.in"

Тут все точно также как и в ядре linux.
Можно пробовать собирать. Выполняем из корневого каталога buildroot.

make menuconfig
make

В меню конфигурации не забываем включить наш пакет.
После компиляции заливаем полученный архив файловой системы в наш raspberry pi.

Зарабооотало 😉

 

Похожий код:

Фото аватара
Алексей Петров

Программист, разработчик с 5 летним опытом работы. Учусь на разработчика игр на Unity и разработчика VR&AR реальности (виртуальной реальности). Основные языки программирования: C#, C++.

Оцените автора
Бла, бла код
Добавить комментарий