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>