# Chapter 15. Ordem das Variáveis ​​nos Makefiles de Port

Esta tradução pode estar desatualizada. Para ajudar com as traduções, acesse a ferramenta de traduções do FreeBSD.

As primeiras seções do Makefile devem sempre vir na mesma ordem. Este padrão faz com que todos possam ler facilmente qualquer port sem ter que procurar variáveis em uma ordem aleatória.

A primeira linha de um Makefile é sempre um comentário contendo o ID de controle de versão do Subversion, seguido por uma linha vazia. Em novos ports, parece assim:

    # $FreeBSD: head/pt_BR.ISO8859-1/books/porters-handbook/book.xml 54410 2020-08-05 22:13:01Z dbaio $

Nos ports existentes, o Subversion expandiu essa entrada ficando assim:

    # $FreeBSD: head/pt_BR.ISO8859-1/books/porters-handbook/book.xml 54410 2020-08-05 22:13:01Z dbaio $

| As seções e variáveis descritas aqui são obrigatórias em um port comum. Em um port slave, muitas seções e variáveis podem ser ignoradas.

| Cada bloco seguinte deve ser separado do bloco anterior por uma única linha em branco. Nos blocos a seguir, apenas defina as variáveis ​​que são requeridas pelo port. Defina essas variáveis ​​na ordem em que são mostradas aqui.

## 15.1. Bloco `PORTNAME`

Este bloco é o mais importante. Ele define o nome do port, a versão, o local do arquivo de distribuição e a categoria. As variáveis ​​devem estar nesta ordem:

- `PORTNAME`

- `PORTVERSION`[1]

- `DISTVERSIONPREFIX`

- `DISTVERSION`[1]

- `DISTVERSIONSUFFIX`

- `PORTREVISION`

- `PORTEPOCH`

- `CATEGORIES`

- `MASTER_SITES`

- `MASTER_SITE_SUBDIR` (descontinuado)

- `PKGNAMEPREFIX`

- `PKGNAMESUFFIX`

- `DISTNAME`

- `EXTRACT_SUFX`

- `DISTFILES`

- `DIST_SUBDIR`

- `EXTRACT_ONLY`

## 15.2. Bloco `PATCHFILES`

Este bloco é opcional. As variáveis ​​são:

- `PATCH_SITES`

- `PATCHFILES`

- `PATCH_DIST_STRIP`

## 15.3. Bloco `MAINTAINER`

Este bloco é obrigatório. As variáveis ​​são:

- `MAINTAINER`

- `COMMENT`

## 15.4. Bloco `LICENSE`

Este bloco é opcional, embora seja altamente recomendado. As variáveis ​​são:

- `LICENSE`

- `LICENSE_COMB`

- `LICENSE_GROUPS` ou `LICENSE_GROUPS_NAME`

- `LICENSE_NAME` ou `LICENSE_NAME_NAME`

- `LICENSE_TEXT` ou `LICENSE_TEXT_NAME`

- `LICENSE_FILE` ou `LICENSE_FILE_NAME`

- `LICENSE_PERMS` ou `LICENSE_PERMS_NAME_`

- `LICENSE_DISTFILES` ou `LICENSE_DISTFILES_NAME`

Se houver várias licenças, ordene as variáveis LICENSE_VAR_NOME pelo nome de licença.

## 15.5. Mensagens Genéricas `BROKEN`/`IGNORE`/`DEPRECATED`

Este bloco é opcional. As variáveis ​​são:

- `DEPRECATED`

- `EXPIRATION_DATE`

- `FORBIDDEN`

- `BROKEN`

- `BROKEN_*`

- `IGNORE`

- `IGNORE_*`

- `ONLY_FOR_ARCHS`

- `ONLY_FOR_ARCHS_REASON*`

- `NOT_FOR_ARCHS`

- `NOT_FOR_ARCHS_REASON*`

| `BROKEN_*` e `IGNORE_*` podem ser qualquer variável genérica, por exemplo, `IGNORE_amd64`, `BROKEN_FreeBSD_10`, etc. Com exceção das variáveis ​​que dependem de uma variável `USES`, coloque essas em `USES` e `USE_x`. Por exemplo, `IGNORE_WITH_PHP` só funciona se `php` estiver definido e a variável `BROKEN_SSL` somente se `ssl` estiver definido. Se o port estiver marcado como BROKEN quando algumas condições forem atendidas, e tais condições puderem ser testadas somente após incluir o bsd.port.options.mk ou bsd.port.pre.mk, então essas variáveis ​​devem ser definidas mais tarde, em O Restante das Variáveis.

## 15.6. O Bloco de Dependências

