5.8. 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_MSG} "Error: invalid value for RESOLUTION: \"${RESOLUTION}\""
       @${ECHO_MSG} "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.

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