# Manual do 'Script' &kdesvn-build;

Michael
Pyne

    michael.pyne@kdemail.net

Carlos
Woelz

    carloswoelz@imap-mail.com

Marcus
Gama

    marcus.gama@gmail.com

Tradução
2006
2007
2008
Michael Pyne
2005
Carlos Woelz
&FDLNotice;
2008-08-09
1.6.3

O &kdesvn-build; é um programa que compila e instala o &kde; diretamente a partir do código existente no repositório &subversion; do &kde;.

KDE
kdesdk
SVN
Subversion
Desenvolvimento KDE

## Introdução

O &kdesvn-build; é um programa que ajuda os usuários a instalar o &kde; a partir do &subversion;.

Será documentado aqui a sintaxe e opções do arquivo de configuração do &kdesvn-build;, as suas opções da linha de comando, as funcionalidades e uma visão geral de todos os passos necessários para compilar o &kde; a partir do código, incluindo os passos que você deverá efetuar ao usar as outras ferramentas ou, em outras palavras, os passos que não são efetuados automaticamente pelo programa &kdesvn-build;.

## Começando

Neste capítulo, será apresentada a forma de utilização do &kdesvn-build; para obter os módulos do repositório do &kde; e compilá-los. Nós daremos também uma explicação básica da estrutura de &subversion; do &kde; e os passos que você terá que efetuar antes de executar o programa.

Todos os tópicos presentes neste capítulo são cobertos com ainda mais detalhes na seção Guia de Compilação do Código do &kde; Passo-a-Passo, na Página Web da Equipe de Qualidade do &kde;. Se você estiver compilando o &kde; pela primeira vez, é uma boa idéia lê-lo ou consultá-lo como fonte de referência. Você irá encontrar informações detalhadas sobre as ferramentas de empacotamento e os requisitos, os problemas de compilação comuns e as estratégias e informações sobre a execução da instalação do seu novo &kde;.

Além, disso, o Wiki TechBase do &kde; mantém um procedimento para compilar o &kde; a partir do código-fonte.

### Preparando o Sistema para Compilar o &kde;

#### Configurar uma nova conta de usuário

É recomendável que você baixe e compile o &kde; com uma conta de usuário separada. Se você já tiver os pacotes do &kde; instalados, a melhor opção será criar um usuário diferente (dedicado) para compilar e executar o novo &kde;. A vantagem de compilar o &kde; com um usuário dedicado é que você evitará o risco de corrupção do sistema base e terá sempre uma forma de trabalhar confortavelmente quando as coisas derem errado.

Mais tarde, você poderá fazer uma instalação de sistema se desejar. Este documento não cobre uma instalação a nível do sistema. Se estiver efetuando uma instalação a nível do sistema, provavelmente já deverá saber o que está fazendo. Caso contrário, recomenda-se consultar a documentação ou páginas de ajuda da sua distribuição, para saber como preparar e usar a instalação do sistema corretamente.

#### Certifique-se de que o seu sistema está pronto para compilar o código do &kde;

Antes de usar o programa &kdesvn-build; (ou qualquer outra estratégia de compilação), você deverá instalar as ferramentas de desenvolvimento e bibliotecas necessárias para o &kde;. A lista completa das ferramentas necessárias poderá ser encontrada em Requisitos de Compilação do &kde;. Os requisitos para a série &kde; 4 podem ser obtidas a partir de KDE TechBase.

Aqui está uma lista das coisas que você irá precisar:

- Se você estiver compilando o &kde; 3, irá precisar das Autotools da GNU (i.e., o &automake; e o &autoconf;).

- Se você estiver compilando o &kde; 4, irá precisar do &cmake;. A versão necessária irá variar, dependendo da versão do &kde; 4 que estiver compilando; veja a TechBase para detalhes mais específicos.

- O programa cliente de &subversion;, incluindo o suporte para HTTP Seguro (HTTPS). Para certificar-se do suporte necessário, você pode executar o ``svn `--version```. Se o módulo 'ra_dav' disser que lida com o esquema HTTPS, então o cliente deve funcionar.

- O compilador gcc, com suporte para C++. A versão 3.3 ou superiores são as que oferecem o melhor suporte.

- Certifique-se de que verificou a página dos Requisitos de Compilação do &kde; para ter certeza de que todas as outras bibliotecas necessárias estão incluídas.

Uma exceção é a biblioteca &Qt;. O &kdesvn-build; irá instalar normalmente uma cópia do &Qt;, quer já a tenha instalado ou não. Assim, não é necessário possuí-la. Se você não quiser usar a cópia do &Qt;, terá que fazer o seguinte:

- Certifique-se de que removeu o módulo 'qt-copy' do seu arquivo de configuração, uma vez que você não irá precisar dele e, se possuí-lo, isso só vai adicionar um tempo adicional à sua compilação.

- Mude a configuração da opção qtdir no seu arquivo de configuração, de modo a apontar para o seu &Qt; de sistema. Isto normalmente equivale à configuração do $`QTDIR` no seu sistema.

- Se você não tiver já o &Qt; instalado, instale-o, incluindo os pacotes -dev ou -devel necessários. Você deverá ter pelo menos o &Qt; 3.3, se for compilar o &kde; 3.5, ou o &Qt; 4.4 se for compilar o &kde; 4.

  Se você estiver compilando o &kde; 4, é altamente recomendado que use a versão 'qt-copy' do &Qt;, certificando-se de aplicar os 'patches' (correcções) recomendados - este é o comportamento padrão, controlado pela opção apply-qt-patches).

Alguns destes pacotes estão divididos em bibliotecas, programas ou utilitários e pacotes de desenvolvimento. Você precisará, pelo menos, do programa ou biblioteca e do seu pacote de desenvolvimento. Se tiver dúvidas, instale tudo. As bibliotecas que necessita irão variar de acordo com os módulos que pretende compilar, uma vez que cada módulo possui os seus próprios requisitos. O TechBase do &kde; tem mais detalhes sobre as ferramentas e técnicas específicas usadas para instalar e encontrar o 'software' necessário.

#### Configurar o &kdesvn-build;

##### Instalar o &kdesvn-build;

Você provavelmente já tem uma versão do programa &kdesvn-build; instalada no seu sistema. Contudo, se não tiver, poderá obtê-lo na página do &kdesvn-build; ou poderá encontrá-lo no seu local original, no repositório de código do &kde;.

O &kdesvn-build; vem incluído no módulo 'kdesdk', sendo este módulo normalmente já incluído nas distribuições. Se você tiver baixado o &kdesvn-build;, certifique-se de que está usando a versão que baixou. Você poderá usar a opção --version para garantir que está usando a versão correta.

1. Para baixar o &kdesvn-build; a partir de de sua página, basta ir para a página do &kdesvn-build; e transferir a versão mais recente. A versão está dentro de um um pacote TAR comprimido, que poderá extrair com o &ark; ou o `tar`. O conteúdo do pacote inclui o programa &kdesvn-build; atual e um arquivo de configuração de exemplo (`kdesvn-buildrc-sample`).

2. Ou você poderá obter o &kdesvn-build; do seu repositório de código, localizado em: http://websvn.kde.org/trunk/KDE/kdesdk/scripts/. Esta é a pasta do Kit de Desenvolvimento de Software do &kde;, que é o berço do &kdesvn-build;. Você poderá clicar no item `kdesvn-build`, que lhe mostrará uma página onde poderá obter a última versão. Faça isso e salve-o num local conveniente no seu disco rígido. Faça mesmo para o `kdesvn-buildrc-sample` se precisar.

Independentemente da técnica que usar, você deverá certificar-se de que o arquivo `kdesvn-build` é executável. Por conveniência, deverá colocá-lo em uma pasta que esteja definida na variável de ambiente `PATH`, caso contrário, poderá obter mensagens que indiquem que o comando não foi encontrado ou que está rodando uma versão errada por engano.

##### Preparar o arquivo de configuração

Ainda que o &kdesvn-build; não necessite que você crie um arquivo de configuração, isto torna o trabalho muito mais simples. Se usar um arquivo de configuração, você poderá controlar os módulos que são instalados ou remover módulos que não deseja instalar. O &kdesvn-build;, por padrão, instala uma instalação utilizável do &kde; que usa opções de instalação muito genéricas, o que poderá não atender as suas necessidades. Assim, é melhor usar um arquivo de configuração.

O arquivo de configuração deverá se chamar `.kdesvn-buildrc`. Este arquivo deverá ser instalado na pasta pessoal (`~/`), e contém todos os dados de configuração necessários para o programa rodar, como as opções de configuração, compilação, a localização do código, o destino da instalação (prefixo), os módulos que serão compilados, &etc;. Os dados de configuração padrão são oferecidos pelo arquivo `kdesvn-buildrc-sample`, que você poderá copiar para o `~/.kdesvn-buildrc` e depois editá-lo.

Você poderá encontrar mais informações sobre a sintaxe do arquivo de configuração em e em .

### Definindo os Dados de Configuração

Para usar o &kdesvn-build;, você deverá ter um arquivo na sua pasta pessoal chamado `.kdesvn-buildrc`, que define as opções gerais e os módulos que deseja baixar e compilar.

É possível usar arquivos de configuração diferentes para o &kdesvn-build;, que estão descritos em . Se você precisar usar várias configurações, veja por favor essa seção. Aqui, nós consideraremos que a configuração está salva em `~/.kdesvn-buildrc`.

A forma mais simples de prosseguir é usar o arquivo `kdesvn-buildrc-sample` como modelo, definir as opções globais de acordo com as suas necessidades e a lista dos módulos que deseja compilar.

A configuração padrão já deverá ser apropriada para efetuar uma compilação do &kde;. Algumas opções que você poderá querer alterar incluem:

- binpath, para alterar a lista de pastas que serão percorridas na procura de comandos. É exatamente igual à variável `PATH` da linha de comando.

- use-stable-kde para mudar a versão padrão dos módulos do &kde;. Por padrão, o &kdesvn-build; irá compilar a versão 'trunk' do &kde; (atualmente é a &kde; 4). Se você quiser compilar a última versão estável do &kde; em vez de usar os seus pacotes da distribuição (atualmente, a versão estável é a 3.5), você deverá configurar esta opção como true (verdadeira).

- kdedir, que muda a pasta de destino para onde o &kde; será instalado. Ela é por padrão a `~/kde`, que é uma instalação para um único usuário.

- qtdir, que controla o local da instalação &Qt; a usar. Por padrão, usa o módulo 'qt-copy' do repositório de &subversion; do &kde; (`~/kdesvn/build/qt-copy`).

  Para as versões do Qt que suportam a instalação, isto também controla onde instalar o 'qt-copy'.

- svn-server, que seleciona o &url; de onde baixar o código. Isto é útil se você for um programador com uma conta &subversion; para o &kde;.

Depois da seção global, existe uma lista de módulos a compilar, delimitados por 'module ... end module'. Verifique se os módulos indicados são, de fato, os módulos que deseja compilar. As opções padrão do arquivo `kdesvn-buildrc-sample` deverão ser suficientes para obter uma instalação relativamente completa do &kde;. Salve o resultado como `.kdesvn-buildrc` na sua pasta pessoal.

Se você desejar fazer um ajuste fino do seu arquivo `.kdesvn-buildrc`, consulte o para obter informações mais detalhadas sobre todas as opções de configuração.

### Usando o 'script' &kdesvn-build;

Agora você está pronto para executar o programa. A partir de uma janela de terminal, autentique-se com o usuário que usará para compilar o &kde; e execute o programa:

    &percnt;su - usuário
    &percnt;kdesvn-build

