Table of Contents

Wok и инструментарий

Обзор

CookUtils используется для компиляции и создания (приготовления) пакетов в соответствии с инструкциями, находящимися в рецепте. Он помещает скомпилированные файлы в папку и вызывает TazPkg для упаковки указанной папки в пакет. Рецепт, полученный вами из wok, отличается своей «нижней половиной» от рецепта в TazPkg; рецепт CookUtils содержит правила как для компиляции, так и для упаковки (которые он передает в TazPkg), в то время как TazPkg занимается только упаковкой.

CookUtils — одна из многих небольших утилит проекта SliTaz, используемая для автоматической пересборки дистрибутива из исходников. В проекте вы также найдете архив утилит, содержащий различные небольшие инструменты, примеры и файлы конфигурации. Генератор дистрибутивов TazLiTo предназначен для пользователей и разработчиков; он может извлекать и реконструировать ISO-образ LiveCD и создавать редакцию дистрибутива (flavor) на основе списка пакетов, файла конфигурации и описания. Все утилиты распространяются в виде исходников, а также установлены по умолчанию в SliTaz.

Разработчики и будущие участники могут обратиться к странице разработки, которая содержит информацию об управлении проектом SliTaz.

Структура и организация Wok

Wok — это структура каталогов, в которой размещаются все доступные пакеты. Каждый каталог содержит по меньшей мере один рецепт, по которому можно скачать, распаковать, скомпилировать и создать пакет. Кроме того CookUtils необходимо создать папку для хранения загруженных исходников ($SOURCES_REPOSITORY, обычно /home/slitaz/src) и репозитория генерируемых пакетов ($PACKAGES_REPOSITORY, обычно /home/slitaz/packages); эти значения могут быть переопределены в файле /etc/slitaz/cook.conf.

Существует более одного Wok в репозиториях Mercurial:

Изначально, любые вклады направляются в репозиторий undigest. Когда становится видно, что пакет прошел достаточное тестирование, не провалив автоматическую сборку, он может быть перемещен в Wok.

Подготовка

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

Перед началом работы с Wok вы должны уже установить CookUtils и основные инструменты разработки (Binutils, компилятор, библиотеки разработчика, make). Для этого достаточно установить мета-пакет slitaz-toolchain:

# tazpkg recharge
# tazpkg get-install slitaz-toolchain

Чтобы получить доступ к репозиториям SliTaz, установите пакет mercurial:

# tazpkg get-install mercurial

Более подробная информация по использованию Mercurial CVS доступна на его сайте и в “Hg Book”.

Клонирование Wok

Если вы хотите создавать пакеты для включения в репозитарии SliTaz, сначала необходимо получить текущий Wok с помощью Mercurial. Это называется клонировать Wok — процедура, которая загрузит весь Wok со всей своей историей в рабочую папку. Если вы хотите использовать CookUtils только для сборки пакетов для личного пользования, в этом нет необходимости. Вместо этого смотри ниже главу Персональный Wok.

Обычное расположение клона Wok — это /home/slitaz/wok:

# cook setup --wok

Эта загрузка может занять некоторое время; по окончании у вас будет полная структура рабочих каталогов Cooking wok.

Wok является одним из многих проектов, размещенных в репозиториях Mercurial. Отдельные пакеты сгруппированы в большие проекты (Wok, Wok-Stable и Wok-Undigest); каждый пакет не имеет своего ​​собственного суб-проекта, а лишь подкаталог; Mercurial не может (пока) клонировать отдельные части проекта, таким образом, вы не можете клонировать только индивидуальный пакет.

Создание персонального Wok

Если ваши пакеты предназначены только для персонального использования и вы не планируете включать их в репозитории SliTaz, можно создать wok с нуля.

# cook setup 

Компиляция и сборка пакетов

Для того, чтобы собрать ваш первый пакет, CookUtils должен знать, где располагается ваш рабочий каталог. По умолчанию путь к нему /home/slitaz/wok, но вы можете его изменить или переименовать wok, который вы хотите скачать.

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

