Após 2013-10-08 (254273), o FreeBSD 10-CURRENT e as versões mais recentes têm um iconv nativo no sistema operacional. Em versões anteriores, o converters/libiconv era usado como dependência.
Para softwares que precisam do iconv, defina USES=iconv. As versões do FreeBSD antes do 10-CURRENT em 2013-08-13 (254273) não tem um iconv nativo. Nestas versões anteriores, uma dependência do converters/libiconv será adicionada automaticamente.
Quando um port define USES=iconv, estas variáveis estarão disponíveis:
| Nome da variável | Propósito | Valor antes do FreeBSD 10-CURRENT 254273(2013-08-13) | Valor após o FreeBSD 10-CURRENT 254273(2013-08-13) |
|---|---|---|---|
ICONV_CMD | Diretório onde o binário iconv reside | ${LOCALBASE}/bin/iconv | /usr/bin/iconv |
ICONV_LIB | argumento do ld para vincular ao libiconv (se necessário) | -liconv | (vazio) |
ICONV_PREFIX | Diretório onde a implementação do iconv reside (útil para configurar scripts) | ${LOCALBASE} | /usr |
ICONV_CONFIGURE_ARG | Argumento de configuração pré-configurado para scripts de configuração | --with-libiconv-prefix=${LOCALBASE} | (vazio) |
ICONV_CONFIGURE_BASE | Argumento de configuração pré-configurado para scripts de configuração | --with-libiconv=${LOCALBASE} | (vazio) |
Esses dois exemplos preenchem automaticamente as variáveis com o valor correto para sistemas usando respectivamente o converters/libiconv ou o iconv nativo:
Como mostrado acima, a variável ICONV_LIB estará vazia quando um iconv nativo estiver presente. Isso pode ser usado para detectar o iconv nativo e responder adequadamente.
Às vezes um programa tem um argumento ld ou caminho de pesquisa codificado em um Makefile ou no script configure. Essa abordagem pode ser usada para resolver esse problema:
-liconvUSES= iconv
post-patch:
@${REINPLACE_CMD} -e 's/-liconv/${ICONV_LIB}/' ${WRKSRC}/MakefileEm alguns casos, é necessário definir valores alternativos ou executar operações dependendo se há um iconv nativo. O bsd.port.pre.mk deve ser incluído antes de testar o valor de ICONV_LIB:
iconv NativoUSES= iconv
.include <bsd.port.pre.mk>
post-patch:
.if empty(ICONV_LIB)
# native iconv detected
@${REINPLACE_CMD} -e 's|iconv||' ${WRKSRC}/Config.sh
.endif
.include <bsd.port.post.mk>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>.