Руководство FreeBSD по созданию портов
Пред. |  | След.

# Глава 7. `MASTERDIR`

Если вашему порту требуется построение довольно различающихся версий пакетов через переменную (задающую, например, разрешение, или размер бумаги), которая принимает различные значения, создайте для каждого пакета отдельный подкаталог, чтобы пользователям было легче определить, каким пакетом воспользоваться, но попробуйте использовать совместно между портами как можно больше файлов. В типичном случае вам потребуются только очень короткие файлы `Makefile` во всех каталогах, кроме одного, если вы будете использовать переменные с умом. В отдельных файлах `Makefile` вы можете использовать переменную `MASTERDIR` для указания каталога, в котором находятся все остальные файлы. Также используйте переменную как часть `PKGNAMESUFFIX`, чтобы пакеты имели разные имена.

Продемонстрируем это на примере. Вот часть файла `japanese/xdvi300/Makefile`:

    PORTNAME=       xdvi
    PORTVERSION=    17
    PKGNAMEPREFIX=  ja-
    PKGNAMESUFFIX=  ${RESOLUTION}
     :
    # default
    RESOLUTION?=   300
    .if ${RESOLUTION} != 118 && ${RESOLUTION} != 240 && \
           ${RESOLUTION} != 300 && ${RESOLUTION} != 400
           @${ECHO} "Error: invalid value for RESOLUTION: \"${RESOLUTION}\""
           @${ECHO} "Possible values are: 118, 240, 300 (default) and 400."
           @${FALSE}
    .endif

Порт `japanese/xdvi300` содержит также все обычные патчи, файлы для пакета и так далее. Если вы введете здесь команду `make`, она возьмет в качестве разрешения значение по умолчанию (300) и построит порт обычным образом.

Для другого разрешения приведем полный `xdvi118/Makefile`:

    RESOLUTION=    118
    MASTERDIR=  ${.CURDIR}/../xdvi300

    .include "${MASTERDIR}/Makefile"

(`xdvi240/Makefile` и `xdvi400/Makefile` похожи). Задание `MASTERDIR` говорит `bsd.port.mk`, что обычный набор подкаталогов типа `FILESDIR` и `SCRIPTDIR` находится в каталоге `xdvi300`. Строчка `RESOLUTION=118` переопределят строку `RESOLUTION=300` в файле `xdvi300/Makefile` и порт будет построен с разрешением 118.

Пред. | Начало | След.
Использование SDL |  | Версии динамических библиотек

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