Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 1 Nov 2012 11:06:15 +0000 (UTC)
From:      Edson Brandi <ebrandi@FreeBSD.org>
To:        doc-committers@freebsd.org, svn-doc-all@freebsd.org, svn-doc-head@freebsd.org
Subject:   svn commit: r39892 - in head/pt_BR.ISO8859-1/articles: . portbuild
Message-ID:  <201211011106.qA1B6FVO077325@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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@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@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 ***



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201211011106.qA1B6FVO077325>