GNU Automake 1.19 chega com AM_OPTIONAL_AUTOMAKE e corrige bug de 14 anos no make dist. Guia completo com checklist, FAQ e dicas de atualização para desenvolvedores.
Por que o Automake 1.19 é um Marco para o Build System
Se você ainda utiliza o GNU Automake como sistema de build em seus projetos — seja por tradição, compatibilidade ou preferência —, esta notícia é para você. Após 15 meses desde o lançamento da versão 1.18.1, a Free Software Foundation finalmente liberou o GNU Automake 1.19, uma atualização que, embora traga apenas uma nova funcionalidade, corrige bugs que assombravam desenvolvedores há mais de uma década.
Enquanto alternativas como Meson e CMake ganham espaço, o Automake continua sendo a espinha dorsal de inúmeros projetos GNU e de código aberto. Esta versão 1.19 é, acima de tudo, um marco de maturidade e estabilidade.
Neste artigo, vamos explorar em detalhes o que muda, como isso afeta seu fluxo de trabalho e como você pode aproveitar as melhorias imediatamente.
O Que Há de Novo no GNU Automake 1.19?
AM_OPTIONAL_AUTOMAKE: O Único Novo Recurso
A grande — e única — novidade em termos de funcionalidade é o macro AM_OPTIONAL_AUTOMAKE. Trata-se de um macro Autoconf que permite especificar uma lista de formatos de compressão para os arquivos de distribuição, como dist-xz, dist-zstd, dist-bzip3 e outros.
Como funciona na prática? O macro instrui o Automake a tentar construir cada tipo de arquivo de distribuição somente se a ferramenta de compressão correspondente estiver disponível no sistema. Se o xz não estiver instalado, por exemplo, o Automake simplesmente ignora a geração do arquivo .tar.xz sem gerar erro.
Isso resolve um problema antigo: antes, a ausência de um compressor resultava em falha no processo de make dist. Agora, o comportamento é resiliente e adaptativo.
Exemplo de uso no configure.ac:
AM_OPTIONAL_AUTOMAKE([dist-xz dist-zstd dist-bzip3])
Essa linha, quando processada pelo Autoconf, gera a lógica necessária para que o make dist produza apenas os formatos viáveis.
Correções de Bugs: O Fim de uma Saga de 14 Anos
O aspecto mais significativo do Automake 1.19 não está em novos recursos, mas na resolução de problemas históricos. O bug mais notório corrigido nesta versão data de 2011 — há impressionantes 14 anos.
O Bug do make dist-bzip2 dist-xz
Anteriormente, ao executar make dist-bzip2 dist-xz simultaneamente, o Automake removia o tarball não comprimido após completar o primeiro alvo, impossibilitando a criação do segundo arquivo.
A versão 1.19 corrige isso, permitindo que ambos os formatos sejam gerados corretamente a partir de uma única execução.
Produto Recomendado
Eu ganho uma comissão quando você faz uma compra.
Reconhecimento de Arquivos de Licença Alternativos
O Automake 1.19 agora reconhece arquivos como COPYINGv2, COPYINGv3, COPYING.LESSERv2 e COPYING.LESSERv3 como arquivos de licença válidos, distribuindo-os automaticamente nos arquivos de distribuição, assim como faz com o tradicional COPYING.
Essa mudança é especialmente relevante para compatibilidade com projetos GNU que utilizam versões específicas de licenças, como o GNU GMP.
Melhor Detecção do BusyBox Tar
O Automake 1.19 agora detecta corretamente o tar do BusyBox, que não é um GNU Tar completo. Anteriormente, o Automake assumia que qualquer implementação que suportasse --version era GNU Tar, o que causava problemas silenciosos.
make dist Falha Corretamente quando o Tar Falha
Antes, se o tar falhasse durante a criação do arquivo de distribuição, o make dist ainda retornava sucesso, deixando um arquivo truncado. Agora, o comando falha explicitamente, evitando distribuições corrompidas.
Outras Correções Relevantes
- filename-length-max=N: não rejeita mais nomes de arquivo com exatamente N caracteres.
- Arquivos gerados por regras: arquivos que não existem no momento, mas que podem ser gerados por uma regra do Makefile.am, agora são incluídos na distribuição.
- Objective-C e Objective-C++: com Libtool, agora são compilados e linkados com --tag=OBJC e --tag=OBJCXX.
- Limpeza do diretório de distribuição: o make dist não propaga mais a sobrescrita interna de limpeza para makes recursivos.
- Códigos de saída de compressores: erros de compressores não abortam mais o processo deixando arquivos vazios para trás.
Onde Baixar e Como Instalar
O GNU Automake 1.19 já está disponível para download no repositório oficial do Savannah GNU.
Instalação a partir do código-fonte:
wget https://ftp.gnu.org/gnu/automake/automake-1.19.tar.xz tar -xf automake-1.19.tar.xz cd automake-1.19 ./configure --prefix=/usr/local make sudo make install
Verificação da versão instalada:
automake --version # Deve exibir: automake (GNU automake) 1.19
Perguntas Frequentes (FAQ)
1. O Automake 1.19 é compatível com projetos que usam versões anteriores?
Sim. O Automake mantém compatibilidade retroativa com projetos escritos para versões anteriores. No entanto, recomenda-se testar seu configure.ac e Makefile.am com a nova versão, especialmente se você utiliza macros customizados ou comportamentos que dependiam de bugs corrigidos.
2. Preciso atualizar meu projeto imediatamente?
Não há urgência crítica, mas a atualização é altamente recomendada por causa das correções de segurança e robustez. Se você utiliza make dist com múltiplos formatos de compressão ou depende de compatibilidade com BusyBox, a atualização é praticamente obrigatória.
3. O que acontece se eu não tiver o zstd ou bzip3 instalado?
Com o novo macro AM_OPTIONAL_AUTOMAKE, o Automake simplesmente pula a geração do formato correspondente sem gerar erro. Você pode continuar usando make dist normalmente — apenas os formatos disponíveis serão gerados.
Checklist Rápido para Atualização
Copie e cole este checklist para garantir uma migração tranquila
## Checklist de Atualização — GNU Automake 1.19
- [ ] Verificar versão atual: `automake --version`.
- [ ] Baixar o tarball 1.19 do Savannah GNU.
- [ ] Compilar e instalar: `./configure && make && sudo make install`.
- [ ] Testar `autoreconf -fi` no seu projeto.
- [ ] Executar `make dist` e verificar os arquivos gerados.
- [ ] Testar `make dist-bzip2 dist-xz` (se aplicável).
- [ ] Adicionar `AM_OPTIONAL_AUTOMAKE` ao `configure.ac` (opcional).
- [ ] Verificar se `COPYINGv2`/`COPYINGv3` são distribuídos corretamente.
- [ ] Executar a suíte de testes do projeto.
- [ ] Atualizar CI/CD para usar a nova versão.
Conclusão
O GNU Automake 1.19 não é uma revolução, mas é uma consolidação. Em um ecossistema onde ferramentas como Meson e CMake avançam rapidamente, o Automake prova que ainda tem relevância ao corrigir bugs históricos e melhorar a robustez do processo de distribuição de software.
Se você mantém projetos que dependem do Autotools, atualize agora. As correções de segurança e a resiliência do make dist sozinhas já justificam a migração.


Nenhum comentário:
Postar um comentário