Создание файлов метаданных (добавление рецептов)

Для создания минимального файла метаданных (рецепта в терминологии BitBake), необходимо определить в нем параметры описанные ниже.

Первыми в рецепт необходимо добавить описание приложения, лицензии и домашней страницы:

DESCRIPTION = "My first application, a really cool app containing lots of foo and bar"
LICENSE = "GPLv2"
HOMEPAGE = "http://www.host.com/foo/"
                

Поля описания и лицензии являются обязательными. Внимательно проверьте правильно ли вы их указали.

Далее необходимо указать зависимости, которые необходимы для сборки и запуска:

DEPENDS = "gtk+"
RDEPENDS = "cool-ttf-fonts"
    

В этом примере приложению необходим пакет gtk+ для сборки ('DEPENDS') и пакет 'cool-ttf-fonts' для запуска ('RDEPENDS'). OpenEmbedded автоматически добавляет в зависимости библиотеки необходимые для запуска приложения, при помощи shlibs-кода. Но остальные зависимости вам необходимо указывать вручную, таким же образом как был добавлен пакет 'cool-ttf-fonts'.

Теперь OpenEmbedded знает что это за пакет и какие зависимости ему требуются, но он не знает откуда необходимо получить исходный код приложения. Для указания местоположения используется следующий параметр:

SRC_URI = "http://www.host.com/foo/files/${P}.tar.bz2;md5sum=yoursum"
    

Переменная ${P} является короткой формой записи ${PN}-${PV}. Где переменная ${PN} содержит имя пакета, а переменная ${PV} его версию. Такая нотация позволяет повторно использовать рецепт старой версии приложения, при создании рецепта новой версии приложения. Не забудьте проверить новый рецепт, так как новая версия может вызывать новые ошибки.

yoursum - это md5 сумма архива с исходным кодом. Для ее получения выполните команду:

md5sum foo-1.9.tar.bz2

затем замените на ту md5 сумму что видите на экране. Обычно md5 сумма выглядит так:

a6434b0fc8a54c3dec3d6875bf3be8mtn 

После добавления параметров указанных выще, практически все готово для сборки пакета. Но для сборки необходимо, указать какая система сборки используется приложением. Если в дереве исходных кодов приложения есть файл configure, это говорит о том, что необходимо подключить класс autotools. Если же там имеются .pro файл, то возможно потребуется подключить класс qmake. Обычно приложения на базе gtk используют autotools. Для их подключения добавьте в ваш рецепт следующую строку:

inherit autotools pkgconfig
    

В результате при настройке и сборке будут использоваться autotools и pkgconfig.

Для сборки пакета запустите команду:

bitbake foo
    

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

После завершения вы должны увидеть у себя на экране нечто похожее:

NOTE: package foo-1.9-r0: task do_build: completed
NOTE: package foo-1.9: completed
NOTE: build 200605052219: completed
                

Это указывает на удачное завершение, но если вы при просмотре вывода увидели:

NOTE: the following files where installed but not shipped:
    /usr/weirdpath/importantfile.foo
                

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

FILES_${PN} += "/usr/weirdpath/importantfile.foo"
    

Обратите внимание на использование +=. Эта операция дополняет список, а не заменяет его.