7.2. Usando FLAVORS

Para declarar um port com vários flavors, adicione FLAVORS no seu Makefile. O primeiro flavor em FLAVORS é o flavor padrão.

Dica:

Isso pode ajudar a simplificar a lógica do Makefile para também definir um FLAVOR como:

FLAVOR?=	${FLAVORS:[1]}

Importante:

Para distinguir os flavors das opções, que são sempre letras maiúsculas, os nomes dos flavors podem conter apenas letras minúsculas, números e underline _.

Exemplo 7.1. Uso Básico de Flavors

Se um port tiver um port slave lite, o port slave pode ser removido, e o port pode ser convertido em flavors com:

FLAVORS=	default lite
lite_PKGNAMESUFFIX=	-lite
[...]
.if ${FLAVOR:U} != lite
[enable non lite features]
.endif

Nota:

O primeiro flavor é o padrão, e é chamado aqui de default. Não é uma obrigação e, se possível, use um nome de flavor mais específico, como em Exemplo 7.2, “Outro Uso Básico de Flavors”.


Exemplo 7.2. Outro Uso Básico de Flavors

Se um port tiver um port slave -nox11, o port slave pode ser removido, e o port pode ser convertido em flavors com:

FLAVORS=	x11 nox11
FLAVOR?=	${FLAVORS:[1]}
nox11_PKGNAMESUFFIX=	-nox11
[...]
.if ${FLAVOR} == x11
[enable x11 features]
.endif

Exemplo 7.3. Uso Mais Complexo de Flavors

Aqui está um excerto ligeiramente editado do que está presente em devel/libpeas, um port que usa os flavors Python. Com as versões padrões do Python 2 e 3 sendo 2.7 e 3.6, ele irá automaticamente mudar para FLAVORS=py27 py36

USES=		gnome python
USE_PYTHON=	flavors 1

.if ${FLAVOR:Upy27:Mpy2*} 2
USE_GNOME=	pygobject3 3

CONFIGURE_ARGS+=	--enable-python2 --disable-python3

BUILD_WRKSRC=	${WRKSRC}/loaders/python 4
INSTALL_WRKSRC=	${WRKSRC}/loaders/python 5
.else # py3*
USE_GNOME+=	py3gobject3 6

CONFIGURE_ARGS+=	--disable-python2 --enable-python3 \
			ac_cv_path_PYTHON3_CONFIG=${LOCALBASE}/bin/python${PYTHON_VER}-config 7

BUILD_WRKSRC=	${WRKSRC}/loaders/python3 8
INSTALL_WRKSRC=	${WRKSRC}/loaders/python3 9
.endif

py34_PLIST=	${.CURDIR}/pkg-plist-py3 10
py35_PLIST=	${.CURDIR}/pkg-plist-py3 11
py36_PLIST=	${.CURDIR}/pkg-plist-py3 12

1

Este port não usa o USE_PYTHON=distutils mas precisa do flavor Python de qualquer maneira.

2

Para proteger contra o FLAVOR estar vazio, o que causaria um erro no make(1), use ${FLAVOR:U} em comparações de strings em vez de ${FLAVOR}.

3 6

As ligações gobject3 doGnome Python têm dois nomes diferentes, um para Python2, pygobject3 e um para Python3, py3gobject3.

4 5 8 9

O script configure tem que ser executado em ${WRKSRC}, mas estamos interessados ​​apenas em compilar e instalar as partes Python 2 ou Python 3 do software, então configure os diretórios base de compilação e instalação apropriadamente.

7

Sugestão sobre o nome correto do caminho do script de configuração do Python 3.

10 11 12

A lista de empacotamento é diferente quando compilada com Python 3. Como existem três possíveis versões do Python3 , defina PLIST para todos os três usando o helper.


7.2.1. Flavors Helpers

Para tornar o Makefile mais fácil de ser escrito, existem alguns flavors helpers.

Esta lista de helpers definirá sua variável:

  • flavor_PKGNAMEPREFIX

  • flavor_PKGNAMESUFFIX

  • flavor_PLIST

  • flavor_DESCR

Esta lista de helpers será anexada à sua variável:

  • flavor_CONFLICTS

  • flavor_CONFLICTS_BUILD

  • flavor_CONFLICTS_INSTALL

  • flavor_PKG_DEPENDS

  • flavor_EXTRACT_DEPENDS

  • flavor_PATCH_DEPENDS

  • flavor_FETCH_DEPENDS

  • flavor_BUILD_DEPENDS

  • flavor_LIB_DEPENDS

  • flavor_RUN_DEPENDS

  • flavor_TEST_DEPENDS

Exemplo 7.4. Flavor Específico PKGNAME

Como todos os pacotes devem ter um nome de pacote diferente, os flavors devem mudar os seus, usando flavor_PKGNAMEPREFIX e o flavor_PKGNAMESUFFIX torna isso fácil:

FLAVORS=	normal lite
lite_PKGNAMESUFFIX=	-lite

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