Agora, o programa deverá começar a baixar o código e a compilá-lo. Dependendo dos módulos que baixar, poderá ser possível que o &kdesvn-build; não consiga ser bem-sucedido na primeira vez que compilar o &kde;. Não se desespere!

O &kdesvn-build; registra o resultado de todos os comandos que executa. Por padrão, os arquivos de registro são mantidos em `~/kdesvn/log`. Para ver o que causou um determinado erro num módulo, no último comando do &kdesvn-build;, normalmente é suficiente ver o `~/kdesvn/log/latest/nome-módulo/error.log`.

Nesse arquivo, você verá o erro que fez com que a compilação falhasse para esse módulo. Se o arquivo disser (no fim) que lhe faltam alguns pacotes, tente instalar o pacote (incluindo os pacotes -dev apropriados) antes de tentar compilar esse módulo e passe a opção --reconfigure depois de instalar os pacotes faltantes.

Ou, se o erro parecer ser um erro de compilação do código do &kde;, pode ser que isso seja resolvido dentro de alguns dias. Se não for resolvido em tempo útil, sinta-se à vontade para enviar um e-mail para kde-devel@kde.org (poderá ser necessário inscrever-se) para comunicar o erro de compilação.

Você poderá encontrar mais exemplos comuns das coisas que poderão correr mal e as suas soluções, assim como algumas sugestões e estratégias gerais para compilar o &kde;, no Guia de Compilação do &kde; a Partir do Código, Passo-a-Passo.

Para mais informações sobre as funcionalidades de registro do &kdesvn-build;, vá a .

### Configurando o Ambiente para Executar o seu &kde; Novo

Assumindo que você está usando um usuário dedicado para compilar o &kde; e já possui uma versão do &kde; instalada, a execução do seu &kde; novo precisará de alguns truques, uma vez que o &kde; novo terá de ter precedência sobre o antigo. Mude as variáveis de ambiente para garantir que isso aconteça.

#### Alterando a configuração do seu perfil inicial

O arquivo `.bash_profile` é o arquivo de configuração do usuário na linha de comando bash, que é usada por muitas distribuições &Linux;. Se você usar uma linha de comando diferente, então poderá ter que ajustar os exemplos dados nesta seção, para a sua linha de comando em particular.

Abra ou crie o arquivo `.bash_profile` na pasta pessoal com o seu editor favorito e adicione ao fim do arquivo: Se você estiver compilando o módulo 'qt-copy' (o padrão), adicione em alternativa:

    QTDIR=(local da qtdir)   # Por padrão, ~/kdesvn/build/qt-copy.
    KDEDIR=(local da kdedir) # Por padrão ~/kde.
    KDEDIRS=$KDEDIR
    PATH=$KDEDIR/bin:$QTDIR/bin:$PATH
    MANPATH=$QTDIR/doc/man:$MANPATH

    # Atuar adequadamente se a LD_LIBRARY_PATH não estiver definida
    if [ -z $LD_LIBRARY_PATH ]; then
      LD_LIBRARY_PATH=$KDEDIR/lib:$QTDIR/lib
    else
      LD_LIBRARY_PATH=$KDEDIR/lib:$QTDIR/lib:$LD_LIBRARY_PATH
    fi

    export QTDIR KDEDIRS PATH MANPATH LD_LIBRARY_PATH

ou, se não estiver compilando o 'qt-copy' (e usar o &Qt; do seu sistema), adicione isto em alternativa:

    KDEDIR=(local da kdedir)  # Por padrão ~/kde.
    KDEDIRS=$KDEDIR
    PATH=$KDEDIR/bin:$QTDIR/bin:$PATH

    # Atuar adequadamente se a LD_LIBRARY_PATH não estiver definida.
    if [ -z $LD_LIBRARY_PATH ]; then
      LD_LIBRARY_PATH=$KDEDIR/lib
    else
      LD_LIBRARY_PATH=$KDEDIR/lib:$LD_LIBRARY_PATH
    fi

    export KDEDIRS PATH LD_LIBRARY_PATH

Se você não estiver usando um usuário dedicado, defina um novo `$KDEHOME` para o seu novo ambiente no seu arquivo `.bash_profile`:

    export KDEHOME="${HOME}/.kde-svn"

    # Criar a pasta se necessário
    [ ! -e ~/.kde-svn ] && mkdir ~/.kde-svn

Se, mais tarde, o seu Menu K estiver vazio ou completamente cheio de aplicativos da sua distribuição, você poderá ter que definir as suas variáveis de ambiente do XDG no seu `.bash_profile`:

    XDG_CONFIG_DIRS="/etc/xdg"
    XDG_DATA_DIRS="${KDEDIR}/share:/usr/share"
    export XDG_CONFIG_DIRS XDG_DATA_DIRS

#### Iniciando o &kde;

Agora que você ajustou a sua configuração do ambiente para usar o &kde; correto, é importante certificar-se de que o programa `startkde` correto seja usado também.

Abra o arquivo de texto `.xinitrc` da sua pasta pessoal, ou crie-o se necessário. Adicione a linha:

    exec ${KDEDIR}/bin/startkde

Em algumas distribuições, poderá ser necessário efetuar os mesmos passos com o arquivo `.xsession`, também na pasta pessoal. Isto aplica-se especialmente nos gerenciadores de login gráficos como o &kdm;, o gdm ou o xdm.

Agora inicie o seu novo &kde;: nos sistemas &BSD; e &Linux;, com o suporte para terminais virtuais, os atalhos &Ctrl;&Alt;F1 ... &Ctrl;&Alt;F12 são usados para mudar para o Console Virtual 1 a 12. Isto permite-lhe executar mais de um ambiente gráfico ao mesmo tempo. Os primeiros seis são terminais de texto e os seis seguintes são gráficos.

Se, quando você iniciar o seu computador, aparecer o gerenciador gráfico de login, você poderá usar o novo ambiente do &kde;, mesmo que não apareça como uma opção. A maioria dos gerenciadores de login, incluindo o &kdm;, possuem uma opção para usar uma Sessão Personalizada ao se logar. Com esta opção, a sua configuração de sessões é carregada do arquivo `.xsession` da sua pasta pessoal. Se você já tiver modificado este arquivo como descrito acima, esta opção deverá carregar a sua nova instalação do &kde;.

Caso contrário, existe algo que você poderá tentar que normalmente funciona: Pressione &Ctrl;&Alt;F2, para que apareça um terminal de texto. Logue-se com o usuário dedicado e digite:

    startx -- :1

Você poderá executar o &kde; a partir do código e o &kde; antigo ao mesmo tempo! Logue-se com o seu usuário normal e inicie o ambiente de trabalho do &kde; estável. Pressione &Ctrl;&Alt;F2 (ou F1, F3, etc..), e verá um terminal de texto. Logue-se com o usuário dedicado ao &subversion; do &kde; e digite:

    startx -- :1

Você poderá voltar ao ambiente de trabalho do &kde; do seu usuário normal pressionando a tecla de atalho do ambiente já em execução. Ela é normalmente o &Ctrl;&Alt;F7, sendo que você poderá também precisar usar o F6 ou o F8 em alternativa. Para voltar ao seu &kde; compilado pelo &kdesvn-build;, irá usar a mesma seqüência, usando no entanto a tecla de função seguinte. Por exemplo, se você precisar inserir &Ctrl;&Alt;F7 para mudar para o seu &kde; normal, poderá ter que inserir &Ctrl;&Alt;F8 para voltar ao seu &kde; do &kdesvn-build;.

## Funcionalidades do Programa

### Visão Geral das Funcionalidades

As funcionalidades do &kdesvn-build; incluem:

- Suporta os níveis de mensagens de resultado, desde o mais silencioso até à depuração completa.

- O &kdesvn-build; pode, com a assistência da página Web do &kdesvn-build; e com o servidor de FTP do &kde; (FTP desde o &kdesvn-build; 1.4), permitir extrações rápidas de alguns módulos. Se o módulo que estiver extraindo já possuir um pacote equivalente na página Web, então o &kdesvn-build; irá baixar essa imagem e prepará-la para o seu computador.

  Isto é mais rápido para você, e ajuda a liberar alguma carga nos servidores anônimos de &subversion; do kde.org.

- Outra melhoria de performance é conseguida ao iniciar o processo de compilação de um módulo assim que o código-fonte desse módulo tenha sido transferido. (Disponível desde a versão 1.6)

- Tem um excelente suporte para o módulo 'qt-copy', incluindo a aplicação opcional de correções e otimizações no módulo 'qt-copy'.

- O &kdesvn-build; tem mensagens de resultado coloridas.

- O &kdesvn-build; não precisa de uma GUI presente para funcionar. Por isso, você poderá compilar o &kde; sem precisar de um ambiente gráfico alternativo.

- Suporta a definição de opções padrão para todos os módulos (como as opções de compilação ou de configuração). Essas opções também poderão ser modificadas normalmente para módulos específicos.

  Do mesmo modo, o &kdesvn-build; irá adicionar opções padrão, como for apropriado, para lhe poupar trabalho e alguns erros possíveis, definindo-as você mesmo.

- O &kdesvn-build; poderá baixar uma marca ou ramificação específica de um módulo. Você poderá também ter a certeza de que é usada uma versão específica em vez de um módulo.

- O &kdesvn-build; poderá mudar automaticamente a pasta de origem para baixar a partir de um repositório, ramificação ou marca diferentes. Isto acontece automaticamente quando você mudar alguma opção que altere o &url; do repositório, se bem que você deve usar a opção --svn-only para deixar que o &kdesvn-build; saiba que é aceitável efetuar a mudança.

- O &kdesvn-build; pode obter apenas partes de um módulo, naquelas situações em que você só precisa de um programa de um módulo maior.

- Para os programadores: O &kdesvn-build; irá lembrar de você se você usar o svn+ssh:// mas o ssh-agent não estiver rodando, uma vez que isso levará a pedidos de senha repetidos do &ssh;.

- Pode enviar relatórios por e-mail dos erros a um determinado usuário.

- Pode remover a pasta de compilação de um módulo, após a sua instalação, para poupar espaço, em detrimento de um maior tempo de compilação.

- Os locais das pastas usadas pelo &kdesvn-build; são configuráveis (até mesmo por módulo).

- Pode usar o &sudo; ou um comando definido pelo usuário para instalar os módulos, para que o &kdesvn-build; não precise ser executado como super-usuário.

- O &kdesvn-build; roda com prioridade reduzida, por padrão, para lhe permitir ainda usar o seu computador, enquanto o &kdesvn-build; estiver trabalhando.

- Possui suporte para usar as marcas e ramificações do &subversion; do &kde;.

- O &kdesvn-build; irá usar um conjunto de técnicas para tentar e garantir uma compilação com sucesso.

- Existe o suporte para prosseguir com uma compilação de um determinado módulo. Você pode até ignorar alguns módulos temporariamente para uma determinada compilação.

- O &kdesvn-build; pode efetuar rapidamente uma compilação parcial de um módulo, diretamente a partir da linha de comando, quando só precisar atualizar parte de um módulo.

- O &kdesvn-build; irá baixar automaticamente e criar a pasta `/admin` necessária, se ela não tiver sido obtida do &subversion; da primeira vez, por alguma razão. Isto só se aplica aos módulos do &kde; 3, uma vez que o /admin não é necessário nos módulos 'qt-copy' ou do &kde; 4.

