svn commit: r39892 - in head/pt_BR.ISO8859-1/articles: . portbuild
Edson Brandi
ebrandi at FreeBSD.org
Thu Nov 1 11:06:15 UTC 2012
Author: ebrandi
Date: Thu Nov 1 11:06:14 2012
New Revision: 39892
URL: http://svn.freebsd.org/changeset/doc/39892
Log:
- Add new Brazilian Portuguese translation of portbuild article
Submitted by: Antonio Pessoa <atnpessoa at gmail.com>
Obtained from: The FreeBSD Brazilian Portuguese Documentation Project
(http://doc.fug.com.br)
Approved by: gabor (mentor)
Added:
head/pt_BR.ISO8859-1/articles/portbuild/
head/pt_BR.ISO8859-1/articles/portbuild/Makefile (contents, props changed)
head/pt_BR.ISO8859-1/articles/portbuild/article.xml (contents, props changed)
Modified:
head/pt_BR.ISO8859-1/articles/Makefile
Modified: head/pt_BR.ISO8859-1/articles/Makefile
==============================================================================
--- head/pt_BR.ISO8859-1/articles/Makefile Thu Nov 1 10:58:36 2012 (r39891)
+++ head/pt_BR.ISO8859-1/articles/Makefile Thu Nov 1 11:06:14 2012 (r39892)
@@ -18,6 +18,7 @@ SUBDIR+= freebsd-update-server
SUBDIR+= hubs
SUBDIR+= linux-users
SUBDIR+= new-users
+SUBDIR+= portbuild
SUBDIR+= problem-reports
DOC_PREFIX?= ${.CURDIR}/../..
Added: head/pt_BR.ISO8859-1/articles/portbuild/Makefile
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/pt_BR.ISO8859-1/articles/portbuild/Makefile Thu Nov 1 11:06:14 2012 (r39892)
@@ -0,0 +1,21 @@
+# The FreeBSD Documentation Project
+# The FreeBSD Brazilian Portuguese Documentation Project
+#
+# Article: Portbuild Procedure
+# Original revision: r39631
+#
+# $FreeBSD$
+#
+
+DOC?= article
+
+FORMATS?= html html-split
+WITH_ARTICLE_TOC?= YES
+
+INSTALL_COMPRESSED?= gz
+INSTALL_ONLY_COMPRESSED?=
+
+SRCS= article.xml
+
+DOC_PREFIX?= ${.CURDIR}/../../..
+.include "${DOC_PREFIX}/share/mk/doc.project.mk"
Added: head/pt_BR.ISO8859-1/articles/portbuild/article.xml
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/pt_BR.ISO8859-1/articles/portbuild/article.xml Thu Nov 1 11:06:14 2012 (r39892)
@@ -0,0 +1,3235 @@
+<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
+<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V4.2-Based Extension//EN"
+ "../../../share/xml/freebsd42.dtd" [
+<!ENTITY % entities PUBLIC "-//FreeBSD//ENTITIES DocBook FreeBSD Entity Set//PT"
+ "../../share/xml/entities.ent">
+%entities;
+]>
+
+<!--
+ The FreeBSD Documentation Project
+ The FreeBSD Brazilian Portuguese Documentation Project
+
+ Original revision: r39807
+-->
+
+<article lang='pt_br'>
+ <articleinfo>
+ <title>Procedimentos para Construção de Pacotes</title>
+
+ <authorgroup>
+ <corpauthor>Equipe de Gerenciamento da Coleção de Ports do
+ &os;</corpauthor>
+ </authorgroup>
+
+ <copyright>
+ <year>2003</year>
+ <year>2004</year>
+ <year>2005</year>
+ <year>2006</year>
+ <year>2007</year>
+ <year>2008</year>
+ <year>2009</year>
+ <year>2010</year>
+ <year>2011</year>
+ <year>2012</year>
+ <holder role="mailto:portmgr at FreeBSD.org">Equipe de
+ Gerenciamento da Coleção de Ports do &os;</holder>
+ </copyright>
+
+ <legalnotice id="trademarks" role="trademarks">
+ &tm-attrib.freebsd;
+ &tm-attrib.intel;
+ &tm-attrib.sparc;
+ &tm-attrib.general;
+ </legalnotice>
+
+ <pubdate>$FreeBSD$</pubdate>
+
+ <releaseinfo>$FreeBSD$</releaseinfo>
+ </articleinfo>
+
+ <sect1 id="intro">
+ <title>Introdução</title>
+
+ <para>Com o objetivo de disponibilizar binários pré-compilados de
+ aplicações de terceiros para o &os;, a Coleção de
+ <literal>Ports</literal> é regularmente compilada em um dos
+ <quote><literal>Clusters</literal> de Compilação de
+ Pacotes</quote>. Atualmente o principal
+ <literal>cluster</literal> em uso é o <ulink
+ url="http://pointyhat.FreeBSD.org"></ulink>.</para>
+
+ <para>Este artigo documenta os trabalhos internos do
+ <literal>cluster</literal></para>
+
+ <note>
+ <para>Muitos dos detalhes deste artigo serão do interesse apenas
+ dos membros da equipe que faz o <ulink
+ url="&url.base/portmgr">Gerenciamento da Coleção de
+ <literal>Ports</literal></ulink></para>
+ </note>
+
+ <sect2 id="codebase">
+ <title>O código base</title>
+
+ <para>A maior parte da mágica na compilação de pacotes ocorre sob
+ o diretório <filename>/var/portbuild</filename>. A menos que
+ seja especificado o contrário, todos os caminhos serão relativos
+ à este diretório. O <replaceable>${arch}</replaceable> será usado
+ para determinar uma das arquiteturas de pacotes (amd64, &i386;,
+ ia64, powerpc, e &sparc64;), e
+ <replaceable>${branch}</replaceable> será usado para determinar
+ o <literal>branch</literal> (ramo de desenvolvimento) de
+ compilação (7, 7-exp, 8, 8-exp, 9, 9-exp, 10, 10-exp).</para>
+
+ <note>
+ <para>Não são mais compilados pacotes para as versões 4, 5 ou 6,
+ e para a arquitetura alpha</para>
+ </note>
+
+ <para>Os <literal>scripts</literal> que controlam todo o processo
+ estão localizados em <filename
+ class="directory">/var/portbuild/scripts/</filename>. Eles são
+ cópias obtidas do repositório Subversion <ulink
+ url="http://svnweb.freebsd.org/base/projects/portbuild/scripts/">
+ <filename
+ class="directory">base/projects/portbuild/scripts/</filename></ulink>.</para>
+
+ <para>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:</para>
+
+ <itemizedlist>
+ <listitem><para>logo depois de uma nova versão, para o ramo
+ <literal>-STABLE</literal></para></listitem>
+
+ <listitem><para>periodicamente, para testar mudanças realizadas
+ no <literal>-CURRENT</literal></para></listitem>
+
+ <listitem><para>para compilações experimentais</para></listitem>
+ </itemizedlist>
+
+ </sect2>
+
+ <sect2 id="codebase-notes">
+ <title>Observações sobre o código base</title>
+
+ <para>Até meados de 2010, os <literal>scripts</literal>
+ apontavam especificamente para <hostid>pointyhat</hostid> como
+ o nó principal (dispatch). Durante o verão de 2010, mudanças
+ significativas foram feitas a fim de aceitar outros
+ <literal>hosts</literal> como nós principais. Entre estas
+ mudanças estão:</para>
+
+ <itemizedlist>
+ <listitem><para>remoção da <literal>string</literal>
+ <literal>pointyhat</literal> embutida no
+ código</para></listitem>
+
+ <listitem><para>fatoração de todas as constantes de configuração
+ (que antes estavam espalhadas por todo o código) em
+ arquivos de configuração (veja <link
+ linkend="new-head-node">abaixo</link>)</para></listitem>
+
+ <listitem><para>adicionar o <literal>hostname</literal> aos
+ diretórios especificados pelo <literal>buildid</literal>
+ (isto vai permitir que os diretórios sejam inequívocos
+ quando copiados entre máquinas.)</para></listitem>
+
+ <listitem><para>tornar os <literal>scripts</literal> mais
+ robustos em termos de criação de diretórios e
+ <literal>links</literal> simbólicos</para></listitem>
+
+ <listitem><para>se necessário, alterar a forma de execução dos
+ <literal>scripts</literal> para tornar os itens acima mais
+ fáceis.</para></listitem>
+
+ </itemizedlist>
+
+ <para>Este documento foi escrito originalmente antes destas
+ mudanças serem feitas. Nas partes em que algo foi modificado,
+ como nas invocações de <literal>scripts</literal>, elas estão
+ denotadas como <literal>novo código base:</literal> em
+ oposição à <literal>antigo código base:</literal>.</para>
+
+ <note>
+ <para>Como em dezembro de 2010, o <hostid>pointyhat</hostid>
+ ainda está rodando sobre o antigo código base, até que o
+ novo código base seja considerado estável.</para>
+ </note>
+
+ <note>
+ <para>Também durante esse processo, o código base foi migrado
+ para o <ulink
+ url="http://svnweb.freebsd.org/base/projects/portbuild/scripts/">repositório
+ Subversion</ulink>. Para referência, a versão
+ anterior ainda pode ser <ulink
+ url="http://www.freebsd.org/cgi/cvsweb.cgi/ports/Tools/portbuild/scripts/Attic/">encontrada
+ no CVS</ulink>.</para>
+ </note>
+ </sect2>
+ </sect1>
+
+ <sect1 id="management">
+ <title>Gerenciamento dos Clientes de Compilação</title>
+
+ <para>Os clientes &i386; localizados conjuntamente com o
+ <hostid>pointyhat</hostid>, efetuam o <literal>boot</literal>
+ via rede a partir dele (nós
+ <replaceable>conectados</replaceable>); todos os outros clientes
+ (nós <replaceable>desconectados</replaceable>) ou são
+ auto-hospedados ou efetuam <literal>boot</literal> via rede a
+ partir de outro <literal>host pxe</literal>. Em todos os casos
+ eles se auto configuram durante o <literal>boot</literal>
+ preparando-se para compilar pacotes.</para>
+
+ <para>O <literal>cluster</literal> principal copia, através do
+ <command>rsync</command>, os dados necessários (a árvore de
+ <literal>ports</literal> e dos fontes, <literal>bindist
+ tarballs</literal>, <literal>scripts</literal>, etc.) para os
+ nós desconectados durante a fase de configuração dos nós. Em
+ seguida, o diretório <literal>portbuild</literal> desconectado é
+ montado como <literal>nullfs</literal> para compilações sob
+ <literal>chroot</literal>.</para>
+
+ <para>O usuário
+ <username>ports-<replaceable>${arch}</replaceable></username>
+ pode acessar os nós clientes através do &man.ssh.1; para
+ monitorá-los. Use o <command>sudo</command> e verifique o
+ <hostid>portbuild.<replaceable>hostname</replaceable>.conf</hostid>
+ para o usuário e detalhes do acesso.</para>
+
+ <para>O <literal>script</literal>
+ <command>scripts/allgohans</command> pode ser usado para
+ executar um comando em todos os clientes
+ <replaceable>${arch}</replaceable>.</para>
+
+ <para>O <literal>script</literal>
+ <command>scripts/checkmachines</command> é usado para monitorar
+ a carga em todos os nós do <literal>cluster</literal> de
+ compilação, e agendar quais nós compilarão quais
+ <literal>ports</literal>. Este <literal>script</literal> não é
+ muito robusto e tem uma tendência a morrer. É melhor iniciar
+ este <literal>script</literal> no nó principal (por exemplo,
+ <hostid>pointyhat</hostid>) depois do <literal>boot</literal>
+ usando um <literal>loop</literal> com &man.while.1;.</para>
+ </sect1>
+
+ <sect1 id="setup">
+ <title>Configuração do Ambiente de Compilação sob
+ <literal>Chroot</literal></title>
+
+ <para>A compilação de pacotes é realizada em um ambiente
+ <literal>chroot</literal>, configurado pelo
+ <literal>script</literal> <filename>portbuild</filename> usando
+ o arquivo
+ <filename><replaceable>${arch}</replaceable>/<replaceable>${branch}</replaceable>/builds/<replaceable>${buildid}</replaceable>/bindist.tar</filename>.
+ </para>
+
+ <para>O seguinte comando faz o <literal>build world</literal>
+ a partir da árvore de diretórios em
+ <filename><replaceable>${arch}</replaceable>/<replaceable>${branch}</replaceable>/builds/<replaceable>${buildid}</replaceable>/src/</filename>
+ e o instala em <replaceable>${worlddir}</replaceable>. A
+ árvore de diretórios será atualizada primeiro, a menos que a
+ opção <literal>-nocvs</literal> seja especificada.</para>
+
+ <screen>/var/portbuild&prompt.root; <userinput>scripts/makeworld <replaceable>${arch}</replaceable> <replaceable>${branch}</replaceable> <replaceable>${buildid}</replaceable> [-nocvs]</userinput></screen>
+
+ <para>O arquivo <filename>bindist.tar</filename> é criado a partir
+ do <literal>world</literal>, instalado previamente, pelo
+ <literal>script</literal> <command>mkbindist</command>. Este
+ deve ser executado como <username>root</username> com o
+ seguinte comando:</para>
+
+ <screen>/var/portbuild&prompt.root; <userinput>scripts/mkbindist <replaceable>${arch}</replaceable> <replaceable>${branch}</replaceable> <replaceable>${buildid}</replaceable></userinput></screen>
+
+ <para>Os <literal>tarballs</literal> de cada máquina estão
+ localizados em
+ <filename><replaceable>${arch}</replaceable>/clients</filename>.</para>
+
+ <para>O arquivo <filename>bindist.tar</filename> é extraído para
+ cada cliente durante a inicialização dos mesmos, e no início de
+ cada passagem do <literal>script</literal>
+ <command>dopackages</command>.</para>
+
+ <sect2>
+ <title>Novo Código Base</title>
+
+ <para>Para ambos os comandos acima, se o
+ <replaceable>${buildid}</replaceable> estiver definido como
+ <literal>latest</literal>, ele pode ser omitido.</para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="customizing">
+ <title>Customizando Sua Compilação</title>
+
+ <para>(O trecho a seguir aplica-se apenas ao novo código
+ base.)</para>
+
+ <para>Você pode customizar sua compilação providenciando versões
+ locais do <filename>make.conf</filename> e/ou
+ <filename>src.conf</filename>, localizados em
+ <filename><replaceable>${arch}</replaceable>/<replaceable>${branch}</replaceable>/builds/<replaceable>${buildid}</replaceable>/make.conf.server</filename>
+ e
+ <filename><replaceable>${arch}</replaceable>/<replaceable>${branch}</replaceable>/builds/<replaceable>${buildid}</replaceable>/src.conf.server</filename>,
+ respectivamente. Estes serão usados, em vez dos arquivos
+ padrões que estão no lado do servidor.</para>
+
+ <para>Da mesma forma, se você também quiser afetar o
+ <filename>make.conf</filename> no <emphasis>lado do
+ cliente</emphasis>, você pode usar o
+ <filename><replaceable>${arch}</replaceable>/<replaceable>${branch}</replaceable>/builds/<replaceable>${buildid}</replaceable>/make.conf.client</filename>.
+ </para>
+
+ <note>
+ <para>Devido ao fato de cada um dos clientes individuais poder
+ ter seu próprio <filename>make.conf</filename>, o conteúdo do
+ <filename><replaceable>${arch}</replaceable>/<replaceable>${branch}</replaceable>/builds/<replaceable>${buildid}</replaceable>/make.conf.client</filename>
+ vai ser <emphasis>adicionado</emphasis> ao
+ <filename>make.conf</filename>, e não substituí-lo, como é feito
+ com o
+ <filename><replaceable>${arch}</replaceable>/<replaceable>${branch}</replaceable>/builds/<replaceable>${buildid}</replaceable>/make.conf.server</filename>.
+ </para>
+ </note>
+
+ <note>
+ <para>Não existe nenhuma funcionalidade semelhante para
+ <filename><replaceable>${arch}</replaceable>/<replaceable>${branch}</replaceable>/builds/<replaceable>${buildid}</replaceable>/src.conf.client</filename>
+ (e que efeito teria?).</para>
+ </note>
+
+ <example>
+ <title>Exemplo de
+ <filename>make.conf.<replaceable>target</replaceable></filename>
+ para testar a nova versão padrão do
+ <application>ruby</application></title>
+
+ <para>(Neste caso, os conteúdos são idênticos para ambos,
+ servidor e cliente.)</para>
+
+ <screen>RUBY_DEFAULT_VER= 1.9</screen>
+ </example>
+
+ <example>
+ <title>Exemplo de
+ <filename>make.conf.<replaceable>target</replaceable></filename>
+ para compilação do <application>clang</application></title>
+
+ <para>(Neste caso, os conteúdos também são idênticos para ambos,
+ servidor e cliente.)</para>
+
+ <screen>
+.if !defined(CC) || ${CC} == "cc"
+CC=clang
+.endif
+.if !defined(CXX) || ${CXX} == "c++"
+CXX=clang++
+.endif
+.if !defined(CPP) || ${CPP} == "cpp"
+CPP=clang-cpp
+.endif
+# Don't die on warnings
+NO_WERROR=
+WERROR=
+</screen>
+ </example>
+
+ <example>
+ <title>Exemplo de <filename>make.conf.server</filename> para
+ <application>pkgng</application></title>
+
+ <screen>WITH_PKGNG=yes
+PKG_BIN=/usr/local/sbin/pkg</screen>
+ </example>
+
+ <example>
+ <title>Exemplo de <filename>make.conf.client</filename> para
+ <application>pkgng</application></title>
+
+ <screen>WITH_PKGNG=yes</screen>
+ </example>
+
+ <example>
+ <title>Exemplo de <filename>src.conf.server</filename> para
+ testar uma versão nova do código base do
+ <application>sort</application></title>
+
+ <screen>WITH_BSD_SORT=yes</screen>
+ </example>
+ </sect1>
+
+ <sect1 id="starting">
+ <title>Iniciando a Compilação</title>
+
+ <para>Várias compilações separadas para cada arquitetura - a
+ combinação de <literal>branchs</literal> é suportada. Todos os
+ dados privados para uma compilação (árvore de
+ <literal>ports</literal>, árvore do <literal>src</literal>,
+ pacotes, <literal>distfiles</literal>, arquivos de
+ <literal>log</literal>, <literal>bindist</literal>,
+ <literal>Makefile</literal>, etc) estão localizados sob
+ <filename><replaceable>${arch}</replaceable>/<replaceable>${branch}</replaceable>/builds/<replaceable>${buildid}</replaceable></filename>.
+ Alternativamente, a última compilação pode ser referenciada sob
+ o <literal>buildid</literal> <literal>latest</literal>, e a
+ anterior a esta é chamada <literal>previous</literal>.</para>
+
+ <para>Novas compilações são clonadas a partir da
+ <literal>latest</literal>, o que é rápido, uma vez que ele usa
+ ZFS.</para>
+
+ <sect2 id="build-dopackages">
+ <title>Os <literal>Scripts</literal>
+ <command>dopackages</command></title>
+
+ <para>Os <literal>scripts</literal>
+ <filename>scripts/dopackages</filename> são usados para executar
+ as compilações.</para>
+
+ <sect3>
+ <title>Código base antigo</title>
+ <para>Para o código base antigo, os mais úteis são:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para><command>dopackages.7</command> - Executa a compilação
+ para a série 7.X
+ </para>
+ </listitem>
+
+ <listitem>
+ <para><command>dopackages.7-exp</command> - Executa a
+ compilação para a série 7.X com <literal>patches</literal>
+ experimentais (<literal>branch</literal> 7-exp)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para><command>dopackages.8</command> - Executa a
+ compilação para a série 8.X.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para><command>dopackages.8-exp</command> - Executa a
+ compilação para a série 8.X com <literal>patches</literal>
+ experimentais (<literal>branch</literal> 8-exp)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para><command>dopackages.9</command> - Executa a
+ compilação para a série 9.X.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para><command>dopackages.9-exp</command> - Executa a
+ compilação para a série 9.X com <literal>patches</literal>
+ experimentais (<literal>branch</literal> 9-exp)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para><command>dopackages.10</command> - Executa a
+ compilação para a série 10.X.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para><command>dopackages.10-exp</command> - Executa a
+ compilação para a série 10.X com <literal>patches</literal>
+ experimentais (<literal>branch</literal> 10-exp)
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Esses são <literal>wrappers</literal> para o
+ <command>dopackages</command> e todos são
+ <literal>links</literal> simbólicos para
+ <command>dopackages.wrapper</command>.
+ <literal>Wrappers</literal> de <literal>scripts</literal> para
+ um novo <literal>branch</literal> podem ser criados com
+ <literal>links</literal> simbólicos
+ <command>dopackages.${branch}</command> para
+ <command>dopackages.wrapper</command>. Esses
+ <literal>scripts</literal> tem uma série de argumentos. Por
+ exemplo:</para>
+
+ <screen><command>dopackages.7 <replaceable>${arch}</replaceable> <replaceable>${buildid}</replaceable> <literal>[-options]</literal></command></screen>
+
+ </sect3>
+
+ <sect3>
+ <title>Novo código base</title>
+
+ <para>Você pode usar o <command>dopackages.wrapper</command>
+ diretamente, ao invés dos <literal>links</literal> simbólicos.
+ Por exemplo:</para>
+
+ <screen><command>dopackages.wrapper <replaceable>${arch}</replaceable> <replaceable>${branch}</replaceable> <replaceable>${buildid}</replaceable> <literal>[-options]</literal></command></screen>
+
+ </sect3>
+
+ <sect3>
+ <title>Para ambos os códigos base</title>
+
+ <para>Frequentemente você usará <literal>latest</literal> como
+ valor para o <replaceable>buildid</replaceable>.</para>
+
+ <para><literal>[-options]</literal> pode ser nulo, uma ou mais,
+ das opções seguintes:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para><literal>-keep</literal> - Não remove esta compilação no
+ futuro, quando normalmente seria removido como parte do
+ ciclo <literal>latest</literal> -
+ <literal>previous</literal>. Não se esqueça de efetuar a
+ limpeza manualmente quando ele não for mais
+ necessário.</para>
+ </listitem>
+
+ <listitem>
+ <para><literal>-nofinish</literal> - Não executa o
+ pós-processamento após finalizar a compilação.
+ Isto é útil se você espera que a compilação precise ser
+ reiniciada depois de concluída. Se você usar esta opção,
+ não se esqueça de limpar os clientes quando você não
+ precisar mais da compilação.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para><literal>-finish</literal> - Executa apenas o
+ pós-processamento.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para><literal>-nocleanup</literal> - Por padrão, quando o
+ estágio <literal>-finish</literal> da compilação é
+ completado, os dados da compilação serão removidos dos
+ clientes. Esta opção vai evitar a remoção dos
+ dados.</para>
+ </listitem>
+
+ <listitem>
+ <para><literal>-restart</literal> - Reinicia uma compilação
+ interrompida (ou não finalizada) a partir do começo. Os
+ <literal>Ports</literal> que falharam na compilação
+ anterior serão recompilados.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para><literal>-continue</literal> - Reinicia uma compilação
+ interrompida (ou não finalizada). Os
+ <literal>Ports</literal> que falharam na compilação anterior
+ não serão recompilados.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para><literal>-incremental</literal> - Compara os campos
+ importantes do novo <literal>INDEX</literal> com a versão
+ anterior, remove pacotes e arquivos de
+ <literal>log</literal> dos <literal>ports</literal> antigos
+ que foram alterados, e recompila o resto. Isso reduz o
+ tempo de compilação substancialmente, pois os
+ <literal>ports</literal> inalterados não serão recompilados
+ todas as vezes.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para><literal>-cdrom</literal> - O empacotamento desta
+ compilação será usado em um CD-ROM, então os pacotes
+ marcados como <literal>NO_CDROM</literal> e os
+ <literal>disfiles</literal> deverão ser removidos no
+ pós-processamento.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para><literal>-nobuild</literal> - executa todas as etapas do
+ pré-processamento, mas não a compilação dos pacotes.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para><literal>-noindex</literal> - Não reconstrói o
+ <filename>INDEX</filename> durante o pré-processamento.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para><literal>-noduds</literal> - Não reconstrói o arquivo
+ <filename>duds</filename> (<literal>ports</literal> que
+ nunca são compilados, como por exemplo, aqueles marcados com
+ <literal>IGNORE</literal>, <literal>NO_PACKAGE</literal>,
+ etc.) durante o pré-processamento.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para><literal>-nochecksubdirs</literal> - Não verifica o
+ <makevar>SUBDIRS</makevar> para os <literal>ports</literal>
+ que não estão ligados à compilação. (Apenas para o novo
+ código base).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para><literal>-trybroken</literal> - Tenta compilar
+ <literal>ports</literal> marcados como
+ <literal>BROKEN</literal> (desativado por padrão, pois os
+ <literal>clusters</literal> amd64/&i386; agora são
+ suficientemente rápidos e quando fazem compilações
+ incrementais eles gastam muito mais tempo do que o
+ necessário para compilar tudo. Por outro lado,
+ os outros <literal>clusters</literal> são bastante lentos,
+ e seria um desperdício de tempo tentar compilar
+ <literal>ports</literal> marcados como
+ <literal>BROKEN</literal>).
+ </para>
+ <note>
+ <para>Com <literal>-trybroken</literal>, provavelmente você
+ também vai querer usar <literal>-fetch-original</literal>
+ (e, no novo código base,
+ <literal>-unlimited-errors</literal>).</para>
+ </note>
+ </listitem>
+
+ <listitem>
+ <para><literal>-nosrc</literal> - Não atualiza a árvore do
+ <literal>src</literal> a partir do
+ <literal>snapshot</literal> do ZFS, mantendo a árvore da
+ compilação anterior.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para><literal>-srccvs</literal> - Não atualiza a árvore do
+ <literal>src</literal> a partir do
+ <literal>snapshot</literal> do ZFS, em vez disso ela é
+ atualizada com o <literal>cvs update</literal>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para><literal>-noports</literal> - Não atualiza a árvore de
+ <literal>ports</literal> a partir do
+ <literal>snapshot</literal> do ZFS, mantendo a árvore da
+ compilação anterior.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para><literal>-portscvs</literal> - Não atualiza a árvore de
+ <literal>ports</literal> a partir do
+ <literal>snapshot</literal> do ZFS, em vez disso ela é
+ atualizada com o <literal>cvs update</literal>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para><literal>-norestr</literal> - Não tenta compilar
+ <literal>ports</literal> marcados como
+ <literal>RESTRICTED</literal>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para><literal>-noplistcheck</literal> - Não considera como
+ erro <literal>ports</literal> deixarem arquivos para trás
+ ao serem removidos.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para><literal>-nodistfiles</literal> - Não coleta os
+ <literal>distfiles</literal> que passarem no <command>make
+ checksum</command> para depois fazer o
+ <foreignphrase>upload</foreignphrase> para o
+ <hostid>ftp-master</hostid>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para><literal>-fetch-original</literal> - Baixa o
+ <literal>distfile</literal> a partir do
+ <literal>MASTER_SITES</literal> original, em vez do
+ <hostid>ftp-master</hostid>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para><literal>-unlimited-errors</literal> (apenas no novo
+ código base) - anula a verificação de limites do qmanager
+ para compilações descontroladas. Você pode querer isso
+ principalmente quando usar <literal>-restart</literal> em
+ uma compilação que provavelmente vai falhar, ou talvez
+ quando executar <literal>-trybroken</literal>. A
+ A limitação é realizada por padrão.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>A menos que você especifique <literal>-restart</literal>,
+ <literal>-continue</literal>, ou <literal>-finish</literal>, os
+ <literal>links</literal> simbólicos para as compilações
+ existentes serão rotacionados. Isto é, o
+ <literal>link</literal> simbólico para
+ <filename>previous</filename> será removido; a compilação mais
+ recente terá seu <literal>link</literal> modificado para
+ <filename>previous/</filename>; e a nova compilação será criada
+ e referenciada com um <literal>link</literal> em
+ <filename>latest/</filename>.
+ </para>
+
+ <para>Se a última compilação finalizou de forma limpa, você
+ não precisa remover nada. Se ela foi interrompida, ou você usou
+ a opção <literal>-nocleanup</literal>, você precisa limpar os
+ clientes executando:
+ </para>
+
+ <para><command>build cleanup <replaceable>${arch}</replaceable> <replaceable>${branch}</replaceable> <replaceable>${buildid}</replaceable> -full</command></para>
+
+ <para>Os diretórios <filename>errors/</filename>,
+ <filename>logs/</filename>, <filename>packages/</filename>, e
+ assim por diante, são limpos pelos <literal>scripts</literal>.
+ Se você está com pouco espaço, também pode limpar o
+ <filename>ports/distfiles/</filename>. Não altere o diretório
+ <filename>latest/</filename>; ele é um link simbólico para o
+ servidor web.</para>
+
+ <note>
+ <para>O <literal>dosetupnodes</literal> supostamente é executado
+ pelo <literal>script</literal> <literal>dopackages</literal>
+ no caso de <literal>-restart</literal>, mas pode ser uma boa
+ idéia executá-lo manualmente e depois verificar se todos os
+ clientes tem a carga de trabalho esperada. Algumas vezes
+ <literal>dosetupnode</literal> não pode limpar uma compilação
+ e você precisará fazer isso manualmente. (Isto é um
+ defeito.)</para>
+ </note>
+
+ <para>Verifique se a compilação de pacotes para a arquitetura
+ <replaceable>${arch}</replaceable> está executando como
+ usuário ports-<replaceable>${arch}</replaceable> ou ele
+ apresentará um grande número de erros.</para>
+
+ <note><para>Atualmente, a própria compilação de pacotes ocorre em
+ duas fases idênticas. A razão para isso é que, algumas vezes,
+ problemas temporários (por exemplo, falhas do NFS, sites FTP
+ inalcançáveis, etc.) podem quebrar a compilação. Realizar o
+ processo em duas fases é uma solução alternativa para esse tipo
+ de problema.</para></note>
+
+ <para>Seja cuidadoso com <filename>ports/Makefile</filename> para
+ não especificar qualquer diretório vazio. Isso é especialmente
+ importante se você está realizando uma compilação com
+ <literal>patches</literal> experimentais (-exp). Se o processo
+ de compilação encontrar um diretório vazio, ambas as fases de
+ compilação irão parar rapidamente, e um erro similar ao seguinte
+ será adicionado para
+ <filename><replaceable>${arch}</replaceable>/<replaceable>${branch}</replaceable>/make.[0|1]</filename>:
+ </para>
+
+ <screen><literal>don't know how to make dns-all(continuing)</literal></screen>
+
+ <para>Para corrigir este problema, simplesmente comente ou remova
+ as entradas <literal>SUBDIR</literal> que apontam para
+ subdiretórios vazios. Depois de feito isso, você pode
+ reiniciar a compilação executando o comando
+ <command>dopackages</command> adequado com a opção
+ <literal>-restart</literal>.
+ </para>
+
+ <note>
+ <para>Este problema também ocorre se você criar uma nova
+ categoria com um <filename>Makefile</filename> sem entradas
+ <makevar>SUBDIR</makevar>s nele. Isso é, provavelmente, um
+ defeito.</para>
+ </note>
+
+ <example>
+ <title>Atualize a árvore i386-7 e faça uma compilação
+ completa</title>
+
+ <para><command>dopackages.7 i386 -nosrc -norestr -nofinish</command></para>
+ <para><command>dopackages.wrapper i386 7 -nosrc -norestr -nofinish</command></para>
+ </example>
+
+ <example>
+ <title>Reinicie uma compilação para amd64-8 interrompida sem
+ atualizar</title>
+
+ <para><command>dopackages.8 amd64 -nosrc -noports -norestr -continue -noindex -noduds -nofinish</command></para>
+ <para><command>dopackages.wrapper amd64 8 -nosrc -noports -norestr -continue -noindex -noduds -nofinish</command></para>
+ </example>
+
+ <example>
+ <title>Realize o pós-processamento de uma árvore sparc64-7
+ concluída</title>
+
+ <para><command>dopackages.7 sparc64 -finish</command></para>
+ <para><command>dopackages.wrapper sparc64 7 -finish</command></para>
+ </example>
+
+ <para>Dica: geralmente é melhor executar o comando
+ <command>dopackages</command> dentro do
+ <command>screen(1)</command>.</para>
+ </sect3>
+ </sect2>
+
+ <sect2 id="build-command">
+ <title>O comando <command>build</command></title>
+
+ <para>Você pode precisar manipular os dados da compilação antes
+ de inicia-la, especialmente para compilações experimentais.
+ Isto é feito com o comando <command>build</command>. Aqui
+ estão algumas opções úteis para criação:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para><literal>build create <replaceable>arch</replaceable>
+ <replaceable>branch</replaceable>
+ [<replaceable>newid</replaceable>]</literal> - Cria um
+ <replaceable>newid</replaceable> (ou um
+ <literal>datestamp</literal>, se não for especificado).
+ Só é necessário quando da criação de um novo
+ <literal>branch</literal> ou uma nova arquitetura. (TODO:
+ documentar se <literal>newid</literal> deve ser
+ especificado como <literal>latest</literal> no novo código
+ base.)
+ </para>
+ </listitem>
+
+ <listitem>
+ <para><literal>build clone <replaceable>arch</replaceable>
+ <replaceable>branch</replaceable>
+ <replaceable>oldid</replaceable>
+ [<replaceable>newid</replaceable>]</literal> - Cria um
+ clone do <replaceable>oldid</replaceable> para o
+ <replaceable>newid</replaceable> (ou um
+ <literal>datestamp</literal>, se não for especificado).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para><literal>build srcupdate
+ <replaceable>arch</replaceable>
+ <replaceable>branch</replaceable>
+ <replaceable>buildid</replaceable></literal> - Substitui
+ a árvore <literal>src</literal> com um novo
+ <literal>snapshot</literal> do ZFS. Não se esqueça de
+ usar a opção <literal>-nosrc</literal> quando executar o
+ <command>dopackages</command> mais tarde!
+ </para>
+ </listitem>
+
+ <listitem>
+ <para><literal>build portsupdate
+ <replaceable>arch</replaceable>
+ <replaceable>branch</replaceable>
+ <replaceable>buildid</replaceable></literal> - Substitui a
+ árvore de <literal>ports</literal> com um novo
+ <literal>snapshot</literal> do ZFS. Não se esqueça de
+ usar a opção <literal>-noports</literal> quando executar
+ <command>dopackages</command> mais tarde!
+ </para>
+ </listitem>
+
+ </itemizedlist>
+ </sect2>
+
+ <sect2 id="build-one">
+ <title>Compilando um único pacote</title>
+
+ <para>Algumas vezes é necessário recompilar um único pacote a
+ partir do conjunto de pacotes. Isso pode ser feito executando
+ o seguinte comando:</para>
+
+ <para><command><replaceable>path</replaceable>/qmanager/packagebuild <replaceable>amd64</replaceable> <replaceable>7-exp</replaceable> <replaceable>20080904212103</replaceable> <replaceable>aclock-0.2.3_2.tbz</replaceable></command></para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="anatomy">
+ <title>Anatomia de uma compilação</title>
+
+ <para>Uma compilação completa, sem qualquer opção
+ <literal>-no</literal> que desabilite as opções padrões, executa
+ as seguintes operações na ordem especificada:</para>
+
+ <orderedlist>
+ <listitem>
+ <para>Atualiza a árvore de <literal>ports</literal> atual a
+ partir de um <literal>snapshot</literal> do ZFS [*]
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Atualiza o <literal>branch</literal> usado na árvore
+ <literal>src</literal> a partir de um
+ <literal>snapshot</literal> do ZFS [*]
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Verifica se <literal>ports</literal> não têm uma
+ entrada <literal>SUBDIR</literal> no
+ <filename>Makefile</filename> de suas respectivas categorias
+ [*]
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Cria o arquivo <filename>duds</filename>, que é uma
+ lista de <literal>ports</literal> que não precisam ser
+ compilados [*] [+]
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Cria um arquivo <filename>INDEX</filename> atualizado
+ [*] [+]
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Define os nós que serão usados na compilação [*] [+]
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Compila uma lista de <literal>ports</literal> restritos
+ [*] [+]</para>
+ </listitem>
+
+ <listitem>
+ <para>Compila os pacotes (fase 1) [++]</para>
+ </listitem>
+
+ <listitem>
+ <para>Executa outra configuração do nó [+]</para>
+ </listitem>
+
+ <listitem>
+ <para>Compila os pacotes (fase 2) [++]</para>
+ </listitem>
+ </orderedlist>
+
+ <para>[*] O status destes passos pode ser encontrado em
+ <filename><replaceable>${arch}</replaceable>/<replaceable>${branch}</replaceable>/build.log</filename>,
+ bem como no <literal>stderr</literal> do <literal>tty</literal>
+ onde o comando <command>dopackages</command> está
+ rodando.</para>
+
+ <para>[+] Se qualquer destes passos falhar, a compilação será
+ encerrada.</para>
+
+ <para>[++] O status destes passos pode ser encontrado em
+ <filename><replaceable>${arch}</replaceable>/<replaceable>${branch}</replaceable>/make</filename>
+ (antigo código base) ou
+ <filename><replaceable>${arch}</replaceable>/<replaceable>${branch}</replaceable>/journal</filename>
+ (novo código base). <literal>Ports</literal> individuais irão
+ escrever seus <literal>logs</literal> de compilação em
+ <filename><replaceable>${arch}</replaceable>/<replaceable>${branch}</replaceable>/logs</filename>
+ e os seus <literal>logs</literal> de erros em
+ <filename><replaceable>${arch}</replaceable>/<replaceable>${branch}</replaceable>/errors</filename>.
+ </para>
+
+ <para>Anteriormente, a árvore <literal>docs</literal> também era
+ verificada, no entanto, isso se mostrou desnecessário.
+ </para>
+ </sect1>
+
+ <sect1 id="build-maintenance">
+ <title>Manutenção da Compilação</title>
+
+ <para>Existem vários casos onde você precisará limpar manualmente
+ uma compilação:
+ </para>
+
+ <orderedlist>
+ <listitem>
+ <para>Você a interrompeu manualmente.</para>
+ </listitem>
+
+ <listitem>
+ <para>O <hostid>pointyhat</hostid> foi reiniciado enquanto uma
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-doc-all
mailing list