Este bloco é opcional. As variáveis ​​são:

- `FETCH_DEPENDS`

- `EXTRACT_DEPENDS`

- `PATCH_DEPENDS`

- `BUILD_DEPENDS`

- `LIB_DEPENDS`

- `RUN_DEPENDS`

- `TEST_DEPENDS`

## 15.7. Flavors

Este bloco é opcional.

Comece esta seção com as definições de `FLAVORS`. Continue com as possíveis variáveis assistentes de Flavors. Veja Usando FLAVORS para maiores informações.

Variáveis ​​de definição de construção não disponíveis como assistentes, usando `.if ${FLAVOR:U} == foo` devem ir em abaixo de suas respectivas seções.

## 15.8. `USES` e `USE_x`

Comece esta seção com a definição da variável `USES` e, em seguida, possíveis variáveis `USE_x`.

Mantenha as variáveis ​​relacionadas juntas. Por exemplo, se estiver usando a variável `USE_GITHUB`, coloque sempre as variáveis `GH_*` ​​logo após ela.

## 15.9. Variáveis ​​Padrão bsd.port.mk

Este bloco de seção é para variáveis ​​que podem ser definidas em bsd.port.mk que não pertencem a nenhum dos blocos de seção anteriores.

A ordem não é importante, no entanto, tente manter variáveis ​​semelhantes juntas. Por exemplo, variáveis ​​`USERS` e `GROUPS`. Variáveis ​​de configuração `CONFIGURE*` e ```*``CONFIGURE`. Lista de arquivos e diretórios `PORTDOCS` e `PORTEXAMPLES`.

## 15.10. Opções e Assistentes

Se o port usa o framework de opções, defina `OPTIONS_DEFINE` e `OPTIONS_DEFAULT`, então as outras variáveis `OPTIONS*`, depois as de descrições ```*``DESC`, e então os assistentes de opções. Tente e ordene todas essas variáveis alfabeticamente.

Exemplo 1. Exemplo de Ordenamento das Variáveis ​​de Opções

As opções `FOO` e `BAR` não possuem uma descrição padrão, portanto, é necessário escrever uma. As outras opções já possuem em Mk/bsd.options.desc.mk então escrever uma não é necessário. Opções `DOCS` e `EXAMPLES` usam os assistentes de destino para instalar seus arquivos, eles são mostrados aqui por completo, apesar de pertencerem a Os Targets, então outras variáveis ​​e destinos podem ser inseridos antes deles.

    OPTIONS_DEFINE=	DOCS EXAMPLES FOO BAR
    OPTIONS_DEFAULT=	FOO
    OPTIONS_RADIO=	SSL
    OPTIONS_RADIO_SSL=    OPENSSL GNUTLS
    OPTIONS_SUB=	yes

    BAR_DESC=		Enable bar support
    FOO_DESC=		Enable foo support

    BAR_CONFIGURE_WITH=	bar=${LOCALBASE}
    FOO_CONFIGURE_ENABLE=	foo
    GNUTLS_CONFIGURE_ON=	--with-ssl=gnutls
    OPENSSL_CONFIGURE_ON=	--with-ssl=openssl

    post-install-DOCS-on:
          ${MKDIR} ${STAGEDIR}${DOCSDIR}
          cd ${WRKSRC}/doc && ${COPYTREE_SHARE} . ${STAGEDIR}${DOCSDIR}

    post-install-EXAMPLES-on:
          ${MKDIR} ${STAGEDIR}${EXAMPLESDIR}
          cd ${WRKSRC}/ex && ${COPYTREE_SHARE} . ${STAGEDIR}${EXAMPLESDIR}

## 15.11. O Restante das Variáveis

E então, o restante das variáveis ​​que não são mencionadas nos blocos anteriores.

## 15.12. Os Targets

Depois que todas as variáveis ​​são definidas, targets opcionais make(1) podem ser definidos. Mantenha `pre-*` antes de `post-*` e na mesma ordem em que as diferentes etapas são executadas:

- `fetch`

- `extract`

- `patch`

- `configure`

- `build`

- `install`

- `test`

| Ao usar os assistentes de opções, os targets são classificados alfabeticamente, mas mantenha `*-on` antes do `*-off`. Quando também estiver usando o target principal, mantenha o target principal antes dos opcionais:
    post-install:
    	# install generic bits

    post-install-DOCS-on:
    	# Install documentation

    post-install-X11-on:
    	# Install X11 related bits

    post-install-X11-off:
    	# Install bits that should be there if X11 is disabled

Última alteração em: 18 de fevereiro de 2025 por Fernando Apesteguía

Anterior
Início
Próximo