Capítulo 6. MASTERDIR

Se seu port necessita construir versões ligeiramente diferentes dos pacotes tendo uma variável (por exemplo, resolução, ou tamanho do papel) pegue valores diferentes, crie um subdiretório por pacote para faze-lo mais facilmente aos usuários ver o que fazer, mas tentar compartilhar assim varios arquivos quanto possível entre os ports. Tipicamente você somente necessita um muito curto Makefile em tudo mas um dos diretórios se você usar variáveis inteligentes. No único Makefile, você pode usar MASTERDIR para especificar o diretório onde o resto dos arquivos estão. Também, use uma variável como parte do PKGNAMESUFFIX assim os pacotes terão nomes diferentes.

Isto será demonstrado melhor por um exemplo. Isto é parte do 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 tem também todos os regular patches, arquivos do pacote, etc. Se você digita make lá, ele pegará o valor padrão para a resolução (300) e construirá o port normalmente.

Assim para outras resoluções, este é o inteiro xdvi118/Makefile:

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

.include "${MASTERDIR}/Makefile"

(xdvi240/Makefile e xdvi400/Makefile são similares). A definição MASTERDIR diz ao bsd.port.mk que a definição regular de subdiretórios como FILESDIR e SCRIPTDIR are ser encontrado abaixo de xdvi300. A linha RESOLUTION=118 sobreescreverá a linha RESOLUTION=300 em xdvi300/Makefile e o port será construido com a resolução definida a 118.

For questions about the FreeBSD ports system, e-mail <ports@FreeBSD.org>.
For questions about this documentation, e-mail <doc@FreeBSD.org>.