- O &kdesvn-build; irá mostrar o progresso da sua compilação ao usar o &unsermake; e o &cmake;, e irá medir sempre o tempo do processo de compilação, para que você saiba no fim quanto tempo levou de fato.

- Tenta automaticamente compilar de novo os módulos que foram compilados com o 'make' incremental, que está sujeito a erros ao fim de algumas modificações.

- Vem com um conjunto seguro de opções padrão, apropriadas para compilar uma instalação mono-usuário básica do &kde; a partir do repositório de &subversion; anónimo.

- Vem com suporte para o &unsermake;.

- Expansão do til (~) para as suas opções de configuração. Por exemplo, você poderá especificar:

      qtdir ~/kdesvn/build/qt-copy

- Configura automaticamente um sistema de compilação, onde a pasta de código não é a mesma que a pasta de compilação, para que você mantenha as suas pastas de origem limpas.

- Você poderá indicar as opções globais a aplicar a todos os módulos a serem obtidos, assim como poderá indicar opções para serem aplicadas aos módulos individualmente.

- Uma vez que as ferramentas 'auto*' normalmente perdem a sincronização com as modificações na árvore de código, você poderá forçar uma nova compilação de um módulo, se criar um arquivo chamado '.refresh-me' na pasta de compilação do módulo em questão ou executando o &kdesvn-build; com a opção `--refresh-build`.

- Você poderá indicar vários valores de ambiente a usar durante a compilação, incluindo o `KDEDIR`, o `QTDIR`, o `DO_NOT_COMPILE` e o `CXXFLAGS`.

- Registro dos comandos. Os arquivos de registro são datados e numerados, para que você tenha sempre um relatório de execução de um programa. Do mesmo modo, é criada uma ligação simbólica 'latest' para apontar sempre para o item de registro mais recente na respectiva pasta.

- Se você estiver usando uma compilação de usuário do &kde;, em vez de uma instalação do sistema (para a qual precisa ser o 'root' para instalar), você poderá usar o programa para instalá-lo para você. O código não foi ainda validado e ele faz uma utilização ampla da chamada `system()`, assim, eu não recomendo executá-lo como 'root' por enquanto.

- Você poderá usar o make-install-prefix para anteceder o comando ``make` `install`` com um comando separado, o que poderá ser útil para o &sudo;.

- Você poderá obter apenas uma parte de um módulo do &kde; no &subversion;. Por exemplo, poderá obter apenas a biblioteca taglib do kdesupport ou apenas o K3B do extragear/multimedia. O programa irá obter automaticamente o kde-common, se for necessário para fazer a compilação funcionar.

- Você poderá fingir efetuar as operações. Se passar a opção `--pretend` ou `-p` na linha de comando, o programa fornecerá uma descrição mais completa dos comandos que está prestes a executar, sem executá-los de fato.

### Registro de compilação do &kdesvn-build;

#### Visão geral do registro

O registro é uma funcionalidade do &kdesvn-build; que consiste no fato do resultado de todos os comandos que o &kdesvn-build; executa serem salvos em um arquivo para serem posteriormente examinados, se necessário. Isto é feito porque muitas vezes é necessário ter o resultado destes programas quando houver um erro de compilação, uma vez que poderão existir várias razões para a compilação falhar, em primeiro lugar.

##### Disposição da pasta de registro

Os registros são sempre salvos sob a pasta de registro. O destino da pasta de registro é controlado pela opção log-dir, que por padrão é `${source-dir}/log` (onde o ${source-dir} é o valor da opção source-dir. No resto desta seção, este valor será referido como ${log-dir}).

Sob a ${log-dir}, existe um conjunto de pastas, uma por cada vez que o &kdesvn-build; foi executado. Cada pasta possui como nome a data e o número da execução. Por exemplo, a segunda vez que o &kdesvn-build; foi executado em 26 de Maio de 2004 irá criar uma pasta chamada `2004-05-26-02`, onde o 2004-05-26 corresponde à data e o -02 é o número da execução.

Para sua conveniência, o &kdesvn-build; irá também criar uma ligação para os registros da sua última execução, chamada `latest`. Assim, os registros da execução mais recente do &kdesvn-build; deverão estar sempre sob a `${log-dir}/latest`.

Agora, cada pasta de uma execução do &kdesvn-build; irá conter, por sua vez, um conjunto de pastas, uma por cada módulo &kde; que o &kdesvn-build; tenta compilar. Do mesmo modo, irá conter um arquivo chamado `build-status` nessa pasta, que lhe permitirá determinar quais os módulos que compilaram bem e os que falharam.

Se um módulo em si tiver um sub-módulo (como o extragear/multimedia, playground/utils ou KDE/kdelibs), então, haverá uma disposição equivalente na pasta de registros. Por exemplo, os registros do KDE/kdelibs, após a última execução do &kdesvn-build;, irão aparecer em `${log-dir}/latest/KDE/kdelibs` e não em `${log-dir}/latest/kdelibs`.

Na pasta de registro de cada módulo, você irá encontrar um conjunto de arquivos para cada operação que o &kdesvn-build; efetuar. Se o &kdesvn-build; atualizar um módulo, você verá arquivos chamados `svn-co.log` (para um módulo extraído por completo) ou `svn-up.log` (ao atualizar um módulo que já tinha sido extraído). Se o comando `configure` foi executado, então você provavelmente verá um arquivo `configure.log` nessa pasta.

Se um erro ocorreu, você deverá ser capaz de ver uma explicação da razão num dos arquivos. Para ajudá-lo a determinar qual o arquivo que contém o erro, o &kdesvn-build; irá criar uma ligação do arquivo que contém o erro (do tipo `build-1.log` para um arquivo chamado `error.log`).

A vantagem de tudo isto é que, para ver onde um arquivo falhou na compilação, após a sua última execução do &kdesvn-build;, o arquivo que deverá ver primeiro é o `${log-dir}/latest/nome-módulo/error.log`.

Se o arquivo `error.log` estiver em branco (especialmente após uma instalação), então provavelmente não houve qualquer erro. Algumas das ferramentas usadas pelo sistema de compilação do &kde; irão comunicar por engano um erro quando não ocorreu nada.

Do mesmo modo, alguns comandos poderão fugir ao redirecionamento do resultado do &kdesvn-build; e ignorar o arquivo de registro em certas circunstâncias (normalmente ao obter o conteúdo do &subversion; na primeira vez), e o resultado do erro, nesse caso, não estará no arquivo de registro mas sim no &konsole; ou no terminal onde executou o &kdesvn-build;.

## O Formato do '.kdesvn-buildrc'

Para usar o programa, você deverá ter um arquivo na sua pasta pessoal `.kdesvn-buildrc`, que descreve os módulos que deseja obter e compilar.

Ele começa com as opções globais, indicadas da seguinte forma:

    global
    nome-opção valor-opção
    [...]
    end global

Segue-se então uma ou mais seções dos módulos, organizadas da seguinte forma:

    module nome-módulo
    nome-opção valor-opção
    [...]
    end module

O nome-módulo deverá ser um módulo do repositório de &subversion; do &kde; (por exemplo, o 'kdelibs' ou o 'kdebase'). Algumas das opções sobrepõem-se às globais, algumas adicionam-se às opções globais e algumas opções globais simplesmente não podem ser sobrepostas.

Segue-se uma lista ordenada alfabeticamente das opções que poderá usar. Clique na opção para descobrir mais sobre ela. Se alguma não estiver documentada, envie por favor um e-mail aos autores, usando o endereço que poderá encontrar acima.

- apply-qt-patches, para melhorar o 'qt-copy'.

- async, para atualizar e compilar ao mesmo tempo.

- binpath, para definir a variável `PATH`.

- branch, para obter uma determinada ramificação, em vez da '/trunk'.

- build-dir, para definir a pasta onde será feita a compilação.

- checkout-only, para transferir apenas as partes de um módulo.

- cmake-options para definir as opções com que um módulo poderá ser configurado com o &cmake;.

- colorful-output para colorir o resultado do programa.

- configure-flags para definir as opções com que um módulo poderá ser configurado.

- cxxflags para definir a variável `CXXFLAGS`.

- dest-dir para mudar a pasta de instalação de um módulo.

- disable-agent-check, para impedir que o &kdesvn-build; verifique o estado do 'ssh-agent'.

- do-not-compile, para marcar as pastas que não serão compiladas.

- inst-apps, para só compilar e instalar algumas pastas.

- install-after-build, para evitar a instalação após o processo de compilação.

- kdedir, para indicar a pasta onde o &kde; será instalado.

- kde-languages, para definir os pacotes de traduções a baixar e instalar.

- libpath, para configurar a variável `LD_LIBRARY_PATH`.

- make-install-prefix, para executar um programa auxiliar (como o &sudo;) durante o ``make` `install``.

- make-options, para passar opções ao programa &make;.

- manual-build, para evitar que o módulo seja compilado automaticamente.

- manual-update, para evitar que seja feito, seja o que for, ao módulo de forma automática.

- module-base-path, para mudar o local de onde transferir o módulo (útil para as ramificações - 'branches' -, e marcas - 'tags').

- niceness, para mudar a prioridade da CPU.

- no-rebuild-on-fail, para evitar a execução do &make; novamente se algo falhar.

- qtdir, para definir a localização do &Qt;.

- set-env, para configurar uma variável de ambiente.

- source-dir, para mudar o local onde colocar o código transferido.

- stop-on-failure, para fazer com que o &kdesvn-build; pare o mais cedo possível, após encontrar um problema.

- svn-server, para mudar o servidor de onde é transferido o código.

- use-unsermake, para usar o sistema de compilação avançado, o &unsermake;.

Aqui está uma tabela com as opções globais, bem como alguns comentários sobre elas. As opções que se sobreporem às globais irão também sobrepor-se a uma configuração da linha de comando.

### Tabela de Opções

Nome da Opção | Comportamento do Módulo -> Global | Notas
--- | --- | ---

apidox

Sobrepõe-se à global

Esta opção foi usada para permitir compilar a documentação da API do módulo do KDE. Ela foi removida do &kdesvn-build; 1.6.3 devido a não ser suportada no KDE 4. A documentação 'online' da API está disponível em kde.org. Além disso, é possível compilar a documentação da API do KDE 4 com um programa que vem incluído no módulo 'kdesdk' (na pasta '/scripts'). Veja o TechBase do KDE para mais detalhes. Obviamente, ainda é possível compilar manualmente a documentação da API para os módulos mais antigos.

apply-qt-patches

Sobrepõe-se à global

Esta opção só é útil para o 'qt-copy'. Se for um valor diferente de zero, então o programa 'apply-patches' do 'qt-copy' será executado antes da compilação, para aplicar as alterações não oficiais no 'qt-copy'. Uma vez que estas alterações são normalmente a razão para usar o 'qt-copy', em vez de um &Qt; oficial, não deverá haver qualquer problema em ativá-las. Por padrão, está ativada a aplicação destas correções.

async | Não poderá ser sobreposta | Esta opção ativa o modo de operação assíncrono, onde a atualização do código fonte e o processo de compilação são executados em paralelo, ao invés de esperar por toda a atualização do código antes de iniciar o processo de compilação. O padrão é o modo assíncrono ativado. Para desativar, configure a opção para false Esta opção está disponível desde a versão 1.6.

binpath

Sobrepõe-se à global

Ative esta opção para modificar a variável de ambiente PATH durante a compilação. Não poderá sobrepor esta opção numa opção do módulo. O valor padrão é o `/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin`. Esta variável de ambiente deverá incluir os locais, separados por dois-pontos das suas ferramentas de desenvolvimento. Os locais `$`KDEDIR`/bin` e `$`QTDIR`/bin` são adicionados automaticamente. Você poderá usar o til (~) para os locais que adicionar com esta opção.

