Procedimentos para Construção de Pacotes

Equipe de Gerenciamento da Coleção de Ports do FreeBSD

$FreeBSD: head/pt_BR.ISO8859-1/articles/portbuild/article.xml 39892 2012-11-01 11:06:14Z ebrandi $

$FreeBSD: head/pt_BR.ISO8859-1/articles/portbuild/article.xml 39892 2012-11-01 11:06:14Z ebrandi $


Índice
1 Introdução
2 Gerenciamento dos Clientes de Compilação
3 Configuração do Ambiente de Compilação sob Chroot
4 Customizando Sua Compilação
5 Iniciando a Compilação
6 Anatomia de uma compilação
7 Manutenção da Compilação
8 Monitorando a Compilação
9 Lidando com Erros de Compilação
10 Compilando Pacotes para uma Versão Específica
11 Upload dos Pacotes
12 Compilação de Patches Experimentais
13 Como configurar um novo nó de compilação de pacotes
14 Como configurar um novo branch do FreeBSD
15 Como excluir um branch que deixou de ser suportado pelo FreeBSD
16 Como regerar pacotes baseados em outra versão menor do FreeBSD
17 Como configurar uma nova arquitetura
18 Como configurar um novo nó principal (instância do pointyhat)
19 Procedimentos para lidar com falhas de disco

1 Introdução

Com o objetivo de disponibilizar binários pré-compilados de aplicações de terceiros para o FreeBSD, a Coleção de Ports é regularmente compilada em um dos “Clusters de Compilação de Pacotes”. Atualmente o principal cluster em uso é o http://pointyhat.FreeBSD.org.

Este artigo documenta os trabalhos internos do cluster

Nota: Muitos dos detalhes deste artigo serão do interesse apenas dos membros da equipe que faz o Gerenciamento da Coleção de Ports

1.1 O código base

A maior parte da mágica na compilação de pacotes ocorre sob o diretório /var/portbuild. A menos que seja especificado o contrário, todos os caminhos serão relativos à este diretório. O ${arch} será usado para determinar uma das arquiteturas de pacotes (amd64, i386™, ia64, powerpc, e SPARC64®), e ${branch} será usado para determinar o branch (ramo de desenvolvimento) de compilação (7, 7-exp, 8, 8-exp, 9, 9-exp, 10, 10-exp).

Nota: Não são mais compilados pacotes para as versões 4, 5 ou 6, e para a arquitetura alpha

Os scripts que controlam todo o processo estão localizados em /var/portbuild/scripts/. Eles são cópias obtidas do repositório Subversion base/projects/portbuild/scripts/.

Normalmente são feitas compilações incrementais que usam pacotes anteriores como dependências; isso toma menos tempo, e coloca menos carga nos sites espelho. Normalmente são feitas compilações completas apenas quando:

  • logo depois de uma nova versão, para o ramo -STABLE

  • periodicamente, para testar mudanças realizadas no -CURRENT

  • para compilações experimentais

1.2 Observações sobre o código base

Até meados de 2010, os scripts apontavam especificamente para pointyhat como o nó principal (dispatch). Durante o verão de 2010, mudanças significativas foram feitas a fim de aceitar outros hosts como nós principais. Entre estas mudanças estão:

  • remoção da string pointyhat embutida no código

  • fatoração de todas as constantes de configuração (que antes estavam espalhadas por todo o código) em arquivos de configuração (veja abaixo)

  • adicionar o hostname aos diretórios especificados pelo buildid (isto vai permitir que os diretórios sejam inequívocos quando copiados entre máquinas.)

  • tornar os scripts mais robustos em termos de criação de diretórios e links simbólicos

  • se necessário, alterar a forma de execução dos scripts para tornar os itens acima mais fáceis.

Este documento foi escrito originalmente antes destas mudanças serem feitas. Nas partes em que algo foi modificado, como nas invocações de scripts, elas estão denotadas como novo código base: em oposição à antigo código base:.

Nota: Como em dezembro de 2010, o pointyhat ainda está rodando sobre o antigo código base, até que o novo código base seja considerado estável.

Nota: Também durante esse processo, o código base foi migrado para o repositório Subversion. Para referência, a versão anterior ainda pode ser encontrada no CVS.

Este, e outros documentos, podem ser obtidos em ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Para perguntas sobre FreeBSD, leia a documentação antes de contatar <questions@FreeBSD.org>.
Para perguntas sobre esta documentação, envie e-mail para <doc@FreeBSD.org>.