Se o port precisar criar versões ligeiramente diferentes de pacotes fazendo com que uma variável (por exemplo, resolução ou tamanho de papel) assuma valores diferentes, crie um subdiretório por pacote para facilitar aos usuários a visualização do que fazer, mas tente compartilhar o máximo possível de arquivos entre os ports. Normalmente, usando variáveis inteligentemente, apenas um Makefile
bem curto será necessário em todos, exceto em um dos diretórios. No Makefile
solitário, use MASTERDIR
para especificar o diretório onde o restante dos arquivos estão. Além disso, use uma variável como parte de PKGNAMESUFFIX
para que os pacotes tenham nomes diferentes.
Isso será melhor demonstrado por um exemplo. Isso é parte de print/pkfonts300/Makefile
;
PORTNAME= pkfonts${RESOLUTION} PORTVERSION= 1.0 DISTFILES= pk${RESOLUTION}.tar.gz PLIST= ${PKGDIR}/pkg-plist.${RESOLUTION} .if !defined(RESOLUTION) RESOLUTION= 300 .else .if ${RESOLUTION} != 118 && ${RESOLUTION} != 240 && \ ${RESOLUTION} != 300 && ${RESOLUTION} != 360 && \ ${RESOLUTION} != 400 && ${RESOLUTION} != 600 .BEGIN: @${ECHO_MSG} "Error: invalid value for RESOLUTION: \"${RESOLUTION}\"" @${ECHO_MSG} "Possible values are: 118, 240, 300, 360, 400 and 600." @${FALSE} .endif .endif
print/pkfonts300 também tem todos os patches, arquivos de pacotes, etc. Rodando make
nele, será assumido o valor padrão para a resolução (300) e o port será compilado normalmente.
Quanto às outras resoluções, este é o print/pkfonts360/Makefile
completo:
RESOLUTION= 360 MASTERDIR= ${.CURDIR}/../pkfonts300 .include "${MASTERDIR}/Makefile"
(print/pkfonts118/Makefile
, print/pkfonts600/Makefile
, e todos os outros são semelhantes). A definição de MASTERDIR
diz ao bsd.port.mk
que o conjunto regular de subdiretórios como FILESDIR
e SCRIPTDIR
podem ser encontrados em pkfonts300
. A linha RESOLUTION=360
irá substituir a linha RESOLUTION=300
em pkfonts300/Makefile
e o port será compilado com a resolução definida para 360.
All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/
Questions that are not answered by the
documentation may be
sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.