Исходный код: Загрузка, применение патчей и дополнительные файлы

Цель рецепта - описать, каким образом программный пакет может быть получен и собран для целевого устройства. Расположение исходного файла (или файлов) описывается с помощью SRC_URI variable в рецепте. Могут быть использованы различные виды URI, вот наиболее часто встречающиеся:

http и https

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

cvs, svn и git

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

files

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

patches

Патчи считаются обычными текстовыми файлами и применяются автоматически.

Если http, https или URI указывает на сжатый файл, архив или сжатый архив, такой как .tar.gz или .zip, то файлы предварительно декомпрессируются и извлекаются из архива автоматически.

Архивные файлы извлекаются в рабочей директории, ${WORKDIR}, обычные файлы копируются туда же. Патчи применяются внутри распакованной директории с исходными кодами, ${S}. (Более подробное описание этих директорий дается в следующей части)

Следующий пример из havp рецепта показывает типичное определение SRC_URI:

SRC_URI = "http://www.server-side.de/download/havp-${PV}.tar.gz \
           file://sysconfdir-is-etc.patch;patch=1 \
           file://havp.init \
           file://doc.configure.txt \
           file://volatiles.05_havp"

В примере описываются следующие файлы:

http://www.server-side.de/download/havp-${PV}.tar.gz

Это URI исходного кода havp. Обратите внимание на использование переменной ${PV} для определения версии пакета. Это делается для того, чтобы рецепт можно было использовать для новой версии с минимумом изменений. Так как ссылка указывает на сжатый архив .tar.gz, то файлы будут декомпрессированы и извлечены в рабочую директорию ${WORKDIR}.

file://sysconfdir-is-etc.patch;patch=1

Это локальный файл с изменениями к извлеченному исходному коду. На то, что файл является патчем, указывает запись patch=1. Патч применяется к директории с распакованным исходным кодом, ${S}. В этом случае ${S} примет значение ${WORKDIR}/havp-0.82, и к счастью havp-0.82.tar.gz извлекается именно в эту директорию (поэтому нет необходимости изменять ${S}).

file://havp.init file://doc.configure.txt file://volatiles.05_havp"

Эти файлы просто копируются в рабочую директорию ${WORKDIR}. Они используются при выполнении задачи установки и могут содержать инициализационные скрипты, документацию и конфигурационные файлы для пакета.

Полное описание переменной SRC_URI и все поддерживаемые URI's доступные в разделе SRC_URI variable справочника.