Именование рецептов: Названия, версии и релизы

Рецепты в OpenEmbedded используют стандартное именование, в котором названия и версия пакета включаются в имя файла. В дополнение к этому указывается номер релиза, который отмечает изменения способа сборки/упаковки. Номер релиза содержится внутри рецепта.

Формат имени рецепта:

<package-name>_<version>.bb

где <package-name> - название пакета (приложения, библиотеки, модуля, либо чего-то еще, что формирует пакет), а version - номер версии.

Таким образом, название типичного рецепта может быть следующим:

strace_4.5.14.bb

Такой рецепт будет для версии 4.5.14 приложения strace.

Версия релиза определяется переменной релиза пакета, PR, содержащейся в рецепте. Формат:

r<n>

где <n> целочисленный номер, начинающийся с 0 и увеличивающийся каждый раз, когда рецепт, или что-то влияющее на рецепт, меняется. Таким образом, типичное определение релиза может быть следующим:

PR = "r1"

для определения релиза 1 (то есть второго релиза, первый будет 0). Если PR не установлен в рецепте, то по умолчанию используется "r0".

Замечание

Хорошим тоном является всегда определять PR в рецептах, даже для "r0" релиза, чтобы при редактировании рецепта была видна необходимость обновления PR.

При изменении рецепта нужно всегда увеличивать PR. Хотя иногда этого и можно избежать, если изменения не оказывают влияния на пакеты, генерируемые по рецепту, как, например, при изменении SRC_URI. Если есть хоть небольшие сомнения насчет того, существенны ли изменения, то стоит увеличить PR.

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

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

PN

Имя пакета. Определяется из имени файла рецепта - все до первого символа подчеркивания считается именем пакета. Для рецепта strace_4.5.14.bb переменная PN будет установлена в "strace".

PV

Версия пакета. Определяется из имени файла рецепта - все от первого символа подчеркивания до завершающего .bb считается версией пакета. Для рецепта strace_4.5.14.bb переменная PV будет установлена в "4.5.14".

PR

Релиз пакета. Эта переменная явно указывается в рецепте, либо устанавливается в значение по умолчанию "r0".

P

Название и версия пакета, разделенные черточкой.

P = "${PN}-${PV}"

Для рецепта strace_4.5.14.bb P будет установлена в "strace-4.5.14".

PF

Название, версия и релиз пакета, разделенные черточками.

PF = "${PN}-${PV}-${PR}"

Для рецепта strace_4.5.14.bb, с PR, установленной в "r1", PF будет содержать "strace-4.5.14-r1".

В то время, как некоторые из этих переменных не особо много используются в рецептах (но они используются внутри системы сборки), PN и PV встречаются достаточно часто.

В следующем примере мы указываем системе сборки включить дополнительную директорию к пакету. В инструкции указывается PN для ссылки на имя пакета вместо того, чтобы прописывать все имя:

FILES_${PN} += "${sysconfdir}/myconf"

В следующем примере мы определяем URL исходного кода пакета, используя PV вместо жестко прописанного номера версии для того чтобы можно было скопировать рецепт для более новой версии без необходимости менять URL:

SRC_URI = "ftp://ftp.vim.org/pub/vim/unix/vim-${PV}.tar.bz2"