Руководство FreeBSD по созданию портов
Пред. | Глава 13. Файлы `pkg-`*`` | След.

# 13.5. Изменение содержимого `pkg-plist` в зависимости от make-переменных

Некоторые порты, в частности, порты `p5-`, должны менять содержимое своих файлов `pkg-plist` в зависимости от того, с какими параметрами они были отконфигурированы (или в зависимости от версии языка `perl` в случае портов `p5-`). Чтобы облегчить этот процесс, любые вхождения ключевых слов `%%OSREL%%`, `%%PERL_VER%%` и `%%PERL_VERSION%%` в файле `pkg-plist` будут заменяться соответствующими значениями. Значением `%%OSREL%%` является номер версии операционной системы (например, `4.9`). `%%PERL_VERSION%%` обозначает полный номер версии `perl` (например, `5.00502`), а `%%PERL_VER%%` - номер версии `perl` без номера патча (например, `5.005`).

Если вам нужно сделать другие подстановки, вы можете указать в переменной `PLIST_SUB` список пар ``VAR`=`VALUE``, и все вхождения `%%`VAR`%%` в файле `pkg-plist` будут заменяться на значение `VALUE`.

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

    OCTAVE_VERSION= 2.0.13
    PLIST_SUB=  OCTAVE_VERSION=${OCTAVE_VERSION}

в файле `Makefile` и использовать `%%OCTAVE_VERSION%%` везде, где нужно указать номер версии в файле `pkg-plist`. Таким образом, при обновлении порта вам не нужно будет менять десятки (а в некоторых случаях и сотни) строк в файле `pkg-plist`.

Эта подстановка (также, как и добавление любых справочных страниц) будет сделана между выполнением целей `pre-install` и `do-install`, посредством чтения файла ``PLIST`` и записью в файл ``TMPPLIST`` (по умолчанию это файл ``WRKDIR`/.PLIST.mktmp`). Так что если ваш порт строит ``PLIST`` на лету, делайте это во время или до выполнения цели `pre-install`. Кроме того, если вашему порту требуется отредактировать получающийся файл, делайте это в цели `post-install` изменением файла ``TMPPLIST``.

Другой способ изменения списка сборки порта основан на определении значений переменных `PLIST_FILES` и `PLIST_DIRS`. Каждое из них рассматривается как перечень путей для записи в ``TMPPLIST`` содержимого ``PLIST``. Имена, перечисленные в `PLIST_FILES` и `PLIST_DIRS`, подвергаются подстановке `%%VAR%%`, как описано выше. За исключением этого, имена из `PLIST_FILES` будут появляться в окончательном варианте перечня сборки без изменений, когда как `@dirrm` будет предшествовать именам из `PLIST_DIRS`. Для того, чтобы возыметь действие, `PLIST_FILES` и `PLIST_DIRS` должны задаваться до того, как будет записываться ``TMPPLIST``, то есть в цели `pre-install` или ещё раньше.

Пред. | Начало | След.
`pkg-req` | Уровень выше | Изменение имён файлов `pkg-`*``

По вопросам связанным с системой портов для FreeBSD, пишите по адресу <ports@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите по адресу <doc@FreeBSD.org>.