FLAVOR?= ${FLAVORS:[1]}
Capítulo 7. Flavors
This translation may be out of date. To help with the translations please access the FreeBSD translations instance.
Í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: 11 de dezembro de 2021 por Sergio Carlavilla Delgado