FLAVOR?= ${FLAVORS:[1]}
Esta tradução pode estar desatualizada. Para ajudar com as traduções, acesse a ferramenta de traduções do FreeBSD .
Os flavors são uma maneira de ter várias variações de um port. O port é construído várias vezes, com variações.
Por exemplo, um port pode ter uma versão normal com muitos recursos e algumas dependências, e uma versão leve "lite" com apenas recursos básicos e dependências mínimas.
Outro exemplo poderia ser, um port pode ter um flavor GTK e um QT, dependendo de qual kit de ferramentas ele usa.
Para declarar um port com vários flavors, adicione
FLAVORS
no seu
Makefile
. O primeiro flavor em
FLAVORS
é o flavor padrão.
|
Isso pode ajudar a simplificar a lógica do
Makefile
para também definir um
FLAVOR?= ${FLAVORS:[1]}
|
|
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
|
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
|
O primeiro flavor é o padrão, e é chamado aqui de
|
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
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 | As ligações gobject3 doGnome Python têm dois nomes diferentes, um para Python2, pygobject3 e um para Python3, py3gobject3. |
| 4 |
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.
|
| 5 | Sugestão sobre o nome correto do caminho do script de configuração do Python 3. |
| 6 |
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
.
|
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
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
USES=php
e Flavors
Ao usar o
USES=php
com um destes argumentos,
phpize
,
ext
,
zend
ou
pecl
, o port terá automaticamente o
FLAVORS
preenchido com a versão PHP que ele suporta.
|
Todos os exemplos assumem que as versões PHP suportadas atualmente são 5.6, 7.0, 7.1 e 7.2. |
USES=php
Isso irá gerar o pacote para todas as versões suportadas:
PORTNAME= some-ext
PORTVERSION= 0.0.1
PKGNAMEPREFIX= ${PHP_PKGNAMEPREFIX}
USES= php:ext
Isto irá gerar pacotes para todas as versões suportadas, menos a 7.2:
PORTNAME= some-ext
PORTVERSION= 0.0.1
PKGNAMEPREFIX= ${PHP_PKGNAMEPREFIX}
USES= php:ext
IGNORE_WITH_PHP= 72
Aplicações PHP também podem ter flavors.
Isso permite gerar pacotes para todas as versões do PHP, para que os usuários possam usá-los com qualquer versão que precisarem em seus servidores.
|
Aplicações PHP que são acrescidas de flavors
devem
acrescentar
|
Incluir o suporte de Flavors em uma aplicação PHP é simples:
PKGNAMESUFFIX= ${PHP_PKGNAMESUFFIX}
USES= php:flavors
|
Ao adicionar uma dependência em um port com flavors PHP, use
|
USES=python
e Flavors
Ao usar
USES=python
e
USE_PYTHON=distutils
, o port irá automaticamente preencher
FLAVORS
com a versão Python que suporta.
USES=python
Supondo que as versões suportadas do Python são 2.7, 3.4, 3.5 e 3.6, e a versão padrão do Python 2 e 3 são 2.7 e 3.6, um port com:
USES= python USE_PYTHON= distutils
Receberá esses flavors:
py27
e
py36
.
USES= python USE_PYTHON= distutils allflavors
Receberá esses flavors:
py27
,
py34
,
py35
e
py36
.
USES=python
com Requisitos de Versão
Supondo que as versões suportadas do Python são 2.7, 3.4, 3.5 e 3.6, e a versão padrão do Python 2 e 3 são 2.7 e 3.6, um port com:
USES= python:-3.5 USE_PYTHON= distutils
Vai ter esse flavor:
py27
.
USES= python:-3.5 USE_PYTHON= distutils allflavors
Receberá esses flavors:
py27
,
py34
e
py35
.
USES= python:3.4+ USE_PYTHON= distutils
Vai ter esse flavor:
py36
.
USES= python:3.4+ USE_PYTHON= distutils allflavors
Receberá esses flavors:
py34
,
py35
e
py36
.
A variável
PY_FLAVOR
é disponibilizada para depender da versão correta dos módulos Python. Todas as dependências em ports Python com flavors devem usar
PY_FLAVOR
, e não
FLAVOR
diretamente.
distutils
Se a versão padrão do Python3 é 3.6, o seguinte irá definir a variável
PY_FLAVOR
para
py36
:
RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}mutagen>0:audio/py-mutagen@${PY_FLAVOR}
USES= python:3.5+
USES=lua
e Flavors
Ao usar
lua:module
ou
lua:flavors
, o port terá automaticamente
FLAVORS
preenchidos com as versões Lua que suporta. No entanto, não se espera que aplicativos comuns (em vez de módulos Lua) usem este recurso; a maioria das aplicações que incorporam ou usam Lua simplesmente devem usar
USES=lua
.
LUA_FLAVOR
está disponível (e deve ser usado) para depender da versão correta das dependências, independentemente do port usar os parâmetros
flavors
ou
module
.
Veja Usando Lua para maiores informações.
Última alteração em : 18 de fevereiro de 2025 por Fernando Apesteguía