branch

Sobrepõe-se à global

Altere esta opção para obter uma ramificação do &kde;, em vez do valor padrãotrunk, onde o desenvolvimento do &kde; está em curso. Por exemplo, para obter a ramificação do &kde; 3.4, você deverá configurar esta opção como 3.4.

Lembre-se que alguns módulos usam um nome de ramificação diferente. Notavelmente, o módulo obrigatório 'arts' não segue os números de versões do &kde;. O 'arts' que acompanhava o &kde; 3.4 era o 1.4.

Se o &kdesvn-build; não conseguir obter adequadamente uma ramificação com esta opção, você poderá ter que indicar manualmente o &url; de onde baixar, com a opção override-url.

build-dir

Sobrepõe-se à global

Use esta opção para mudar a pasta que contém o código compilado. Existem três formas diferentes de usá-la:

- Relativa à pasta de código do &kde; no &subversion; (ver a opção 'source-dir'). Esta é a opção padrão e a forma como funcionou o programa até à versão 0.61. Este modo fica selecionado se digitar o nome de uma pasta que não comece por um til (~) ou uma barra (/).

  O valor padrão é `build`.

- Um local absoluto. Se indicar um local que comece por um /, então será usado esse local diretamente. Por exemplo, o `/tmp/kde-obj-dir/`.

- Relativo à sua pasta pessoal. Se indicar uma pasta que comece com um '~', então o local será usado em relação à sua pasta pessoal, de forma semelhante à expansão do til da linha de comando. Por exemplo, o `~/builddir` irá configurar a pasta de compilação como `/home/usuário/builddir`.

Surpreendentemente, esta opção poderá ser alterada por módulo.

checkout-only

Sobrepõe-se à global

Altere esta opção para obter o código do &subversion; passo-a-passo. O valor desta opção deverá ser uma lista separada por espaços das pastas a transferir. Se não incluir a pasta 'admin', ela será incluída automaticamente (se necessário). Ao transferir passo-a-passo, a pasta 'admin' será obtida do 'kde-common', que é onde se encontra no servidor do &subversion;. Ainda que esta opção se sobreponha à global, observe que esta opção, como global, não faz sentido.

cmake-options

Adiciona às opções globais (exceto no 'qt-copy')

Use esta opção para indicar quais opções passar ao &cmake; quando criar o sistema de compilação do módulo. Quando isto é usado como uma opção global, é aplicada a todos os módulos onde este programa se compila. Quando é usado como uma opção de um módulo, é adicionada ao fim das opções globais. Isto permite-lhe definir opções comuns do &cmake; na seção global.

Esta opção substitui as configure-flags para todos os módulos do &kde; 4, já que eles usam o &cmake; na compilação.

Uma vez que estas opções são passadas diretamente à linha de comando do &cmake;, deverão ser indicados como seriam passados no &cmake;. Por exemplo:

    cmake-options -DCMAKE_BUILD_TYPE=RelWithDebInfo

Já que isto é muito trabalhoso, o &kdesvn-build; faz tudo para que as opções restantes sejam definidas corretamente. Assim, você poderá deixar esta opção em branco.

configure-flags

Adiciona às opções globais (exceto no 'qt-copy')

Use esta opção para indicar quais opções passar ao './configure' quando criar o sistema de compilação do módulo. Quando isto é usado como uma opção global, é aplicada a todos os módulos onde este programa se compila. O 'qt-copy' usa um conjunto muito diferente de opções do 'configure' do resto do &kde;, assim esta opção sobrepõe as opções globais, quando é aplicada ao 'qt-copy'.

Esta opção aplica-se ao 'qt-copy' e a todos os módulos do &kde; 3. Os módulos do &kde; 4 usam o &cmake;, que é controlado pela opção cmake-options.

colorful-output | Não poderá ser sobreposta | Configure esta opção como false para desativar o resultado colorido do &kdesvn-build;. Por padrão é true. Lembre-se que o &kdesvn-build; não irá mostrar os códigos de cores em nada que não seja um terminal (como o 'xterm', o &konsole; ou o console normal do &Linux;).

cxxflags

Adiciona-se à opção global

Use esta opção para indicar as opções a passar ao `./configure` como `CXXFLAGS`, ao criar o sistema de compilação do módulo. Esta opção é indicada aqui em vez do configure-flags ou do cmake-options, uma vez que esta opção irá também definir a variável de ambiente `CXXFLAGS` durante o processo de compilação.

Observe que para o &kde; 4 e qualquer outro módulo que use o &cmake;, é necessário configurar a opção CMAKE_BUILD_TYPE para "none" ao configurar o módulo. Isto pode ser feito usando a opção cmake-options.

dest-dir

Sobrepõe-se à global

Use esta opção para mudar o nome de um módulo no disco. Por exemplo, se o seu módulo era 'extragear/network', você pode mudá-lo para 'extragear-network' com esta opção. Repare que, ainda que isto mude o nome do módulo no disco, não é uma boa idéia incluir pastas ou separadores de pastas no nome, uma vez que isso irá interferir com as opções build-dir ou source-dir.

disable-agent-check

Não poderá ser sobreposta

Normalmente, se você estiver usando o &ssh; para baixar o código do &subversion; (se, por exemplo, estiver usando o protocolo 'svn+ssh'), o &kdesvn-build; irá tentar certificar-se de que, se estiver usando o 'ssh-agent', ele está de fato gerenciando algumas identidades do &ssh;. Isto é para tentar evitar que o &ssh; pergunte a sua frase-senha para todos os módulos. Você poderá desativar esta opção configurar a opção `disable-agent-check` como true.

do-not-compile

Sobrepõe-se à global

Use esta opção para selecionar um conjunto específico de pastas a compilar num módulo (em vez de serem todas). As pastas a compilar deverão estar separadas por espaços.

Esta funcionalidade tanto é suportada pelo &kde; 3 como pelo &kde; 4. O suporte para o KDE 4 foi adicionado no &kdesvn-build; 1.6.3.

Lembre-se que o código dos programas será ainda transferido. Você poderá usar a instrução checkout-only para escolher as pastas que deseja obter.

Por exemplo, para manter o &juk; e o &kscd; no módulo 'kdemultimedia' sem serem compilados, você poderá adicionar "do-not-compile juk kscd" no seu módulo 'kdemultimedia'.

email-address | Não poderá ser sobreposta | Configure esta opção com o endereço de e-mail que o &kdesvn-build; deverá enviar, no caso dele precisar enviar mensagens de e-mail. Você não terá que se preocupar com isto se não usar qualquer funcionalidade que envie e-mails. (Elas estão todas desativadas por padrão). Atualmente, somente o email-on-compile-error necessita desta opção.

email-on-compile-error

Não poderá ser sobreposta

Você poderá configurar esta opção com o endereço de e-mail para onde enviar um relatório, sempre que um módulo não conseguir ser compilado. O &kdesvn-build; irá esperar até que todos os módulos terminem e irá recolher todos os resultados no relatório. Ele só é enviado se um módulo se recusar a compilar.

Por favor, veja a opção email-address para configurar o endereço que o &kdesvn-build; irá usar para envio, uma vez que o valor padrão não é normalmente o que você deseja.

inst-apps

Sobrepõe-se à global

Esta é o oposto da opção do-not-compile. Serve para indicar que apenas as pastas de topo referidas serão compiladas. As pastas deverão estar separadas por espaços.

As alterações não farão efeito até à próxima vez que o `make `-f` Makefile.cvs` seja executado, quer automaticamente pelo programa, quer manualmente pelas opções `--refresh-build` ou `--recreate-configure`.

Esta opção não funciona ainda para os módulos que usam o sistema de compilação &cmake;.

Lembre-se que o código dos programas será ainda transferido. Você poderá usar a instrução checkout-only para escolher as pastas que deseja obter.

install-after-build | Sobrepõe-se à global | Esta opção é usada para instalar o pacote depois dele ser compilado com sucesso. Esta opção está ativa por padrão. Se quiser desativá-la, terá que configurar esta opção como 0 no arquivo de configuração. Você poderá também usar a opção da linha de comando `--no-install`.
kdedir | Sobrepõe-se à global | Esta opção define a pasta em que o &kde; será instalado após a compilação. Por padrão, será em `~/kde`. Se mudar isto para uma pasta que precise do acesso do 'root', será útil também ler algumas informações sobre a opção make-install-prefix.

kde-languages

Não poderá ser sobreposta

Esta opção permite-lhe selecionar os pacote de localização baixados e instalados juntamente com o &kde;. Você poderá fazer isto se não morar nos Estados Unidos e quiser o &kde; traduzido para o seu idioma nativo.

Para usar esta opção, configure-a como uma lista separada por espaços dos idiomas a instalar. Cada língua possui um código associado a ele, que poderá ser encontrado nesta página: http://i18n.kde.org/teams/.

É aceitável escolher apenas uma língua. Por padrão, não é baixada nenhuma, o que significa que o &kde; irá aparecer em Inglês dos EUA.

Por exemplo, para optar por instalar o Português Brasileiro, você deverá configurar a opção com algo do tipo: ``kde-languages` pt_BR`. Terá ainda que usar o &kcontrol; para escolher o idioma Português do Brasil, todavia.

libpath | Sobrepõe-se à global | Configure esta opção para definir a variável de ambiente LD_LIBRARY_PATH, enquanto efetua a compilação. Você não poderá sobrepor esta opção num módulo. O valor padrão está em branco, mas os locais `$`KDEDIR`/lib` e `$`QTDIR`/lib` são adicionados automaticamente. Você poderá usar o til (~) para os locais que adicionar com esta opção.
log-dir | Sobrepõe-se à global | Use esta opção para mudar a pasta que irá conter os arquivos de registro gerados pelo programa. Esta opção poderá ser definida para cada módulo, a partir da versão 0.64.
make-install-prefix | Sobrepõe-se à global | Configure esta variável com uma lista separada por espaços, que será interpretada como um comando e as suas opções, para anteceder o comando ``make` `install``, que é usado para instalar os módulos. Isto é útil para instalar os pacotes com o &sudo;, por exemplo, mas tenha cuidado ao trabalhar com os privilégios do 'root'.
make-options | Sobrepõe-se à global | Configure esta variável para passar as opções da linha de comando ao comando `make`. Isto é útil para os programas, como o distcc ou para os sistemas com mais de um núcleo de processamento.
manual-build | Sobrepõe-se à global | Configure o valor da opção como true para evitar que o processo de compilação tente compilar este módulo. Ele ainda será mantido atualizado ao atualizar a partir do &subversion;. Esta opção é exatamente equivalente à opção da linha de comando `--no-build`.
manual-update | Sobrepõe-se à global | Configure o valor da opção como true para evitar que o processo de compilação tente atualizar (e, por conseguinte, compilar ou instalar) este módulo. Se definir esta opção para um módulo, também poderá tê-la comentada.

module-base-path

Sobrepõe-se à global

Configure esta opção para se sobrepor à pasta padrão do &kdesvn-build; para o módulo em questão. Isto poderá ser usado, por exemplo, para usar ramificações ou marcas específicas de determinadas bibliotecas. O Visualizador de Código do &kde; é extremamente valioso para ajudá-lo a escolher o local correto.

Lembre-se que o &kdesvn-build; constrói o local final de acordo com o seguinte modelo: `$svn-server`/home/kde/`$module-base-path`/`$module-name`.

