Autobuilder network)
A rede de construtores automáticos (autobuilder network
) é um
desenvolvimento Debian que ajuda a agilizar as recompilações de pacotes
para todas as arquiteturas que o
Debian suporta atualmente. Esta
rede é feita de várias máquinas que usam um pacote de software
específico chamado buildd para pegar os pacotes de um
repositório Debian e reconstruí-los para a arquitetura alvo.
autobuilder network) é necessária?
A distribuição Debian suporta algumas arquiteturas, mas os mantenedores de pacote usualmente só compilam as versões binárias para uma única arquitetura (normalmente i386). Desenvolvedores para outras arquiteturas precisam acompanhar novas versões dos pacotes e recompilá-los se eles querem ficar atualizados com a distribuição Intel.
Quando o Debian/m68k (o primeiro porte não-Intel) começou, tudo isto
era feito manualmente: desenvolvedores olhavam a lista de discussão
de uploads
em busca de novos pacotes e pegavam alguns deles para
construção. A coordenação para que nenhum pacote fosse construído duas
vezes por diferentes pessoas era feita através de anúncios em uma lista de
discussão. É óbvio que este procedimento é suscetível a erros e consome
muito tempo. Isto foi, no entanto, a forma usual de manter distribuições
não-i386 atualizadas por um bom tempo.
O sistema de daemon de construção automatiza a maioria deste processo. Ele consiste de um conjunto de scripts (escritos em Perl e Python) que evoluíram através do tempo para ajudar portadores em várias tarefas. Eles finalmente desenvolveram um sistema que é capaz de manter distribuições Debian não-i386 atualizadas quase que automaticamente.
Buildd é o nome usualmente dado ao software usado pela
rede de construtores automáticos (autobuilder network
), mas
na verdade ele é feito de diferentes partes:
Todas estas partes operam juntas para fazer a rede de construtores funcionar.
Na verdade, o desenvolvedor Debian mediano não precisa fazer nada explicitamente para usar a rede buildd. Quando ele envia um pacote para o repositório (binário compilado para uma dada arquitetura) ele será adicionado ao banco de dados para todas as arquiteturas (no estado Needs-Build). Máquinas construtoras consultarão o banco de dados de construção em busca de pacotes neste estado e, rotineiramente, pegarão pacotes desta lista. A lista é priorizada pelo estado de compilação anterior, prioridade, seção e, finalmente, nome do pacote.
Se o processo de construção for bem sucedido em todas as arquiteturas, o mantenedor não precisará fazer nada. Todos esses pacotes binários serão enviados ao local principal da arquitetura. Se o processo de construção falhar o pacote entrará em um estado especial (Failed ou Dep-Wait, se ele possui dependências de construção específicas que não estão disponíveis). Os administradores da rede de construtores automáticos revisarão os pacotes cuja construção falhou e entrarão em contato com o mantenedor, usualmente, abrindo um bug no Sistema de Acompanhamento de Bug.
Algumas vezes um pacote leva um longo tempo para construir em uma dada arquitetura e isso impede que o pacote entre na testing. Infelizmente, o pacote terá que esperar até que uma máquina o pegue. Administradores buildd não aceitarão pedidos para agilizar a construção de um pacote uma vez que a lista de prioridade já está estabelecida. Um mantenedor, no entanto, pode acessar uma máquina de desenvolvimento Debian e construir manualmente o pacote lá.
Você pode verificar esse estado das diferentes tentativas das buildds dos pacotes que pertencem a qualquer mantenedor verificando os logs da buildd. Estes logs também estão ligados a partir da Visão Geral do Mantenedor do Pacote.
Para mais informação sobre os diferentes estados nos quais um pacote pode estar, por favor, leia wanna-build-states.
É claro que, tanto a documentação quando o código fonte disponíveis
para estas diferentes ferramentas são a melhor forma de entender como a
rede buildd funciona. Adicionalmente, a seção
Portando e sendo portado (Porting and being ported
) da
Referência do
Desenvolvedor Debian fornece informação complementar sobre como
a rede funciona e também fornece alguma informação sobre
construtores de pacotes e
ferramentas de porting
que estão envolvidas no processo tanto de
configuração quanto de manutenção da rede buildd.
Há algumas estatísticas disponíveis sobre a rede de construção automática na página de estados da buildd.
Há várias razões pelas quais um desenvolvedor (ou usuário) pode querer configurar e usar uma rede de construtores automáticos:
Você pode ler mais informação sobre como você pode
configurar um construtor automático
(autobuilder
).
Esta introdução à rede de construtores automáticos foi escrita com bits e peças fornecidos por Roman Hodek, Christian T. Steigies, Wouter Verhelst, Andreas Barth, Francesco Paolo Lovergine e Javier Fernández-Sanguino.