Capítulo 8. Práticas Avançadas de pkg-plist

Índice
8.1. Alterando o pkg-plist Baseado em Variáveis Make
8.2. Diretórios Vazios
8.3. Arquivos de Configuração
8.4. Lista de Pacotes Estática versus Dinâmica
8.5. Criação Automatizada da Lista de Pacotes
8.6. Expandindo a Lista de Pacotes com Keywords

8.1. Alterando o pkg-plist Baseado em Variáveis Make

Alguns ports, particularmente os p5- ports, precisam mudar seus pkg-plist dependendo de quais opções eles são configurados com (ou versão de perl, no caso de p5- ports). Para tornar isso fácil, todas as instâncias pkg-plist de %%OSREL%%, %%PERL_VER%% e %%PERL_VERSION%% serão substituídas apropriadamente. O valor de %%OSREL%% é a revisão numérica do sistema operacional (por exemplo,4.9). %%PERL_VERSION%% e %%PERL_VER%% é o número completo da versão perl (por exemplo,5.8.9). Muitos outros %%VARS%% relacionados aos arquivos de documentação do port são descritos na seção relevante.

Para fazer outras substituições, defina PLIST_SUB com uma lista de pares VAR=VALOR e as instâncias de %%VAR%% serão substituídas por VALOR no pkg-plist.

Por exemplo, se um port instalar muitos arquivos em um subdiretório específico da versão, use um placeholder para a versão de modo que o pkg-plist não precise ser gerado novamente toda vez que o port é atualizado. Por exemplo:

OCTAVE_VERSION=	${PORTREVISION}
PLIST_SUB=	OCTAVE_VERSION=${OCTAVE_VERSION}

no Makefile e use %%OCTAVE_VERSION%% onde quer que a versão apareça em pkg-plist. Quando o port é atualizado, não será necessário editar dezenas (ou em alguns casos, centenas) de linhas no pkg-plist.

Se os arquivos são instalados condicionalmente pelas opções definidas no port, a maneira usual de lidar com isso é prefixando as linhas pkg-plist com %%OPT%% para linhas necessárias quando a opção está ativada ou %%NO_OPT%% quando a opção está desativada e adicionando OPTIONS_SUB=yes ao Makefile. Veja Seção 5.13.3.1, “OPTIONS_SUB para mais informações.

Por exemplo, se houver arquivos que são instalados apenas quando a opção X11 está ativada, e o Makefile tem:

OPTIONS_DEFINE=	X11
OPTIONS_SUB=	yes

No pkg-plist, insira %%X11%% no início das linhas que serão instaladas apenas quando a opção estiver habilitada, assim:

%%X11%%bin/foo-gui

Esta substituição será feita entre os targets pre-install e do-install, lendo a partir do PLIST e escrevendo em TMPPLIST (padrão:WRKDIR/.PLIST.mktmp). Então, se o port gera o PLIST na hora da compilação, faça isso em ou antes do pre-install. Além disso, se o port precisar editar o arquivo resultante, faça-o em post-install em um arquivo chamado TMPPLIST.

Outra maneira de modificar a lista de empacotamento de um port é baseada na configuração das variáveisPLIST_FILES e PLIST_DIRS. O valor de cada variável é considerado como uma lista de nomes de caminho para gravar no TMPPLIST junto com conteúdo do PLIST. Enquanto os nomes listados no PLIST_FILES e PLIST_DIRS estão sujeitos a substituição do %%VAR%% conforme descrito acima, é melhor usar o ${VAR} diretamente. Exceto por isso, os nomes contidos no PLIST_FILES aparecerão inalterados na lista final de packing, enquanto o @dir será anexado aos nomes do PLIST_DIRS. Para fazer efeito, o PLIST_FILES e o PLIST_DIRS devem ser definidos antes que o TMPPLIST seja escrito, isto é, no pre-install ou antes.

De vez em quando, usar OPTIONS_SUB não é o suficiente. Nesses casos, adicionar uma TAG para PLIST_SUB dentro do Makefile com um valor especial @comment, faz as ferramentas de pacote ignorar a linha. Por exemplo, se alguns arquivos são instalados apenas quando a opção X11 está habilitada e a arquitetura é i386:

.include <bsd.port.pre.mk>

.if ${PORT_OPTIONS:MX11} && ${ARCH} == "i386"
PLIST_SUB+=	X11I386=""
.else
PLIST_SUB+=	X11I386="@comment "
.endif

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>.