O valor padrão tanto pode ser o trunk como o trunk/KDE, dependendo do nome do módulo.

Use as opções branch ou tag em alternativa, sempre que forem aplicáveis.

niceness | Não poderá ser sobreposta | Configure esta opção com um valor entre 20 e 0. Quanto mais alto o número, menor prioridade terá o &kdesvn-build;. O valor padrão é 10.
no-svn | Sobrepõe-se à global | Se esta opção for igual a 'true', então o &kdesvn-build; não irá atualizar o código-fonte do módulo automaticamente. Ele ainda tentará compilar o módulo, caso já não tenha tentado anteriormente.
no-rebuild-on-fail | Sobrepõe-se à global | Configure o valor desta opção como true para evitar que o &kdesvn-build; sempre tente compilar de novo este módulo, se falhar numa compilação incremental. Normalmente, o &kdesvn-build; irá tentar compilar de novo o módulo do zero, para lidar com o efeito de uma atualização do &subversion; inválida que confunda o sistema de compilação.
override-url | Sobrepõe-se à global | Se configurar esta opção, o 'kdesvn-build' irá usar o seu valor como o &url; a passar ao &subversion;, sem qualquer alteração. Você geralmente deverá usar esta opção, se quiser obter uma versão específica, mas o &kdesvn-build; não conseguir descobrir o que você quer dizer ao usar a opção branch.

qtdir

Sobrepõe-se à global

Configure esta opção para definir a variável de ambiente `QTDIR` enquanto compila. Você poderá sobrepor esta configuração numa opção de um módulo. Se não indicar esta opção, será por padrão a `${source-dir}/build/qt-copy`, que irá usar o módulo 'qt-copy' que está incluído no repositório de código do &kde;. Você poderá usar um til (~) que representa a sua pasta pessoal.

remove-after-install

Sobrepõe-se à global

Se estiver com pouco espaço em disco, você poderá querer usar esta opção para remover automaticamente a pasta de compilação (ou as pastas de compilação e de código, para instalações episódicas), após o módulo ter sido instalado com sucesso.

Os valores possíveis para esta opção são:

- none - Não remove nada (Este é o valor padrão).

- builddir - Remove a pasta de compilação, mas não o código.

- all - Remove tanto o código-fonte como a pasta de compilação.

Note que a utilização desta opção poderá ter um grande impacto na utilização da sua largura de banda (se usar o all) e o tempo que dura a compilação do &kde;, uma vez que o &kdesvn-build; será incapaz de efetuar compilações incrementais.

revision

Sobrepõe-se à global

Se esta opção for configurada com um valor diferente de 0 (zero), o &kdesvn-build; irá obrigar a atualização do &subversion; ao obter o módulo que tenha exatamente esse número de versão, mesmo que as opções como o branch estejam em efeito. Se o módulo já estiver na versão indicada, então não será mais atualizado, a menos que esta opção seja alterada ou removida da configuração.

set-env

Sobrepõe-se à global

Esta opção aceita um conjunto de valores separados por espaços, onde o primeiro valor é a variável de ambiente a definir e o resto dos valores é o que deseja atribuir à sua variável. Por exemplo, para configurar a variável `RONALD` como McDonald, você deve colocar este comando na seção apropriada:

    set-env RONALD McDonald

Esta opção é especial, na medida em que poderá ser repetida sem sobrepor a configuração anterior do 'set-env' na mesma seção do arquivo de configuração. Desta forma, você poderá definir mais de uma variável de ambiente por módulo (ou a nível global).

source-dir | Sobrepõe-se à global | Esta opção é usada para definir a pasta do seu computador onde será guardado o código-fonte do &subversion; do &kde;. Se não indicar este valor, será usado o valor padrão `~/kdesvn`. Se você especificar este valor, use um local absoluto.
stop-on-failure | Sobrepõe-se à global | Configure o valor desta opção como true para fazer com que o programa pare a execução, após ocorrer um erro durante o processo de compilação ou instalação. Esta opção está desativada por padrão.
svn-server | Sobrepõe-se à global | Esta opção é usada para definir o servidor usado para obter o código do &subversion;. Por padrão, é usado o repositório anónimo de &subversion;, em `svn://anonsvn.kde.org/`

tag

Sobrepõe-se à global

Use esta opção para obter uma versão específica de um módulo.

Nota: As chances serão muito boas quando não quiser usar esta opção. As versões do &kde; estão disponíveis em pacotes compactados no servidor de FTP do &kde; ou num dos seus servidores espelho.

Se você estiver usando o &kdesvn-build; porque está com problemas para obter uma versão do &kde; para compilar na sua distribuição, pense em usar a ferramenta de compilação Konstruct em alternativa, que funciona a partir dos pacotes de lançamento.

unsermake-options | Sobrepõe-se à global | Esta opção é como a make-options, só que para o &unsermake;, que aceita algumas opções que o &make; não compreende.
use-cmake | Sobrepõe-se à global | Esta opção foi removida no &kdesvn-build; 1.4, uma vez que todos os módulos do &kde; 4 necessitam do e a &cmake;utilização do &cmake; não é permitida em mais nenhum módulo.

use-qt-builddir-hack

Sobrepõe-se à global

Ainda que esta opção se sobreponha à global, só fará sentido para o 'qt-copy'. Configure esta opção como true para ativar o modo de 'srcdir' != 'builddir'. Se estiver ativada, o &kdesvn-build; irá copiar o módulo de código do 'qt-copy' para a pasta de compilação e efetuar as compilações a partir daí. Isto significa que a sua variável de ambiente `QTDIR` ficará igual a `${qt-copy-build-dir}/qt-copy/lib` em alternativa. Você deverá também mudar a sua opção qtdir em função disso. O &make; incremental deverá ainda funcionar neste modo, uma vez que as datas serão preservadas após a cópia. Se usar a opção apply-qt-patches, as atualizações serão aplicadas na pasta de compilação, não na pasta de código. Esta opção é igual a true, por padrão.

use-stable-kde

Não poderá ser sobreposta

Uma vez que o &kdesvn-build; possui suporte para compilar o &kde; 3 e o 4, deverá haver alguma forma de indicar qual a versão compilar. Por padrão, o &kdesvn-build; irá compilar a ramificação principal de desenvolvimento do &kde; (chamada de /trunk). Mas este é o &kde; 4, que ainda não está ainda pronto para ser lançado.

Você pode usar a opção &branch; a nível global ou para cada módulo, para baixar do &kde; 3.5 (ou 3.4, etc.). Contudo, isto não é conveniente porque alguns módulos (como o 'kdesupport') são compartilhados entre o 3.5 e o 4. Além disso, é necessário adicionar muitas opções 'branch' ao arquivo de configuração.

Assim, se você configurar esta opção global como true, o &kdesvn-build; irá baixar automaticamente a versão para o &kde; 3.5 dos módulos, como o 'kdelibs' e o 'qt-copy', em vez de baixar a versão para &kde; 4. Você poderá ainda usar as opções &branch; ou &tag; para um módulo, de modo a substituir a configuração que o &kdesvn-build; escolhe. Desta forma, você poderá optar por baixar o &kde; 3.5 em vez da versão prévia do &kde; 4,.

use-unsermake

Sobrepõe-se à global

Configure esta opção como true para poder usar o programa experimental &unsermake; em vez do &automake; ao rodar o programa 'configure'. Isto poderá levar a algumas reduções sérias no tempo da compilação, principalmente no caso dos sistemas de compilação distribuídos. Esta opção é, por padrão, true (para a maioria dos módulos).

Normalmente, se você usar esta opção, o &kdesvn-build; irá manter automaticamente o &unsermake; atualizado. Isto poderá ser um incômodo, principalmente se você estiver gerenciando você mesmo o &unsermake;. Se este for o caso, você poderá configurar esta opção como self, e o &kdesvn-build; ainda irá usar o &unsermake;, mas não fará nada de especial para mantê-lo atualizado.

## Opções da Linha de Comando e Variáveis de Ambiente

Este programa não usa variáveis de ambiente. Se você precisar definir variáveis de ambiente para o ambiente de compilação ou de instalação, veja a opção set-env.

O programa aceita as seguintes opções da linha de comando:

`--async`

  Ativa o modo assíncrono para atualizar e compilar ao mesmo tempo. Isto é o padrão, e esta opção somente precisa ser especificada se você quiser desabilitá-la na configuração.

`--help`

  Mostra apenas uma ajuda simples deste programa.

`--version`

  Mostra a versão do programa.

`--author`

  Mostra as informações de contato do autor.

`--color`

  Ativa o resultado do programa à cores.

`--nice=valor`

  Configura o valor de &niceness; como valor, durante esta execução. O valor deverá estar entre 0 e 20.

`--no-async`

  Desativa o modo assíncrono de atualização. Ao invés da atualização ser realizada completamente antes da compilação iniciar. Esta opção irá aumentar o tempo de todo o processo, mas se você encontrar erros de IPC ao rodar o &kdesvn-build; tente usar esta opção e submeter um relatório de erro.

`--no-color`

  Desativa o resultado do programa à cores.

`--pretend` (ou `-p`)

  Não faz nada de fato, mas funciona como se você fizesse.

`--quiet` (ou `-q`)

  Não é tão descritivo com o resultado exibido pela compilação. Com esta opção, somente as mensagens básicas são apresentadas.

`--really-quiet`

  Só mostra as mensagens de avisos e erros.

`--verbose`

  Torna-se bastante descritivo com o que está acontecendo e o que o &kdesvn-build; está fazendo.

`--svn-only`

  Efetua apenas a atualização do código.

`--build-only`

  Efetua apenas o processo de compilação.

`--ignore-modules`

  Não inclui os módulos passados no resto da linha de comando no processo de atualização/compilação.

`--no-svn`

  Ignora o passo de contacto do servidor do &subversion;.

`--no-build`

  Salta o processo de compilação.

`--no-install`

  Não instala automaticamente os pacotes, após a sua compilação.

`--debug`

  Ativa o modo de depuração para o programa. Atualmente, isto significa que todo o resultado será enviado para o saída padrão, além de ficar registrado na pasta de registro normalmente. Do mesmo modo, muitas das funções tornar-se-ão mais descritivas sobre o que estão fazendo no modo de depuração.

`--no-rebuild-on-fail`

  Não tenta compilar de novo os módulos que não conseguiram ser compilados do zero. O &kdesvn-build; nunca irá tentar fazer isto num módulo que já se tentou compilar do zero.

`--refresh-build`

  Recria o sistema de compilação e compila a partir do zero.

`--reconfigure`

  Executa o programa 'configure' novamente sem limpar a pasta de compilação.

`--recreate-configure`

  Executa o `make `-f` Makefile.cvs` novamente para criar o programa 'configure' e continua a compilação normalmente. Esta opção implica a `--reconfigure`.

`--resume-from`

  Esta opção é usada para prosseguir com a compilação a partir do módulo indicado, que é o parâmetro seguinte na linha de comando. Esta opção implica a `--no-svn`. Você não deverá indicar os nomes dos outros módulos na linha de comando.

`--rc-file`

  interpreta o próximo parâmetro da linha de comando como o arquivo de onde ler as opções de configuração. O valor padrão deste parâmetro é '~/.kdesvn-buildrc'.

`--run`

  Esta opção interpreta o item a seguir na linha de comando como um programa a executar, fazendo com que o &kdesvn-build; acabe de ler o arquivo de configuração normalmente e depois execute o programa indicado.

  Isto não irá funcionar para iniciar uma linha de comando com o ambiente do &kdesvn-build;, contudo, uma vez que as linhas de comando interativas tipicamente limpam algumas partes das variáveis de ambiente (como a `PATH` e a `KDEDIRS`) na seqüência de inicialização.

