Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kursovaya_rabota_L_A_V.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
30.91 Кб
Скачать

3. Описание структуры пакета Buildroot

Одну из целей, которую можно достичь с помощью системы шаблонов OpenWrt, было желание сделать процесс портирования программного обеспечения под OpenWrt максимально простым. Посмотрите на обычный каталог пакета в OpenWrt можно найти две составляющие:

  • package/Makefile

  • package/patches

Каталог patches не является обязательным и обычно содержит исправления ошибок или оптимизацию размера исполняемого файла. Makefile пакета является важной составляющей и описывает шаги необходимые чтобы получить исходный код и скомпилировать пакет.

Глядя на Makefile из какого либо пакета, вряд ли можно узнать в нем обычный Makefile. Это может быть охарактеризовано как вопиющее пренебрежение и жестокое обращение с традиционным форматом make, однако, преобразование Makefile пакета в объектно-ориентированный шаблон позволило упростить весь процесс портирования приложений.

Приведем пример package/bridge/Makefile: (См. Приложение 1)

3.1 Переменные BuildPackage

Как можно заметить, необходимо сделать совсем не много. Все скрыто в других make-файлах и нужно только определить несколько переменных.

  • PKG_NAME -Название пакета, которое будет видно в конфигурационном меню и ipkg

  • PKG_VERSION -Версия пакета, которую необходимо загрузить из репозитория проекта

  • PKG_RELEASE -Версия данного Makefile

  • PKG_BUILD_DIR -Каталог для сборки пакета

  • PKG_SOURCE -Названия архива с исходным кодом

  • PKG_SOURCE_URL -Адрес, с которого необходимо загрузить архив с исходным кодом

  • PKG_MD5SUM -Контрольная сумма архива с исходным кодом

  • PKG_CAT -Метод разархивирования исходного кода (zcat, bzcat, unzip)

  • PKG_BUILD_DEPENDS -Пакеты, которые необходимо собрать перед сборкой данного пакета (не используются во время работы на устройстве).

Переменные PKG_* определяют откуда загружать исходный код; @SF - это ключевое слово для загрузки исходников с sourceforge. Контрольная сумма md5sum используется для проверки корректности загрузки архива, а PKG_BUILD_DIR определяет где находится исходный код после разархивирования полученного архива в $(BUILD_DIR).

В конце файла происходит настоящее волшебство: функция "BuildPackage" настраивает процесс сборки пакета на основании ранее определенных переменных. BuildPackage принимает только один аргумент напрямую - имя пакета, который будет собран, в данном случае "bridge". Вся остальная информация берется из блоков define. Это способ позволяет обеспечить необходимый уровень читаемости кода, как следствие остается ясным значение переменной DESCRIPTION в Package/bridge, а не теряется как в случае, если бы мы передали эту информацию непосредственно в N-ый аргумент BuildPackage.

    1. Блоки define BuildPackage

Package/

соответствует аргументу передоваемому в buildroot, описание пакета

для menuconfig и ipkg. В блоке Package/ вы можете определить

следующие переменные:

  • SECTION - Тип пакета (в данный момент не используется)

  • CATEGORY - В каком пункте menuconfig отображать данный пакет

  • TITLE - Краткое описание пакета

  • DESCRIPTION - (устарело) Полное описание пакета

  • URL - Ссылка на сайт пакета

  • MAINTAINER - (опционально) Кто поддерживает пакет

  • DEPENDS - (опционально) Какие пакеты должны быть собраны и установлены перед текущим пакетом

Package/conffiles

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

Package/description

Полное описание пакета

Build/Prepare

Перечень команд необходимых для разархивирования и наложения патчей на исходный код. Можно не определять.

Build/Configure

Можно не определять, если не используется configure или есть

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

"$(call Build/Configure/Default,)" чтобы передать дополнительные

параметры стандартному конфигурационному скрипту.

Build/Compile

Перечень команд необходимых для компиляции исходного кода; в большинстве случаев не нужно определять.

Package/install

Перечень команд необходимых для копирования собранных файлов в ipkg,

который представлен как директория $(1).

Package/preinst

Текст скрипта выполняемого перед установкой. Не забудьте

написать #!/bin/sh. Если необхомо прервать установку, скрипт должен вернуть false.

Package/postinst

Текст скрипта выполняемого после установки. Не забудьте

написать #!/bin/sh.

Package/prerm

Текст скрипта выполняемого перед удалением. Не забудьте

написать #!/bin/sh. Если необхомо прервать удаление, скрипт должен вернуть false.

Package/postrm

Текст скрипта выполняемого после удаления. Не забудьте

написать #!/bin/sh . /7/

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]