FLAVOR?= ${FLAVORS:[1]}
Capítulo 7. Flavors
Esta tradução pode estar desatualizada. Para ajudar com as traduções, acesse a ferramenta de traduções do FreeBSD.
Índice
7.1. Uma Introdução aos Flavors
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.
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.
Isso pode ajudar a simplificar a lógica do Makefile para também definir um |
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. |
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
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
7.3. 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
7.3.1. Flavors PHP com Aplicações PHP
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 |
7.4. 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ãoSupondo 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+
7.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: 9 de março de 2024 por Danilo G. Baio