Descubra o GNU Automake 1.20: jobserver para compiladores, delete-on-error, print-distfiles e licença GPLv3. Guia completo com checklist, roteiro e quiz.
O GNU Automake 1.20 foi lançado oficialmente e traz uma combinação de recursos técnicos importantes com uma mudança de licença que reposiciona o projeto dentro do ecossistema do software livre.
A versão chega apenas dois meses depois da 1.19, com 104 commits de apenas três contribuidores — sendo 99 deles de Kamila Szewczyk, a mantenedora mais ativa do projeto.
Se você trabalha com Autotools, mantém pacotes GNU ou simplesmente acompanha a evolução das ferramentas de build, este guia reúne o que mudou, por que importa e como aplicar as novidades no seu fluxo de trabalho.
Produto Recomendado
Você já percebeu que a maioria das pessoas só conversa com o ChatGPT... enquanto uma minoria está criando agentes de IA que executam tarefas, tomam decisões e geram receita sozinhos?
O livro "Construindo Aplicações com Agentes de IA: Projeto e Implementação de Sistemas Multiagentes" é o seu mapa prático — do zero à arquitetura profissional.
✅ Projeto e implementação passo a passo
✅ Sistemas multiagentes que colaboram entre si
✅ Aplicações reais para negócios e automação
✅ Linguagem acessível, com rigor técnico
💡 Não é teoria. É engenharia aplicada.
Eu ganho uma comissão quando você faz uma compra.
O que há de novo no Automake 1.20?
A versão 1.20 não é uma revolução, mas sim uma atualização cirúrgica com foco em três frentes: desempenho de build, segurança de artefatos e modernização legal.
1. --enable-jobserver: compiladores e linkers integrados ao jobserver do GNU make
A opção de configuração --enable-jobserver permite que compiladores e linkers herdem o pipe jobserver do GNU make.
Na prática, isso significa que ferramentas como o GCC em modo -flto=jobserver podem compartilhar o mesmo pool de jobs do make durante a otimização em tempo de link (LTO), evitando a criação descontrolada de processos paralelos que costuma ocorrer quando o linker tenta gerenciar seus próprios jobs.
Para projetos que usam LTO e builds paralelos, essa é a mudança mais impactante da versão: o paralelismo deixa de ser “cada um por si” e passa a ser coordenado de ponta a ponta.
2. delete-on-error: artefatos corrompidos não sobram no diretório
A nova opção delete-on-error emite o alvo especial .DELETE_ON_ERROR no Makefile.in gerado. Com isso, o GNU Make apaga o alvo caso a receita falhe depois de já ter modificado o arquivo.
O exemplo clássico: uma regra como foo.h: gen.sh; ./gen.sh > $@ que falha no meio da geração deixava um foo.h truncado que as execuções seguintes do make tratavam como “atualizado”, mascarando o erro. Com delete-on-error, o arquivo parcial é removido e o próximo make tenta a geração novamente.
Atenção: a opção só tem efeito com o GNU Make; outras implementações de make não suportam o alvo .DELETE_ON_ERROR.
3. print-distfiles: saiba exatamente o que vai no pacote
O novo alvo print-distfiles lista os arquivos que make dist distribuiria. É útil para auditorias de empacotamento, verificação de arquivos esquecidos ou indesejados e integração com pipelines de CI que precisam validar o conteúdo do tarball antes da publicação.
4. distcheck sem TeX por padrão
O distcheck não executa mais make dvi por padrão, o que significa que TeX não é mais necessário para validar distribuições que contêm manuais Texinfo. Se você quiser verificar a documentação, defina AM_DISTCHECK_DVI_TARGET no Makefile.am com valores como dvi, pdf ou html.
5. Correções de bugs e limitações antigas
A versão 1.20 corrige nove bugs e limitações de longa data, incluindo problemas com rastreamento de dependências, saída de lex/yacc em builds VPATH, builds com Vala, compressão de distribuição e verificações de uninstall. Caminhos de diretório-fonte contendo <, >, (, ) agora são rejeitados para evitar a interpretação indevida pelo shell.
6. Licença GPLv2 → GPLv3+
O Automake deixa a GPLv2 ou posterior e passa a ser licenciado sob a GPLv3 ou posterior (GPLv3+), alinhando-se ao Autoconf e à recomendação da Free Software Foundation. A FSF recomenda GPLv3+ desde 2007, e a mudança reforça a proteção jurídica para usuários e distribuidores.
Checklist para copiar e colar
Use este checklist ao atualizar seus projetos para o Automake 1.20:
□ Verificar se o projeto usa GNU Make (obrigatório para delete-on-error).
□ Adicionar --enable-jobserver ao configure.ac se o projeto usa GCC com LTO ou compilação paralela intensa.
□ Habilitar delete-on-error no Makefile.am para evitar artefatos corrompidos.
□ Testar make print-distfiles e revisar a lista de arquivos do pacote.
□ Ajustar AM_DISTCHECK_DVI_TARGET se a documentação Texinfo precisar ser validada.
□ Revisar a compatibilidade da licença do projeto com GPLv3+.
□ Rodar make distcheck para validar a distribuição sem depender de TeX.
□ Verificar se caminhos de build contêm <, >, ( ou ) e corrigi-los.
□ Atualizar a documentação interna do projeto com as novas opções.
□ Testar o build em VPATH e com Vala, se aplicável.
Questionário com 3 perguntas
1. O que a opção --enable-jobserver permite que compiladores e linkers façam?
a) Ignorem completamente o make.
b) Herdem o pipe jobserver do GNU make, compartilhando o pool de jobs.
c) Criem um novo jobserver independente para cada arquivo.
d) Desabilitem o paralelismo em builds LTO.
2. Qual é o efeito da opção delete-on-error no Makefile.in gerado?
a) Remove todos os alvos após cada build.
b) Emite o alvo .DELETE_ON_ERROR, fazendo o GNU Make apagar o alvo quando a receita falha após modificá-lo.
c) Impede que o make execute qualquer receita com erro de sintaxe.
d) Substitui o comando rm -f em todas as regras.
3. Qual é a principal motivação declarada por Kamila Szewczyk para o Automake 1.20?
a) Competir diretamente com o CMake em número de usuários.
b) Remover o suporte ao Autoconf.
c) Reestabelecer o GNU Build System como “build system of choice” para novos projetos, simplificando manutenção e portabilidade.
d) Migrar todo o código para Rust.
Gabarito: 1-b; 2-b; 3-c.
Conclusão
O GNU Automake 1.20 é uma atualização que combina melhorias técnicas concretas — jobserver integrado, proteção contra artefatos corrompidos e auditoria de distribuição — com uma mudança de licença estratégica para GPLv3+.
A meta declarada de recolocar o Autotools como “build system of choice” é ambiciosa diante da adoção de CMake e Meson, mas o lançamento mostra que o projeto está ativo, com uma mantenedora dedicada e um fluxo constante de correções.
Para quem mantém projetos GNU ou depende do Autotools, a recomendação é testar o checklist acima, validar a compatibilidade com GPLv3+ e explorar o --enable-jobserver em builds com LTO.
O Autotools pode não ser mais o padrão da indústria, mas a versão 1.20 prova que ele ainda tem lenha para queimar — e uma comunidade disposta a levá-lo adiante.

Nenhum comentário:
Postar um comentário