`--prefix=</localização/do/kde>`

  Permite-lhe mudar a pasta onde o &kde; será instalado na linha de comando. Esta opção implica a `--reconfigure`.

`--build-system-only`

  Pára após a execução do `make `-f` Makefile.cvs`. O programa 'configure' precisará ainda ser executado, coisa que o &kdesvn-build; irá fazer da próxima vez. Isto permite-lhe preparar todos os programas 'configure' de uma vez, para que você possa ver o `./configure `--help`` de cada módulo e editar as suas opções do 'configure' adequadamente.

`--install`

  Se esta for a única opção da linha de comando, ele irá tentar instalar todos os módulo incluídos em 'successfully-built', exceto o 'qt-copy', que não precisa de instalação. Se as opções da linha de comando forem indicadas após o `--install`, então assumem-se que são módulos para instalar.

`--<nome-da-opção>=`

  Você poderá usar esta opção para sobrepor outra opção no seu arquivo de configuração para todos os módulos. Por exemplo, para sobrepor a opção log-dir, você deverá digitar: ``--log-dir=`/local/da/pasta```.

`--<nome-módulo>,<nome-opção>=`

  Você poderá usar esta opção para sobrepor uma opção do seu arquivo de configuração para um determinado módulo. Por exemplo, para sobrepor a opção use-unsermake do 'kdemultimedia', você deveria digitar: `--kdemultimedia,use-unsermake=false`.

Todas as outras opções da linha de comando assumem-se como sendo módulos para atualizar e compilar. Por favor, não misture a compilação com a instalação.

## Usando o &kdesvn-build;

### Prefácio

Normalmente, a utilização do &kdesvn-build; após ter passado pelo é tão simples como fazer o seguinte, a partir de uma linha de comando:

    &percnt; kdesvn-build

O &kdesvn-build; irá então baixar o código do &kde;, tentará configurá-lo e compilá-lo e, no fim, tentará instalá-lo.

Leia mais para saber como o &kdesvn-build; faz isso, assim como o que você poderá fazer com esta ferramenta.

### Funcionalidades básicas do &kdesvn-build;

#### Suporte para o 'qt-copy'

O &kdesvn-build; tenta manter um suporte excelente para o módulo 'qt-copy' que vem incluído no repositório de &subversion; do &kde;.

O 'qt-copy' é uma cópia do código-fonte da última versão do &Qt;, usada pelo &kde;. Contém também um conjunto de atualizações para otimizações e correções de erros que, opcionalmente, poderão ser aplicadas. Estas atualizações são compatíveis com a biblioteca &Qt;, assim o código produzido com o 'qt-copy' funciona corretamente com o &Qt; normal.

A maior parte das diferenças necessárias para o 'qt-copy' são tratadas automaticamente pelo &kdesvn-build;. Contudo, existem algumas diferenças que você poderá ter que conhecer.

- Normalmente, o valor das &configure-flags; de um módulo é adicionado à configuração global das &configure-flags;. Contudo a opção &configure-flags; do 'qt-copy' irá substituir a configuração global, uma vez que não são linhas de comando equivalentes.

- O &kdesvn-build; irá definir automaticamente algumas variáveis de ambiente extras para compilar o 'qt-copy', que não são normalmente necessárias para o resto do &kde;.

- O 'qt-copy' também tem suporte para um conjunto de atualizações opcionais com algumas correções de erros e otimizações que ainda não entraram no &Qt; oficial. Para ativá-las, configure a opção &apply-qt-patches; como true. Depois de fazer esta alteração, você poderá ter que executar o ``kdesvn-build` `--refresh-build` `qt-copy``.

#### Opções normais adicionadas pelo &kdesvn-build;

Para lhe poupar tempo, o &kdesvn-build; adiciona alguns locais padrão ao seu ambiente:

- O local das bibliotecas do &kde; e do &Qt; é adicionado automaticamente à variável `LD_LIBRARY_PATH`. Isto significa que não irá precisar editar a &libpath; para incluí-los.

- O local dos programas de suporte ao desenvolvimento do &kde; e do &Qt; é adicionado automaticamente à variável `PATH`. Isto significa que não irá precisar editar a &binpath; para incluir.

- O local do pkg-config fornecido com o &kde; é adicionado automaticamente ao `PKG_CONFIG_PATH`. Isto significa que não terá de usar o &set-env; para os incluí-los.

- A configuração do &kdedir; é propagada automaticamente para a variável de ambiente `KDEDIR` durante a compilação. (O `KDEDIRS` não é afetado).

- A configuração do &qtdir; é propagada automaticamente para a variável de ambiente `QTDIR` durante a compilação.

- O &kdesvn-build; irá ajustar automaticamente o ambiente, de acordo com as necessidades, para levar em conta a configuração da opção &use-unsermake;.

#### Mudando a prioridade de compilação do &kdesvn-build;

Os programas poderão ser executados com diferentes níveis de prioridades nos Sistemas Operacionais atuais, incluindo o &Linux; e o &BSD;. Isto permite ao sistema reservar tempo para os diferentes programas, de acordo com a sua importância.

O &kdesvn-build; irá reservar uma prioridade baixa para si próprio, para que o resto dos programas do seu sistema não sejam afetados e possam rodar normalmente. Com esta técnica, o &kdesvn-build; irá usar CPU extra quando estiver disponível.

O &kdesvn-build; irá ainda manter uma prioridade suficientemente alta, para que se execute antes dos processos rotineiros e antes dos programas de doação de CPU, como o Seti@Home.

Para alterar o &kdesvn-build;, de modo a usar um nível de prioridade maior ou menor de forma permanente, então você terá que ajustar a opção &niceness; no arquivo de configuração. A opção &niceness; controla quão legal é o &kdesvn-build; com os outros programas. Em outras palavras, um &niceness; maior, dará ao &kdesvn-build; uma prioridade menor. Assim, para dar ao &kdesvn-build; uma maior prioridade, reduza o &niceness; (e vice-versa). O &niceness; pode ir de 0 (nada legal, prioridade máxima) até 20 (super-legal, prioridade mínima).

Você poderá também mudar temporariamente a prioridade do &kdesvn-build; ao usar a opção de linha de comando &cmd-nice;. O valor da opção é usado da mesma forma que no &niceness;.

É possível para alguns programas executados pelo super-usuário ter um valor de prioridade negativo, com uma prioridade de sistema corresponde ainda maior para alguns programas. A configuração de um valor negativo (ou mesmo 0) do &niceness; para o &kdesvn-build; não é uma boa idéia, uma vez que não irá melhorar muito o tempo de compilação, mas tornará o seu computador muito lento, se ainda precisar usá-lo.

Para executar o &kdesvn-build; com uma prioridade igual a 15 (menor que o normal):

    &percnt; kdesvn-build --nice=15

Ou você poderá editar o arquivo de configuração para tornar a mudança permanente:

    &niceness; 15

#### Instalação como super-usuário

Você poderá ter o &kdesvn-build; executando a instalação com privilégios de super-usuário. Isto pode acontecer no caso da instalação a nível do sistema (não recomendada). Também é útil se você usar uma instalação normal para um único usuário, todavia. Isto acontece porque alguns módulos (especialmente o 'kdebase') instalam programas que, por breves instantes, irão necessitar de permissões elevadas ao serem executados. Eles não conseguirão obter esses níveis de permissões, a menos que tenham sido instalados com as permissões elevadas.

Você poderá simplesmente executar o &kdesvn-build; diretamente como super-usuário, mas isto não é recomendável, uma vez que o programa não foi testado para esse tipo de utilização. Ainda que possa ser seguro executá-lo dessa forma, é melhor evitar executar este programa como super-usuário, sempre que possível.

Para tomar conta disto, o &kdesvn-build; oferece a opção &make-install-prefix;. Você poderá usar esta opção para indicar um comando a usar para efetuar a instalação como outro usuário. A forma recomendada de usar este comando é com o programa &sudo;, que irá então executar o comando de instalação como super-usuário.

Por exemplo, para instalar todos os módulos com o &sudo;, você poderá fazer algo como:

    global
      &make-install-prefix; sudo
      # Outras opções
    end global

Para usar o &make-install-prefix; apenas num módulo, isto irá funcionar:

    module kdemultimedia
      &make-install-prefix; sudo
    end module

#### Mostrando o progresso da compilação de um módulo

Esta funcionalidade está sempre disponível e está ativada automaticamente, sempre que possível. O que isto faz é mostrar o progresso estimado da compilação ao compilar um módulo, para que você saiba desta forma quanto tempo mais irá levar para compilar um módulo.

Para usar esta funcionalidade, a opção &use-unsermake; deverá estar ativa para o módulo. Esta opção está ativada normalmente por padrão, apesar de alguns módulos não suportarem a opção, sendo eles impedidos de usar o &unsermake;. Assim, se você acha que ativou o &unsermake; e ainda assim não vê um relato do progresso de compilação do módulo, é possível que o módulo não suporte o &unsermake;.

### Funcionalidades avançadas

#### Compilar parcialmente um módulo

É possível compilar apenas partes de um único módulo do &kde;. Por exemplo, você pode querer compilar apenas um programa de um módulo. O &kdesvn-build; possui funcionalidades para simplificar isto. Existem várias formas complementares de fazer esta tarefa.

##### Extrair partes de um módulo

Esta será talvez a melhor forma de fazer isto. Quando funciona, lhe poupará tempo de transferência e espaço em disco. O que acontece é que o &kdesvn-build; irá baixar apenas as partes do módulo que indicar. Isto é feito com a opção &checkout-only; para um determinado módulo, que irá indicar uma lista das pastas a baixar.

Se você ainda não souber o que vai transferir de um determinado módulo, poderá ser uma boa idéia navegar pela disposição no &subversion; para um módulo, em primeiro lugar, usando o WebSVN.

Para obter apenas o &kuser; e o &kdat; do 'kdeadmin', você poderá usar o &checkout-only; da seguinte forma:

    module kdeadmin
      &checkout-only; kuser kdat
    end module

As pastas serão compiladas na ordem que forem indicadas na opção. Se uma das pastas necessitar de alguma coisa além do módulo para compilar, então você terá que garantir que ambas se encontram na linha &checkout-only; e que a dependência necessária venha antes da pasta que necessita dela.

Da mesma forma, algumas vezes um aplicativo poderá necessitar de outras pastas e isso pode ser difícil de descobrir. Isto poderá ser solucionado através de tentativa e erro, adicionando constantemente pastas à opção para descobrir qual é a necessária.

Uma nota final sobre esta opção: Se você alterar esta opção deverá usar o ``kdesvn-build` `&cmd-refresh-build;` `módulo`` para garantir que o módulo é configurado de novo convenientemente. Além disso, o &kdesvn-build; nunca irá remover os arquivos existentes, se você retirar o número de pastas da sua opção &checkout-only; ou adicionar a opção a um módulo que já foi extraído.

##### Removendo pastas de uma compilação

Em vez de restringir o que é baixado, é possível transferir tudo mas fazer com que o sistema de compilação deixe de fora algumas pastas ao compilar. Isto pode ser útil se uma pasta estiver sempre invalidando a compilação e for desnecessária para o resto do módulo.

Isto é controlado com a opção &do-not-compile;. Funciona de forma semelhante à opção &checkout-only; descrita acima, e é apenas uma lista das pastas que não deverão ser compiladas.

