FERRAMENTAS LINUX: GNU Automake 1.20: O Futuro do GNU Build System com GPLv3+ e novos recursos

segunda-feira, 9 de novembro de 2026

GNU Automake 1.20: O Futuro do GNU Build System com GPLv3+ e novos recursos



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.

Construindo Aplicações com Agentes de IA: Projeto e Implementação de Sistemas Multiagentes ->  https://link.amazon/B04Sx3eHD

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