Если вашему порту требуется построение довольно
различающихся версий пакетов через переменную (задающую,
например, разрешение, или размер бумаги), которая принимает
различные значения, создайте для каждого пакета отдельный
подкаталог, чтобы пользователям было легче определить, каким
пакетом воспользоваться, но попробуйте использовать совместно
между портами как можно больше файлов. В типичном случае вам
потребуются только очень короткие файлы
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.
Этот, и другие документы, могут быть скачаны с https://download.freebsd.org/ftp/doc/.
По вопросам, связанным с FreeBSD, прочитайте
документацию прежде чем писать в
<questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите в рассылку
<doc@FreeBSD.org>.