Da mesma forma que no &checkout-only;, esta opção necessita pelo menos que o programa `configure` seja executado novamente para o módulo, após a alteração. Isto é feito com o comando ``kdesvn-build` `&cmd-reconfigure;` `módulo``.

Para remover a pasta `dcoppython` do processo de compilação do 'kdebindings':

    module kdebindings
      &do-not-compile; dcoppython
    end module

##### Compilando algumas pastas de um módulo completo

Você poderá usar o &inst-apps; para especificar que apenas algumas pastas de um módulo completo serão instaladas (embora o módulo inteiro seja baixado).

Esta opção funciona como uma combinação do &checkout-only; e do &do-not-compile;: ela baixa o módulo inteiro, como o &do-not-compile;, mas compila apenas as pastas que indicar, como o &checkout-only;. Assim, é normalmente melhor usar simplesmente o &checkout-only;.

Os mesmos alertas se aplicam como nas outras duas opções. Assim você terá que reconfigurar o módulo, se você alterar o valor do &inst-apps;.

#### Usando o &unsermake;

O &unsermake; é um aplicativo desenhado para se associar ao sistema de compilação do &kde; e melhorar o processo de compilação, substituindo algumas ferramentas usadas normalmente (incluindo o &automake; e o &make;). É especialmente útil para aqueles que efetuam compilações distribuídas, uma vez que é muito mais rápido que o processo normal de compilação nesta situação. Contudo, mesmo para a compilação num único computador, o &unsermake; é mais rápido que a concorrência.

Além disso, o &unsermake; inclui o suporte para estimar o progresso do procedimento de compilação atual. O &kdesvn-build; tira partido disso para oferecer uma indicação do progresso da compilação durante o processo. Veja também o .

O &kdesvn-build; oferece o suporte para usar o &unsermake; automaticamente. O &kdesvn-build; irá usar o &unsermake; por padrão, quando for possível usá-lo num determinado módulo.

Para desativar o suporte do &unsermake; em todos os módulos, faça o seguinte:

    global
      use-unsermake false
    end global

Para ativar o &unsermake; para um único módulo, mesmo que esteja desativado a nível global, faça o seguinte:

    module nome-módulo
      use-unsermake true

      # as outras opções vão aqui...
    end module

O &kdesvn-build; irá atualizar automaticamente ou extrair o &unsermake;, enquanto efetua as outras atualizações. Se você optar por gerenciar você mesmo o &unsermake;, então é possível fazê-lo, configurando o valor do &use-unsermake; como self, em vez de true.

Quando isso terminar, o &kdesvn-build; ainda irá tentar usar o &unsermake;, mas não irá efetuar as atualizações. Você poderá tanto alterar o &binpath; para apontar para a pasta correta do &unsermake;, como extrair e atualizar você mesmo o &unsermake; no seu módulo (atualmente em kdenonbeta/unsermake).

#### Suporte de marcas e ramificações do &kdesvn-build;

##### O que são ramificações e marcas?

O supo&subversion;rta o gerenciamento do histórico do código do &kde;. O &kde; usa esse suporte para criar ramificações ('branches') para desenvolvimento e para marcar o repositório com marcas ('tags'), sempre que lança uma nova versão.

Por exemplo, os programadores do &kmail; poderão estar trabalhando numa nova funcionalidade, numa ramificação diferente, para evitar corromper a versão que está em uso pela maioria dos programadores. Esta ramificação tem desenvolvimentos em curso nela, mesmo quando a ramificação principal (chamada de /trunk) também possua desenvolvimentos em curso nela.

Uma marca, por outro lado, é uma imagem do repositório de código numa determinada posição no tempo. Isto é usado pela equipe de administração do &kde; para marcar uma versão do código adequada para lançamento, permitindo ainda aos programadores trabalharem no código.

No &subversion;, não existem diferenças entre ramificações, marcas ou o 'trunk' no código. É apenas uma convenção usada pelos programadores. Isso torna difícil suportar convenientemente as ramificações e marcas no &kdesvn-build;. Contudo, existem algumas coisas que poderão ser feitas.

##### Como usar as ramificações e marcas

O suporte para ramificações e marcas é tratado por um conjunto de opções, que vão desde um simples pedido de uma versão até um &url; específico de transferência, para os usuários mais avançados.

O método mais simples é usar as opções &branch; e &tag;. Você poderá usar a opção em conjunto com o nome da marca ou ramificação de um módulo, para que o &kdesvn-build; determine o local apropriado, dentro do repositório do &kde;, de onde deve baixar. Na maioria dos módulos do &kde;, isto funciona muito bem.

Para baixar o 'kdelibs' do &kde; 3.5 (que é simplesmente conhecido pela ramificação '3.5'):

    module kdelibs
      branch 3.5
      # outras opções...
    end module

Ou, para baixar o 'kdemultimedia' como foi lançado no &kde; 3.4.3:

    module kdemultimedia
      tag 3.4.3
      # outras opções...
    end module

Você poderá definir aqui um valor global para o 'branch'. Mas, se o fizer, não se esqueça de indicar uma ramificação diferente para os módulos que não devem usar a ramificação global!

##### Opções avançadas de suporte a ramificações

O &kdesvn-build; suporta duas opções para as situações em que o &branch; e o &tag; adivinham o local de forma incorreta: o &module-base-path; e o &override-url;.

- O &module-base-path; é usado para ajudar o &kdesvn-build; a preencher a parte faltante da localização de um módulo. No repositório do &kde;, todos os locais possuem o formato `raizSvn/caminho-módulo-base/nome-módulo`. Normalmente, o &kdesvn-build; pode descobrir a parte intermediária apropriada por si só. Quando não conseguir, você poderá usar o 'caminho-módulo-base' ou &module-base-path; da seguinte forma:

      module qt-copy
        # a ramificação não funciona aqui ainda
        module-base-path branches/qt/3.3
      end module

  Isto deverá fazer com que o &kdesvn-build; baixe o 'qt-copy' de (neste exemplo) `svn://anonsvn.kde.org/home/kde/branches/qt/3.3/qt-copy`

- A opção &override-url;, por outro lado, necessita que você indique o local exato de onde baixar. Contudo, isto permite-lhe transferir dos locais onde o &kdesvn-build; não terá chances de adivinhar.

      module qt-copy
        # Indique o local exato de onde obter.
        override-url svn://anonsvn.kde.org/home/kde/branches/qt/3.3/qt-copy
      end module

  O &kdesvn-build; não irá mexer ou corrigir o valor que indicar no &override-url;, por isso, se mudar a sua configuração do &svn-server;, também terá que atualizar isto.

#### Como o &kdesvn-build; tenta garantir uma compilação com sucesso

##### Recompilações automáticas

Devido a várias questões com o sistema de compilação do &kde;, algumas das quais são mitigadas ao usar o &unsermake;, o &kdesvn-build; irá efetuar automaticamente uma série de passos para tentar automaticamente obter um módulo para compilar quando ele falhar.

1. Na primeira tentativa falhada, o &kdesvn-build; irá simplesmente executar de novo o `make`. Acredite ou não, mas isto de vez em quando funciona de fato, e é rápido ao falhar se não funcionar novamente.

2. Em caso de uma segunda falha, o &kdesvn-build; irá tentar configurar de novo o módulo e compilá-lo outra vez. Isto resolve normalmente situações em que um arquivo do sistema de compilações, que necessita de ser configurado de novo, não foi configurado automaticamente pelo sistema de compilação.

   A pasta de compilação do módulo é deixada intacta nesse passo, exceto no caso de nova configuração; essa situação irá também falhar depressa se a compilação não puder ser efetuada.

3. Se o módulo continuar a não compilar, o &kdesvn-build; irá desistir e passar ao próximo módulo. Todavia, existem ainda algumas coisas que você poderá fazer para tentar fazer o módulo compilar manualmente.

O &kdesvn-build; irá detectar a maioria dos casos onde o sistema de compilação precisa de ser configurado de novo, tentando nesse caso executar o 'configure' de novo.

Da mesma forma, se o &kdesvn-build; estiver compilando o módulo pela primeira vez, todos esses passos são ignorados, uma vez que a nova compilação do zero não irá falhar normalmente, exceto no caso de um erro verdadeiro.

##### Recompilando manualmente um módulo

Se você tiver feito alterações em alguma opção de um módulo, ou se o código-fonte do módulo mudar de uma forma que o &kdesvn-build; não reconheça, você poderá ter que recompilar o módulo manualmente.

Você poderá se isto executando simplesmente o ``kdesvn-build` `--refresh-build` `módulo``.

Se você quiser que o &kdesvn-build; recompile de forma automática o módulo, durante a próxima atualização normal, você poderá criar um arquivo especial. Cada módulo possui uma pasta de compilação. Se você criar um arquivo chamado `.refresh-me` na pasta de compilação de um módulo, o &kdesvn-build; irá reconstruir o módulo da próxima vez que o processo de compilação rodar, mesmo que fosse executar normalmente a compilação incremental.

Por padrão, a pasta de compilação é a `~/kdesvn/build/módulo/`. Se você mudar a opção &build-dir;, então use essa em vez da `~/kdesvn/build`.

Recompilar usando o `.refresh-me` para o módulo arts:

    % touch ~/kdesvn/build/arts
    % kdesvn-build

##### Controlando o comportamento de recompilação

Você poderá não querer que o &kdesvn-build; tente sempre reconstruir um módulo. Então poderá desativar, a título permanente, esse comportamento, alterando a opção &no-rebuild-on-fail; para o valor true.

Você poderá desativar temporariamente este comportamento (para um comando) se usar a opção &cmd-no-rebuild-on-fail; da linha de comando.

    % kdesvn-build --no-rebuild-on-fail

#### Mudando a configuração das variáveis de ambiente

O &kdesvn-build; não lê o ambiente de quem o chama, como a maior parte dos programas. Em vez disso, usa a configuração que ele obtém do arquivo de configuração para construir o ambiente. Isto é feito principalmente para garantir que a compilação possa ser repetida. Em outras palavras, o &kdesvn-build; poderá compilar um módulo, mesmo que você tenha se esquecido como configurou as suas variáveis de ambiente na linha de comando onde executou o &kdesvn-build;.

Contudo, você poderá desejar alterar a configuração das variáveis de ambiente para as quais o &kdesvn-build; não possui uma opção direta. Isto é possível com a opção &set-env;.

Ao contrário da maioria das opções, ela poderá ser definida mais de uma vez e aceita dois itens separados por um espaço. O primeiro item é o nome da variável de ambiente a definir e o resto da linha é o valor.

Configura a ``DISTRO`=BSD` para todos os módulos:

    global
      set-env DISTRO BSD
    end global

#### Prosseguir com as compilações

##### Prosseguir uma compilação falhada ou cancelada

Você poderá indicar ao &kdesvn-build; para começar a compilar a partir de um módulo diferente daquele onde iria prosseguir. Isto poderá ser útil quando falhou um conjunto de módulos ou se tiver cancelado a execução de uma compilação no meio. Você poderá controlar isto com a opção &cmd-resume-from;.

Usar o &cmd-resume-from;, irá pular a atualização do código-fonte.

Prosseguir a compilação começando no 'kdebase':

    % kdesvn-build --resume-from=kdebase

##### Ignorando os módulos numa compilação

Como acontece quando deseja prosseguir com a compilação de um módulo, você poderá optar em alternativa por atualizar e compilar tudo normalmente, só que ignorando um conjunto de módulos.