Мы не используем последний шаг «make install»; созданные файлы не устанавливаются в систему, они остаются в выходной папке ($DESTDIR), готовые к упаковке.

Желательно, чтобы создавая ваш первый пакет, вы не усложняли его и создавали пакет без изменения его рецепта или поиска зависимостей. M4 является идеальным кандидатом для наших целей:

# cook m4

После того, как CookUtils соберет M4, готовый ​​пакет будет помещен в папку, указанную в файле конфигурации (по умолчанию /home/slitaz/packages). Если все прошло хорошо, вы можете установить пакет на хост-систему или использовать его для создания дистрибутива LiveCD с помощью TazLiTo!

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

# cook new имя_пакета --interactive

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

Использование списка

CookUtils может скомпилировать несколько пакетов с помощью одной команды. Это достигается с помощью списка приготовления, текстового файла по одному пакету на строке. CookUtils может принять список приготовления с командой list; например, для приготовления списка mypkgs:

# cook list mypkgs.cooklist

Параметры компиляции пакета

Хотя вы можете использовать любые нужные параметры, необходимо соблюдать «Стандарт иерархии файловой системы», следовать документации в /usr/share/doc и стандартам FreeDesktop (.desktop).

Специфичные параметры

Параметры, специфичные для каждого пакета, вы должны определить самостоятельно; например, можно отключить поддержку XML, чтобы уменьшить размер бинарников PHP и избавиться от libxml2, но в случае с PHP, это того не стоит, т.к. будет потеряна функциональность. Если у вас есть сомнения, посмотрите на рецепты и параметры компилятора в compile_rules.

Оптимизация

Официальные пакеты SliTaz оптимизируются для i486. Настроить аргументы оптимизации можно в файле /etc/slitaz/cook.conf, находятся они в переменной $CONFIGURE_ARGS. Если вы хотите собрать пакет с другими аргументами, вы можете изменить файл конфигурации CookUtils:

CONFIGURE_ARGS="--build=i486-pc-linux-gnu --host=i486-pc-linux-gnu"

Файлы для включения/исключения

Как правило, базовые пакеты не содержат ни файлов man, info и doc, ни статических библиотек; для них следует создавать дополнительные пакеты с именами пакет-doc или пакет-dev. Обратите внимание, что SliTaz не намерен использовать команды man или info, поэтому и нет руководств или информационных файлов GNU. Создание пакетов, содержащих документацию действительно необязательно. В отличие от этого, больше ценится написание документации в Handbook, т.к. он широко доступен и легко может быть обновлен и улучшен.

С точки зрения конфигурации, цель состоит в том, чтобы предложить основные файлы конфигурации для непосредственного запуска пакета. В особых случаях, как например, с веб-сервером LightTPD, SliTaz поставляет файлы конфигурации и запуска скриптов в /etc/init.d (описано в Handbook). Для нового пакета, вы свободны в выборе конфигурации по умолчанию в зависимости от того, что вы считаете лучшим для конечного пользователя. В папке /usr/share/examples имеются примеры конфигураций и другая полезная информация.

Категории пакетов

Категории пакетов используются только в информационных целях и не являются неизменными. Идея состоит в том, чтобы классифицировать пакеты, так что веб-страница, которая восстанавливает данные в рецепте пакета, может быть создана каждую ночь. Короче говоря, помещайте пакеты разработчиков в категорию «devel», Xorg — в «x-window», и различные новые пакеты в «extra».

Структура пакета Wok

Структура пакетов в Wok всегда должна соблюдаться для того, чтобы CookUtils смог найти нужные файлы и папки. Возможное содержимое пакета (обратите внимание на папку taz/, создающуюся во время приготовления):

Cookutils автоматически вызывает TazPkg для упаковки папки taz. Он также перенаправляет любые указания по упаковке, изложенные в рецепте.

Структура tazpkg

The SliTaz packages are cpio archives containing files and a file-system compressed with gzip: