Table of Contents

Рецепты

В этом документе описаны тонкости работы с рецептами, которые используют CookUtils (для компиляции и сборки пакетов для SliTaz) а также TazPkg, wok и утилиты. TazPkg использует рецепт пакета для установки, удаления и получения информации о пакете «.tazpkg». Каждый рецепт начинается с комментария на английском языке:

# SliTaz package receipt

Переменные

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

PACKAGE="clex"
VERSION="3.16"
CATEGORY="base-apps"
SHORT_DESC="Text mode file manager."
MAINTAINER="pankso@slitaz.org"

Переменные (необязательные)

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

Переменные, определяемые в Cookutils

Некоторые показатели становятся известны только во время приготовления пакета или после того, как пакет был приготовлен. CookUtils добавит их в рецепт автоматически.

Переменные, используемые в функциях

CookUtils определяет несколько переменных, облегчающих компиляцию и сборку пакетов tazpkg. Эти переменные автоматически контролируются CookUtils, используя информацию, содержащуюся в рецепте; они могут быть использованы в функциях compile_rules и genpkg_rules, описанных в разделе Функции.

Функции

Рецепт может содержать до четырех функций. CookUtils умеет управляться с функциями, содержащими правила компиляции (compile_rules) и правила создания пакета (genpkg_rules). Эти функции могут содержать любые стандартные команды GNU/Linux, такие, как sed, awk, patch и автоматически сконфигурированные переменные.

compile_rules()

При компиляции пакета: можно использовать переменную $src, чтобы перейти (cd) в папку с исходниками; можно использовать $CONFIGURE_ARGS, чтобы добавить аргументы из конфигурационного файла CookUtils. Для компиляции пакета вы можете запустить «make» без аргументов, а для установки пакет в папку _pkg необходимо использовать команду «make DESTDIR=$PWD/_pkg install». Общий пример:

# Rules to configure and make the package.
compile_rules()
{
	cd $src
	./configure --prefix=/usr --infodir=/usr/share/info \
	--mandir=/usr/share/man $CONFIGURE_ARGS
	make
	make DESTDIR=$PWD/_pkg install
}

genpkg_rules()

Для создания пакета tazpkg нужно указать необходимые команды в функции genpkg_rules. В этом примере мы создадим псевдо-папку /usr в файловой системе пакета, скопируем все бинарники, и в конце используем strip для очистки файлов:

# Rules to gen a SliTaz package suitable for Tazpkg.
genpkg_rules()
{
	mkdir -p $fs/usr
	cp -a $_pkg/usr/bin $fs/usr
	strip -s $fs/usr/bin/*
}

Обратите внимание, что в новом CookUtils команда strip теперь вызывается автоматически, без необходимости прописывания в рецепте.

pre_install() и post_install()

Эти функции вызываются TazPkg до установки и после установки пакета, соответственно. Они должны быть определены до создания пакета .tazpkg при помощи CookUtils. Если для этих функций нет правил, то функции не имеют смысл и должны быть удалены. Пример использования echo для отображения текста (функция не может быть пустой):

# Pre and post install commands for Tazpkg.
pre_install()
{
	echo "Выполнение команд перед установкой..."
}
post_install()
{
	echo "Выполнение команд после установки..."
}

pre_remove() и post_remove()

Эти функции вызываются TazPkg до удаления и после удаления пакета, соответственно. Они должны быть определены до создания пакета .tazpkg при помощи CookUtils. Если для этих функций нет правил, то функции не имеют смысл и должны быть удалены. Пример использования echo для отображения текста (функция не может быть пустой):

# Pre and post remove commands for Tazpkg.
pre_remove()
{
	echo "Выполнение команд перед удалением..."
}
post_remove()
{
	echo "Выполнение команд после удаления..."
}