Você poderá fazer isso com a opção &cmd-ignore-modules;. Esta opção diz ao &kdesvn-build; para ignorar todos os módulos da linha de comando, ao efetuar a atualização e a compilação.

Ignorar o extragear/multimedia e o kdenonbeta numa execução completa:

    % kdesvn-build --ignore-modules extragear/multimedia kdenonbeta

#### Mudando as opções na linha de comando

##### Modificando as opções globais

Você poderá alterar a configuração das opções lidas do arquivo de configuração diretamente a partir da linha de comando. Esta alteração irá substituir a configuração do arquivo, mas é apenas temporária. Só terá efeito enquanto ainda estiver presente na linha de comando.

O &kdesvn-build; permite-lhe alterar as opções com nome do tipo nome-opção passando um argumento na linha de comando com o formato ``--nome-opção=valor``. O &kdesvn-build; irá reconhecer se não souber qual a opção, e irá procurar o nome na sua lista de nomes de opções. Se não reconhecer o nome, ele irá avisá-lo, caso contrário irá recordar o valor que definiu e substituir o valor do arquivo de configuração.

Configurar o &source-dir; como `/dev/null` para fins de teste:

    % kdesvn-build --pretend --source-dir=/dev/null

Desativar o &unsermake; na linha de comando. O `--refresh-build` é usado para que as modificações no &unsermake; tenham efeito.

    % kdesvn-build --pretend --refresh-build --use-unsermake=false

##### Mudando as opções do módulo

Também é possível alterar as opções apenas para um módulo específico. A sintaxe é semelhante: --módulo,nome-opção=valor.

Esta alteração substitui qualquer opção duplicada do módulo encontrado no arquivo de configuração e só se aplica enquanto a opção for passada na linha de comando.

Usando uma pasta de compilação diferente para o módulo 'kdeedu':

    % kdesvn-build --kdeedu,build-dir=temp-build

### Funcionalidades para os programadores do &kde;

#### Verificações do Agente do &ssh;

O &kdesvn-build; poderá certificar-se de que os programadores do &kde; que usem o &ssh; para acessar ao repositório de código do &kde; não se esqueçam acidentalmente da ferramenta &ssh;-Agent ligada. Isto poderá fazer com que o &kdesvn-build; fique eternamente à espera que o programador insira a sua senha de &ssh;, por isso e por padrão, o &kdesvn-build; irá verificar se o Agente está rodando antes de efetuar as atualizações do código.

Isto só é feito para os programadores do &kde; que usam o &ssh;. Isto acontece porque não é necessária qualquer senha para a atualização e extração de código anônima do repositório. O &subversion; irá lidar com as senhas para o segundo protocolo possível dos programadores do &kde;, o HTTPS.

Você poderá querer desativar a verificação do Agente do &ssh;, no caso das situações em que o &kdesvn-build; não detecte bem a presença de um agente. Para desativar a verificação do agente, configure a opção `disable-agent-check` como true.

Desativando a verificação do agente do &ssh;:

    global
      disable-agent-check true
    end global

### Outras funcionalidades do &kdesvn-build;

#### Mudando a quantidade de mensagens do resultado do &kdesvn-build;

O &kdesvn-build; possui várias opções para controlar a quantidade de dados de saída que o programa gera. Em qualquer caso, os erros serão sempre apresentados.

- A opção `--quiet` (o seu formato curto é o `-q`) faz com que o &kdesvn-build; seja majoritariamente silencioso. Só as mensagens importantes, avisos ou erros serão apresentados. Quando estiver disponível, a informação de progresso é apresentada.

- A opção `--really-quiet` (sem formato curto) faz com que o &kdesvn-build; mostre apenas os avisos importantes ou os erros, enquanto estiver em execução.

- A opção `--verbose` (o formato curto é o `-v`) faz com que o &kdesvn-build; seja muito detalhado nos seus resultados.

- A opção `--debug` serve apenas para fins de depuração, uma vez que faz com que o &kdesvn-build; atue como se o `--verbose` estivesse ativo, fazendo com que os comandos sejam também apresentados no terminal e mostrando a informação de depuração para várias funções.

#### Resultado colorido

Ao ser executado a partir do &konsole; ou de um terminal diferente, o &kdesvn-build; irá mostrar normalmente o texto a cores.

Você poderá desativar isto com a opção `--no-color` na linha de comando ou configurando a opção &colorful-output; no arquivo de configuração como false.

Desativando as mensagens a cores no arquivo de configuração:

    global
      colorful-output false
    end global

#### Envio por e-mail dos relatórios de erros da compilação

O &kdesvn-build; poderá enviar um relatório por e-mail para um determinado endereço à sua escolha, quando um módulo não conseguir compilar por alguma razão. A forma como funciona é através da indicação de um endereço de e-mail de onde o &kdesvn-build; irá enviar os dados e um endereço de e-mail para notificar quando ocorrer algum erro.

O &kdesvn-build; irá então, no fim de uma execução completa, construir uma mensagem de e-mail se existirem alguns módulos que não conseguiram ser compilados. O e-mail irá conter um registro de erros abreviado para cada módulo. Só é enviada uma mensagem de e-mail para uma determinada execução, mesmo que falhe a compilação de 15 módulos.

Esta funcionalidade não está ativada por padrão. Para ativá-la, você terá que definir tanto as opções &email-address; e &email-on-compile-error;. O `email-address` controla o endereço de onde o &kdesvn-build; envia os dados e o `email-on-compile-error` controla para onde enviar a mensagem.

O &kdesvn-build; usa o módulo-padrão do Perl Mail::Mailer para enviar a mensagem. Ele vem incluído com o Perl 5.8 e é instalável com o Perl 5.6. O Mail::Mailer suporta o Sendmail (incluindo os clientes de e-mail compatíveis com o Sendmail), o transporte de SMTP nativo e o qmail.

Enviando um e-mail de envio@exemplo.com para recepcao@exemplo.com em caso de erro na compilação:

    global
      email-address          envio@exemplo.com    # O endereço De: para qualquer e-mail do kdesvn-build
      email-on-compile-error recepcao@exemplo.com    # O endereço Para: do e-mail de erros da compilação
    end global

#### Removendo as pastas desnecessárias após uma compilação

Você está com falta de espaço em disco mas deseja ainda fazer uma extração atualizada do &kde;? O &kdesvn-build; poderá ajudar a reduzir o uso do seu disco ao compilar o &kde; a partir do &subversion;.

Tenha em mente que a compilação do &kde; ocupa bastante espaço. Existem muitos componentes grandes em termos de espaço ao usar o &kdesvn-build;:

1. A extração de código atual poderá levar bastante espaço. Os módulos padrão possuem cerca de 1,6 gigabytes de espaço em disco. Você poderá reduzir esta quantidade, se tiver certeza que só vai compilar os módulos que deseja de fato. O &kdesvn-build; não irá remover o código-fonte do disco, mesmo que remova o item do arquivo de configuração, assim certifique-se de que são apagados os módulos extraídos e não usados da pasta de código. Lembre-se que os arquivos de código são obtidos da Internet, assim você não deverá removê-los se for usar estes arquivos de fato, pelo menos até acabar de usar o &kdesvn-build;.

   Da mesma forma, se você já tiver um &Qt; instalado pela sua distribuição (e é bastante possível que isso aconteça), provavelmente não irá necessitar instalar o módulo 'qt-copy'. Isso irá poupar cerca de 200 MB do código no disco.

   Uma coisa a observar é que, devido à forma como o &subversion; funciona: existem de fato dois arquivos no disco para cada arquivo extraído do repositório. O &kdesvn-build; não está apto por enquanto a minimizar o tamanho do código, quando ele não estiver sendo usado.

2. O &kdesvn-build; irá criar uma pasta de compilação separada, para onde irá compilar o código-fonte. Algumas vezes o &kdesvn-build; terá que copiar uma pasta de código para criar uma pasta de compilação falsa. Quando isso acontecer, são usadas as ligações simbólicas, caracterizadas por poupar espaço, assim isso não deverá ser um problema a nível de espaço em disco. A pasta de compilação será tipicamente muito maior que a pasta de código de um módulo. Por exemplo, a pasta de compilação do 'kdebase' ocupa cerca de 455 megabytes, enquanto o código do 'kdebase' ocupa apenas cerca de 195 megabytes.

   Felizmente, a pasta de compilação não é necessária após um módulo ter sido compilado e instalado com sucesso. O &kdesvn-build; poderá remover automaticamente a pasta de compilação após a instalação de um módulo; veja os exemplos abaixo para mais informações. Lembre-se que a utilização deste passo tornará impossível ao &kdesvn-build; efetuar as compilações incrementais que poupam tempo.

3. Finalmente, existe o espaço em disco necessário para a própria instalação do &kde;, que não se executa a partir da pasta de compilação. Este espaço é normalmente menor que o da pasta de compilação. É mais difícil ter os valores exatos, de qualquer forma.

Como reduz os requisitos de espaço do &kde;? Uma forma é usar as opções de compilação adequadas, para otimizar a redução de espaço em vez da velocidade. Outra forma, que poderá ser bem eficaz, é remover a informação de depuração da sua compilação do &kde;.

Você deverá saber bem o que está fazendo, antes de decidir remover a informação de depuração. A execução de aplicativos muito atuais significa que está rodando programas que, potencialmente, poderão ter tendência a travar, algo que não acontece numa versão estável. Se você estiver rodando 'software' sem informações de depuração, poderá ser bastante difícil criar um bom relatório de erros para que o seu erro seja resolvido; assim, é possível que tenha que reativar a informação de depuração do aplicativo afetado e recompilá-lo para ajudar um programador a resolver o problema. Então, remova a informação de depuração por sua conta e risco!

A remoção da pasta de compilação, após a instalação de um módulo. A pasta do código é ainda mantida e a depuração fica ativa:

    global
      configure-flags      --enable-debug
      remove-after-install builddir        # Remover a pasta de compilação após a instalação
    end global

A remoção da pasta de compilação após a instalação, sem informações de depuração e com otimizações do tamanho.

    global
      cxxflags             -Os             # Otimizar o tamanho
      configure-flags      --disable-debug
      remove-after-install builddir        # Remover a pasta de compilação após a instalação
    end global

## , o s&cmake;istema de compilação do &kde; 4

### Introdução ao &cmake;

Em Março de 2006, o programa &cmake; ultrapassou os vários adversários e foi selecionado para ser o sistema de compilação do &kde; 4, substituindo o sistema baseado nas 'autotools' que o &kde; tem usado desde o início.

Está disponível uma página de introdução ao &cmake; no TechBase do &kde;. Basicamente, em vez de rodar o ``make` `-f` `Makefile.cvs``, depois o `configure`, depois o &unsermake; (ou o &make;), basta simplesmente rodar o &cmake; e depois o &make;.

O &kdesvn-build; possui suporte para o &cmake;. Algumas funcionalidades do &kdesvn-build; são realmente funcionalidades do sistema de compilação subjacente, incluindo o inst-apps, o configure-flags e o do-not-compile. Quando estiverem disponíveis funcionalidades equivalentes, serão disponibilizadas. Por exemplo, a equivalente da opção 'configure-flags' é a cmake-options, e a opção do-not-compile também é suportada para o &cmake; desde a versão 1.6.3 do &kdesvn-build;.

Contudo, algumas opções (como a inst-apps) não possuem equivalente direto estando assim desativadas. Quando se arranjar uma forma de implementá-las com o &cmake;, isto será feito e estas opções então voltarão a ser ativadas. Contudo, de resto funciona quase tudo da mesma forma.

## Créditos e Licenças

&underFDL;