# Manual do 'Script' &kdesvn-build;

Michael
Pyne

    michael.pyne@kdemail.net

Carlos
Woelz

    carloswoelz@imap-mail.com

José
Pires

    jncp@netcabo.pt

Tradução
2006
Michael Pyne
2005
Carlos Woelz
&FDLNotice;
2006-03-28
1.1

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

KDE
kdesdk
SVN
Subversion
Desenvolvimento KDE

## Introdução

O &kdesvn-build; é um programa que ajuda os utilizadores a instalar o &kde; a partir do seu repositório de código em &svn;.

Aqui será documentado a sintaxe das opções do &rcfile; do &kdesvn-build;, as suas opções da linha de comandos, as funcionalidades e uma introdução a todos os passos necessários para compilar o &kde; a partir do código, incluindo os passos que deverá efectuar ao usar as outras ferramentas ou, por outras palavras, os passos que não são efectuados automaticamente pelo programa &kdesvn-build;.

## Começar

Neste capítulo, será apresentada a forma de utilização do &kdesvn-build; para obter os módulos do repositório do &kde; e os compilar. Será dada também uma explicação básica da estrutura de &svn; do &kde; e os passos que terá de efectuar antes de executar o programa.

Todos os tópicos presentes neste capítulo são cobertos com ainda mais detalhe na secção Guia de Compilação do Código do &kde; Passo-a-Passo, na Página Web da Equipa de Qualidade do &kde;. Se estiver a compilar o &kde; pela primeira vez, é uma boa ideia lê-lo ou consultá-lo como fonte de referência. Irá encontrar informações detalhada 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;.

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

#### Configurar uma conta nova do utilizador

Recomenda-se que transfira e compile o &kde; com uma conta de utilizador. Se já tiver os pacotes do &kde; instalados, a melhor opção será criar um utilizador diferente (dedicado) para compilar e executar o novo &kde;. A vantagem de compilar o &kde; com um utilizador dedicado é que não poderá corromper o sistema de base e terá sempre uma forma de trabalhar confortavelmente quando as coisas correrem mal.

Mais tarde, poderá fazer uma instalação como 'root' se o desejar. Este documento não cobre uma instalação como 'root'. Se estiver a efectuar uma instalação a nível do sistema, provavelmente já deverá saber o que está a fazer. Caso contrário, então poderá querer consultar a documentação ou as páginas de ajuda da sua distribuição, para saber como preparar e usar a instalação do sistema correctamente.

#### Garanta 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), deverá instalar as ferramentas de desenvolvimento e bibliotecas necessárias para o &kde;. A lista completa dos requisitos está na página Requisitos de Compilação do &kde;.

Aqui está uma lista das coisas que irá necessitar:

- Automake versão 1.7 ou posterior (apenas no KDE 3)

- Autoconf versão 2.57 ou posterior (apenas no KDE 3)

- O CMake 2.4.0 ou posterior. Algumas imagens da versão 2.3 poderão compilar também o KDE 4; veja por favor a página do Wiki de Introdução ao CMake. (Apenas no KDE 4)

- O programa do cliente de &svn;, incluindo o suporte para HTTP Seguro (HTTPS). Para garantir o suporte necessário, poderá executar o ``svn `--version```. Se o módulo 'ra_dav' disser que lida com o esquema HTTPS, então deverá ser tudo.

- O compilador 'gcc', com suporte para C++. A versão 3.3 ou 3.4 funciona optimamente neste ponto.

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

Uma excepção é a biblioteca &Qt;. O &kdesvn-build; irá instalar normalmente uma cópia do &Qt;, quer já o tenha instalado quer não, como tal não é necessário tê-la. Se não quiser usar a cópia do &Qt;, terá de fazer o seguinte:

- Certifique-se que remove o módulo 'qt-copy' do seu &rcfile;, dado que não irá necessitar dele e, se o tiver, só vai adicionar mais tempo à sua compilação.

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

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

Alguns destes pacotes estão divididos em bibliotecas, programas ou utilitários e pacotes de desenvolvimento. Irá necessitar, 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, dado que cada módulo tem os seus próprio requisitos. O Guia de Compilação do Código do &kde; Passo-a-Passo 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

Poderá já ter uma versão do programa &kdesvn-build; instalada no sue sistema. Contudo, se não o tiver, poderá obtê-lo em &homepage; ou podê-lo-á encontrar no seu local original, no repositório de código do &kde;.

1. Para obter o &kdesvn-build; a partir de &homepage;, basta ir a &homepage; e transferir a versão mais recente. A versão está dentro de um um pacote TAR comprimido, o qual poderá extrair com o &ark; ou o `tar`. O conteúdo do pacote inclui o programa &kdesvn-build; actual e um ficheiro de configuração de exemplo (`kdesvn-buildrc-sample`).

2. Ou 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;. Poderá carregar no item `kdesvn-build`, o qual lhe mostrará uma página onde poderá obter a última versão. Faça-o e grave-o num local conveniente no seu disco rígido. Faça mesmo para o `kdesvn-buildrc-sample` se necessitar.

Não interessando a técnica que usar, deverá garantir que o ficheiro `kdesvn-build` é executável. Por conveniência, deverá garantir que está numa pasta definida na variável de ambiente `PATH`, caso contrário, poderá obter mensagens que indiquem que o comando não foi encontrado.

##### Preparar o ficheiro de configuração

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

O &rcfile; dever-se-á chamar `.kdesvn-buildrc`. Este ficheiro deverá ser instalado na pasta pessoal (~/), e contém todos os dados de configuração necessários para o programa correr, 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 por omissão são oferecidos pelo ficheiro `kdesvn-buildrc-sample`. que poderá copiar como `kdesvn-buildrc` e editá-lo de seguida.

Poderá encontrar mais informações sobre a sintaxe do &rcfile; em e em .

### Definir os Dados de Configuração

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

É possível usar ficheiros de configuração diferentes para o &kdesvn-build;, que estão descritos em . Se necessitar de usar várias configurações, veja por favor essa secção. Aqui, assumir-se-á que a configuração está guardada em `~/.kdesvn-buildrc`.

A forma mais simples de prosseguir é usar o ficheiro `kdesvn-buildrc-sample` como modelo, definir as opções globais e os módulos que deseja compilar.

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

- binpath, para mudar a lista de pastas que serão pesquisadas à procura de comandos. Este é o mesmo valor que a `PATH` na linha de comandos.

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

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

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

Após a secção global, existe uma lista dos módulos a compilar, delimitada por linhas 'module' ... 'end module'. Verifique se os módulos indicados são, de facto, os módulos que pretende compilar. As opções por omissão do ficheiro `kdesvn-buildrc-sample` deverão ser suficientes para obter uma instalação relativamente completa do &kde;. Grave o resultado como `.kdesvn-buildrc` na sua pasta pessoal.

Se desejar afinar o seu ficheiro `.kdesvn-buildrc`, consulte o para obter informação mais detalhada sobre todas as opções de configuração.

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

Agora está pronto para executar o programa. A partir de uma janela de termina, autentique-se com o utilizador que usa para compilar o &kde; e execute o programa:

    &percnt;su - utilizador
    &percnt;kdesvn-build

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

O &kdesvn-build; regista o resultado de todos os comandos que executa. Por omissão, os ficheiros de registo 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 ficheiro, irá ver o erro que fez com que a compilação falhasse para esse módulo. Se o ficheiro disser (no fim) que lhe faltam alguns pacotes, tente instalar o pacote (incluindo os pacotes -dev apropriados) antes de tentar compilar esse módulo 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.

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 registo do &kdesvn-build;, vá a .

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

Assumindo que está a usar um utilizador dedicado para compilar o &kde; e já tem uma versão do &kde; instalada, a execução do seu &kde; novo poderá ter os seus truques, dado que o &kde; novo terá de ter precedência sobre o antigo. Mude as variáveis de ambiente para garantir que isso acontece.

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

O ficheiro `.bash_profile` é o ficheiro de configuração do utilizador na linha de comandos bash, que é usada por muitas distribuições de &Linux;. Se usar uma linha de comandos diferente, então poderá ter de ajustar os exemplos dados nesta secção, para a sua linha de comandos em particular.

Abra ou crie o ficheiro `.bash_profile` na pasta pessoal com o seu editor favorito e adicione ao fim do ficheiro. Se estiver a compilar o módulo 'qt-copy' (que, por omissão, é compilado), adicione sim em alternativa:

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

    # Actuar correctamente se a LD_LIBRARY_PATH não estiver já 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 a compilar o 'qt-copy' (e estiver a usar o &Qt; do seu sistema, em alternativa), adicione o seguinte:

    KDEDIR=(local da kdedir)  # Como por exemplo ~/kde por omissão.
    KDEDIRS=$KDEDIR
    PATH=$KDEDIR/bin:$QTDIR/bin:$PATH
    # Actuar correctamente se a LD_LIBRARY_PATH não estiver já 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 não estiver a usar um utilizador dedicado, defina um novo $`KDEHOME` para o seu novo ambiente no seu ficheiro `.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 aplicações da sua distribuição, poderá ter de definir o 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

#### Iniciar o &kde;

Agora que ajustou a sua configuração do ambiente para usar o &kde; correcto, é importante garantir que é usado o programa `startkde` correcto, também.

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

    exec ${KDEDIR}/bin/startkde

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

Agora inicie o seu &kde; novo: 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 a Consola Virtual 1 a 12. Isto permite-lhe executar mais que um ambiente gráfico ao mesmo tmpo. Os primeiros seis são terminais de texto e os seis seguintes são gráficos.

Se, quando iniciar o seu computador, lhe aparecer o gestor gráfico de autenticação, poderá usar o novo ambiente do &kde;, mesmo que não apareça como uma opção. A maioria dos gestores de autenticação, incluindo o &kdm;, têm uma opção para usar uma "Sessão Personalizada" quando se ligar. Com esta opção,a sua configuração de sessões é carregada do ficheiro `.xsession` da sua pasta pessoal. Se já tiver modificado este ficheiro como descrito acima, esta opção deverá carregar a sua nova instalação do &kde;.

Caso contrário, existe algo que poderá tentar que normalmente funciona: Carregue em &Ctrl;&Alt;F2, para que lhe apareça um terminal de texto. Ligue-se com o utilizador dedicado e escreva:

    startx -- :1

Poderá executar o &kde; a partir do código e o &kde; antigo ao mesmo tempo! Ligue-se com o seu utilizador normal e inicie o ambiente de trabalho do &kde; estável. Carregue em &Ctrl;&Alt;F2 (ou F1, F3, etc..), e verá um terminal de texto. Ligue-se com o utilizador dedicado ao &svn; do &kde; e escreva:

    startx -- :1

Poderá voltar ao ambiente de trabalho do &kde; do seu utilizador normal se carregar na tecla de atalho do ambiente já em execução. Este é normalmente o &Ctrl;&Alt;F7, sendo que poderá também necessitar de usar o F6 ou o F8 em alternativa. Para voltar ao seu &kde; compilado pelo &kdesvn-build;, irá usar a mesma sequência, exceptuando o facto da tecla de função seguinte. Por exemplo, se precisar de introduzir o &Ctrl;&Alt;F7 para mudar para o seu &kde; normal, poderá ter de introduzir &Ctrl;&Alt;F8 para voltar ao seu &kde; do &kdesvn-build;.

## Funcionalidades do Programa

### Introdução às Funcionalidades

As funcionalidades do &kdesvn-build; incluem:

- Para os programadores: Suporta a compilação da documentação da API de um determinado módulo.

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

- O &kdesvn-build; pode, com a assistência da página Web do kdesvn-build, permitir extracções rápidas de alguns módulos. Se o módulo que estiver a extrair já tiver um pacote equivalente na página Web, então o 'kdesvn-build' irá transferir essa imagem e prepará-la para o seu computador.

  Isto é mais rápido para si, e ajuda a libertar alguma carga nos servidores anónimos de Subversion do kde.org.

- Tem um suporte excelente para o módulo 'qt-copy', incluindo a aplicação opcional de actualizações ('patches') para correcções e optimizações no módulo 'qt-copy'.

- O &kdesvn-build; tem mensagens de resultado a cores.

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

- Suporta a definição de opções por omissã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 normais, como for apropriado, para lhe poupar trabalho e alguns erros possíveis, definindo-as você mesmo.

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

- Para os programadores: Ele recordá-lo-á se usar o svn+ssh:// mas o ssh-agent não estiver a correr, dado que isso irá levar a pedidos de senha repetidos do ssh.

- Pode enviar relatórios por e-mail dos erros a um dado utilizador.

- 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 (mesmo por módulo).

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

- O &kdesvn-build; executa-se com prioridade reduzida, por omissão, para lhe permitir usar à mesma o seu computador, enquanto o &kdesvn-build; estiver a funcionar.

- Tem suporte para usar as marcas e ramificações do &svn; 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 dado módulo. Pode até ignorar alguns módulos temporariamente para uma dada compilação.

- O &kdesvn-build; também suporta o uso da sequência ~/ para se referir à sua pasta pessoal no &rcfile;.

- Obtém ou actualiza automaticamente os módulos do &svn;, à medida das necessidades.

- O &kdesvn-build; pode efectuar rapidamente uma compilação parcial de um módulo, directamente a partir da linha de comandos, quando só necessitar de actualizar parte de um módulo.

- O &kdesvn-build; irá obter automaticamente e criar a pasta `/admin` necessária, se não tiver sido obtida do &svn; da primeira vez, por alguma razão.

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

- 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.

- Poderá retomar um processo de compilação de um determinado módulo.

- Vem incorporado com um conjunto seguro de opções predefinidas, apropriadas para compilar uma instalação mono-utilizador de base do &kde; a partir do repositório de &svn; anónimo.

- Vem com suporte para o &unsermake;.

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

      qtdir ~/kdesvn/build/qt-copy

- Pastas configuráveis para compilação, para o código-fonte e para registos.

- Configura automaticamente um sistema de compilação com uma pasta de compilação diferente da pasta de código, para manter impecável a pasta de código. A única excepção é o qt-copy, que não está desenhado para ser compilado dessa forma (a menos que queira testar o truque do Qt com uma pasta de compilação separada).

- Poderá indicar as opções globais a aplicar a todos os módulos a obter, assim como poderá indicar opções para se aplicar aos módulos individuais.

- Dado que as ferramentas 'auto*' normalmente perdem a sincronização com as modificações na árvore de código, poderá forçar uma nova compilação de um módulo, se criar um ficheiro 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`.

- 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`.

- Registo dos comandos. Os ficheiros de registo são datados e numerados, para que 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 registo mais recente na pasta respectiva.

- Se estiver a usar uma compilação de utilizador do &kde;, em vez de uma instalação do sistema (para a qual necessita de ser o 'root' para instalar), poderá usar o programa para o instalar por si. Não foi ainda validado o código e este faz uma utilização ampla da chamada `system()`, como tal, não é recomendado executá-lo como 'root' nesta altura.

- Poderá usar o make-install-prefix para anteceder o comando 'make install' com um comando separado, o que poderá ser útil para o 'sudo'.

- Poderá usar a opção apidox para compilar e instalar automaticamente a documentação da API para alguns módulos.

- Poderá obter apenas uma parte de um módulo do &kde; no &svn;. 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.

- Poderá fingir efectuar as operações. Se passar a opção `--pretend` ou `-p` na linha de comandos, o programa dar-lhe-á uma descrição mais extensiva dos comandos que estará prestes a executar, sem os executar de facto.

- Suporte para obter ramificações ('branches') específicas dos módulos do &svn;. Este trabalho ainda necessita de ser terminado, mas já poderá seleccionar a ramificação que pretende compilar com a opção de configuração 'module-base-path'.

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

#### Introdução ao registo

O registo é uma funcionalidade do &kdesvn-build; que consiste no facto do resultado de todos os comandos que o &kdesvn-build; executa serem gravados num ficheiro 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, dado que poderão existir várias razões para a compilação falhar, em primeiro lugar.

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

Os registos são sempre gravados sob a pasta de registo. O destino da pasta em questão é controlado pela opção log-dir, que é por omissão igual a `${source-dir}/log` (onde o ${source-dir} é o valor da opção source-dir. No resto desta secçã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 tem como nome a data e o número da execução. Por exemplo, a segunda vez que o &kdesvn-build; foi executado a 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.

Por questões de conveniência, o &kdesvn-build; irá também criar uma ligação aos registos da sua última execução, chamada `latest`. Assim, os registos da última 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; tentará compilar. Do mesmo modo, irá conter um ficheiro 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, só irá existir uma disposição equivalente na pasta de registos. Por exemplo, os registos 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 registo de cada módulo, irá encontrar um conjunto de ficheiros para cada operação que o &kdesvn-build; efectuar. Se o &kdesvn-build; actualizar um módulo, irá ver ficheiros chamados `svn-co.log` (para um módulo extraído por completo) ou `svn-up.log` (ao actualizar um módulo que já tinha sido extraído). Se o comando `configure` foi executado, então será de esperar ver um ficheiro `configure.log` nessa pasta.

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

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

Se o ficheiro `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 redireccionamento do resultado do &kdesvn-build; e passar ao lado do ficheiro de registo em certas circunstâncias (normalmente ao obter o conteúdo do &svn; da primeira vez), onde o resultado do erro, nesse caso, não está no ficheiro de registo mas sim no &konsole; ou no terminal onde executou o &kdesvn-build;

## O Formato do '.kdesvn-buildrc'

Para usar o programa, deverá ter um ficheiro 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 secçõ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 &svn; 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. Carregue 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.

- apidox, para compilar a Documentação da API

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

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

- branch, para obter uma dada 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, ao usar o 'cmake'c.

- 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 indicar os pacotes de traduções a obter e a 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 onde transferir o módulo (útil para as ramificações - 'branches' -, e marcas - 'tags').

- niceness, para mudar a prioridade do CPU.

- no-rebuild-on-fail, para evitar executar o 'make' de novo se 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 fazem 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 comandos.

### Tabela de Opções

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

apidox

Sobrepõe-se à global

Configure esta opção como true, para que o &kdesvn-build; compile e instale automaticamente a documentação da API do módulo, após o processo de compilação/instalação normal. Isto só funciona para os módulos em que o `make apidox` faz alguma coisa, e que incluem o 'kdelibs', 'kdebase' e o 'koffice', entre outros.

Esta opção não funciona para os módulos que usam o suporte para o &unsermake;, devido a deficiências no sistema de compilação 'unsermake'.

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'. Dado 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 activá-las. Por omissão, está activada a aplicação destas modificações.

binpath

Sobrepõe-se à global

Active 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 por omissã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. 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 por omissão "trunk", onde o desenvolvimento do &kde; está em curso. Por exemplo, para obter a ramificação do &kde; 3.4, deverá configurar esta opção como "3.4".

Lembre-se que alguns módulos usam um nome de ramificação diferente. Em concreto, 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, poderá ter de indicar manualmente o URL de onde transferir, 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 o usar:

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

  O valor por omissão é `build`.

- Um local absoluto. Se indicar um local que comece por um /, então será usado esse local directamente. 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 comandos. Por exemplo, o `~/builddir` irá configurar a pasta de compilação como `/home/utilizador/builddir`.

Talvez de forma surpreendente, esta opção poderá alterada por módulo.

checkout-only

Sobrepõe-se à global

Altere esta opção para obter o código do &svn; 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', 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 &svn;. Ainda que esta opção se sobreponha à global, tenha em atenção que esta opção, como global, não faz sentido.

cmake-options

Adiciona às opções globais (não se aplica no 'qt-copy')

Use esta opção para indicar quais as opções a 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 for usado como a opção de um módulo, é adicionado ao fim das opções globais. Isto permite-lhe definir opções do CMake comuns na secção global.

Esta opção substitui a configure-flags para todos os módulos do KDE 4, dado que estes usam o CMake para se compilar.

Dado que estas opções são passadas directamente à linha de comandos do CMake, deverão ser indicados como seriam passados no CMake. Por exemplo:

    cmake-options -DRPATH_STYLE=default

Dado que isto é muito trabalhoso, o &kdesvn-build; faz tudo para que as restantes opções são definidas correctamente, pelo que poderá deixar esta opção em branco.

configure-flags

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

Use esta opção para indicar quais as opções a 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;, como tal 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 desactivar o resultado colorido do &kdesvn-build;. Por omissã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 a consola 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, dado que esta opção irá também definir a variável de ambiente `CXXFLAGS` durante o processo de compilação.
dest-dir | Sobrepõe-se à global | Use esta opção para mudar o nome que é dado a um módulo no disco. Por exemplo, se o seu módulo se chamava 'extragear/network', poderá mudar o nome do mesmo para 'extragear-network' com esta opção.

disable-agent-check

Não poderá ser sobreposta

Normalmente, se estiver a usar o SSH para obter o código do Subversion (se, por exemplo, estiver a usar o protocolo 'svn+ssh'), o 'kdesvn-build' irá tentar certificar-se que, se estiver a usar o 'ssh-agent', ele está de facto a gerir algumas identidades do SSH. Isto é para tentar e evitar que o SSH pergunte a sua frase-senha para todos os módulos. Poderá desactivar esta opção se activar a opção 'disable-agent-check' como 'true'.

do-not-compile

Sobrepõe-se à global

Use esta opção para definir a variável de ambiente `DO_NOT_COMPILE` antes de executar o programa 'configure'. De acordo com a FAQ de Desenvolvimento do &kde;, este deverá ser o caso de uma pasta de topo que não deseje compilar. As pastas deverão estar separadas por espaços.

Lembre-se que o código dos programas será à mesma transferido. Poderá usar a instrução checkout-only para escolher as pastas que deseja obter.

Esta opção ainda não funciona com os módulos compilados com o &cmake;

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 de alguma vez necessitar de enviar mensagens. Não terá de se preocupar com isto se não usar qualquer funcionalidade que envie e-mails. (Elas estão todas desactivadas por omissão). De momento, só o email-on-compile-error é que necessita desta opção.

email-on-compile-error

Não poderá ser sobreposta

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. Este só é enviado se um módulo se recusar a compilar.

Por favor, veja a opção email-address para configurar o endereço de onde o 'kdesvn-build' irá enviar, dado que o valor por omissão não é normalmente o que pretende.

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á à mesma transferido. 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 de este ser compilado com sucesso. Esta opção está activa por omissão. Se quiser desactivá-la, terá de configurar esta opção como 0 no &rcfile;. Poderá também usar a opção da linha de comandos `--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 omissão, será em `~/kde`. Se mudar isto para uma pasta que necessite do acesso do 'root', poderá ter de ler acerca da opção make-install-prefix também.

kde-languages

Não poderá ser sobreposta

Esta opção permite-lhe escolher os pacote transferidos e instalados em conjunto com o &kde;. Poderá fazer isto se não viver nos Estados Unidos e quiser o &kde; traduzido para a sua língua nativa.

Para usar esta opção, configure-a como uma lista separada por espaços das línguas a instalar. Cada língua tem um código associado a ele, o qual poderá encontrar nesta página: http://i18n.kde.org/teams/.

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

Por exemplo, para optar por instalar o Português, iria configurar a opção com algo do tipo: ``kde-languages` pt`. Terá à mesma de usar o &kcontrol; para escolher a língua Portuguesa, todavia.

libpath | Sobrepõe-se à global | Configure esta opção para definir a variável de ambiente LD_LIBRARY_PATH, enquanto efectua a compilação. Não poderá sobrepor esta opção num módulo. O valor por omissão está em branco, mas os locais `$KDEDIR/lib` e `$QTDIR/lib` são adicionados automaticamente. 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 ficheiros de registo gerados pelo programa. Esta opção poderá ser definida por cada módulo, desde a versão 0.64 e posteriores.
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 enquanto lida com os privilégios do 'root'.

make-options

Sobrepõe-se à global

Configure esta variável para passar as opções da linha de comandos ao comando 'make'. Isto é útil para os programas, como o distcc. O distcc permite-lhe partilhar o seu trabalho de compilação por mais que um computador. Para a usar, deverá usar a opção `-j` do 'make'. Agora já pode. De acordo com a documentação, recomenda-se '2 * número_de_cpus_na_rede'. Existe 1 CPU no caso do autor, como tal seria `-j2` no caso dele.

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. Será à mesma mantido actualizado ao actualizar a partir do &svn;. Esta opção é exactamente equivalente à opção da linha de comandos `--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 actualizar (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 por omissã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 o ajudar a escolher o local correcto.

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 por omissão tanto pode ser o trunk como o trunk/KDE, dependendo do nome do módulo.

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; para si próprio. O valor por omissão é 10.
no-rebuild-on-fail | Sobrepõe-se à global | Configure o valor desta opção como true para evitar sempre que o &kdesvn-build; 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 contradizer o efeito de uma actualização do &svn; 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 &svn;, sem qualquer alteração. Deverá usar geralmente esta opção, se quiser obter uma versão específica, mas o 'kdesvn-build' não conseguir descobrir o que queria 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. Poderá sobrepor esta configuração numa opção de um módulo. Se não indicar esta opção, será por omissã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;. 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, 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 por omissã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.

Lembre-se 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;, dado que o 'kdesvn-build' será incapaz de efectuar compilações incrementais.

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, iria pôr este comando na secçã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 secção do &rcfile;. Desta forma, poderá definir mais que 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 &svn; do &kde;. Se não indicar este valor, será usado o valor por omissão `~/kdesvn`. Se indicar de facto este valor, use um local absoluto.
svn-server | Sobrepõe-se à global | Esta opção é usada para definir o servidor usado para obter o código do &svn;. Por omissão, é usado o repositório anónimo de &svn;, em svn://anonsvn.kde.org/
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á desactivada por omissão.

tag

Sobrepõe-se à global

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

NOTA: As hipóteses serão muito boas quando NÃO QUISER usar esta opção. As versões do &kde; estão disponíveis em pacote comprimidos no servidor de FTP do &kde; ou numa das suas réplicas.

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

use-cmake

Sobrepõe-se à global

Esta opção permite-lhe obrigar o &kdesvn-build; a tentar (ou não) usar o CMake para um dado módulo. Normalmente, o &kdesvn-build; irá tentar sempre usar o CMake, se estiver presente no módulo, dado que será necessário para compilar o KDE 4. Esta opção está disponível para facilitar a transição do 'unsermake' para o CMake. Esta opção será removida assim que todos os módulos precisem do CMake.

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 activar o modo experimental de 'srcdir' != 'builddir'. Se estiver activada, o &kdesvn-build; irá copiar o módulo de código do 'qt-copy' para a pasta de compilação e efectuar 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. Deverá também mudar a sua opção qtdir em função disso. O 'make' incremental deverá à mesma funcionar neste modo, dado que as datas serão preservadas após a cópia. Se usar a opção apply-qt-patches, as actualizações serão aplicadas na pasta de compilação, não na pasta de código. Esta opção é igual a true, por omissão.

use-stable-kde

Não poderá ser sobreposta

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

Pode usar a opção &branch; a nível global ou para cada módulo, para transferir do &kde; 3.5 (ou 3.4, etc.). Contudo, isto não é conveniente (como o 'kdesupport') são partilhados entre o 3.5 e o 4. Para além disso, é necessário adicionar bastantes opções 'branch' ao ficheiro de configuração.

Por isso, se configurar esta opção global como `true`, o &kdesvn-build; irá transferir automaticamente a versão para o &kde; 3.5 dos módulos, como o 'kdelibs' e o 'qt-copy', em vez de transferir a versão para &kde; 4. Poderá à mesma 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, poderá optar por transferir o &kde; 3.5 em vez do &kde; 4, ainda por lançar.

use-unsermake

Sobrepõe-se à global

Configure esta opção como true para poder usar o programa experimentar 'unsermake' em vez do 'automake' ao correr o programa 'configure'. Isto poderá levar a algumas diminuições sérias na altura da compilação, principalmente no caso dos sistemas de compilação distribuídos. Esta opção é, por omissão, true (para a maioria dos módulos).

Normalmente, se usar esta opção, o 'kdesvn-build' irá manter automaticamente o 'unsermake' actualizado. Isto poderá começar a ser incómodo, principalmente se estiver a gerir você mesmo o 'unsermake'. Se for este o caso, poderá configurar esta opção como self, pelo que o 'kdesvn-build' irá usar à mesma o 'unsermake', mas não fará nada de especial para o manter actualizado.

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

Este programa não usa variáveis de ambiente. Se necessitar de 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 comandos:

`--help`

  mostra apenas uma ajuda simples deste programa.

`--version`

  mostra a versão do programa.

`--author`

  mostra as informações de contacto do autor.

`--color`

  activa o resultado do programa a cores.

`--nice=valor`

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

`--no-color`

  desactiva o resultado do programa a cores.

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

  não faz NADA de facto, mas funciona como se fizesse.

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

  Não é tão descritivo com o resultado à saída. Com esta opção, só 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 se passa e o que o 'kdesvn-build' está a fazer.

`--svn-only`

  efectua apenas a actualização do código.

`--build-only`

  efectua apenas o processo de compilação.

`--ignore-modules`

  não inclui os módulos passados no resto da linha de comandos no processo de actualização/compilação.

`--no-svn`

  ignora o passo de contacto do servidor do &svn;.

`--no-build`

  salta o processo de compilação.

`--no-install`

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

`--debug`

  activa o modo de depuração para o programa. De momento, isto significa que todo o resultado será enviado para o STDOUT, para além de ficar registado na pasta de registo como normal. Do mesmo modo, muitas das funções tornar-se-ão mais descritivas sobre o que estão fazer 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`

  volta a criar o sistema de compilação e a compilar do zero.

`--reconfigure`

  executa o programa 'configure' de novo sem limpar a pasta de compilação.

`--recreate-configure`

  executa o `make `-f` Makefile.cvs` de novo 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 a compilação a partir do módulo indicado, que deverá ser a opção seguinte na linha de comandos. Esta opção implica a `--no-svn`. Não deverá indicar os nomes dos outros módulos na linha de comandos.

`--rc-file`

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

`--run`

  Esta opção interpreta o item seguinte na linha de comandos como um programa a executar, pelo que o &kdesvn-build; irá acabar de ler o ficheiro de configuração normalmente e depois irá executar o programa indicado.

  Isto não irá funcionar para iniciar uma linha de comandos com o ambiente do 'kdesvn-build', contudo, dado que as linhas de comando interactivas limpam tipicamente alguma parte das variáveis de ambiente (como a `PATH` e a `KDEDIRS`) na sequência de arranque.

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

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

`--build-system-only`

  pára após a execução do `make `-f` Makefile.cvs`. O programa 'configure' irá necessitar à mesma de 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 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 comandos, irá tentar instalar todos os módulo incluídos em 'successfully-built', excepto o 'qt-copy', que não necessita de instalação. Se as opções da linha de comandos forem indicadas após o `--install`, então assumem-se que são módulos para instalar.

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

  Poderá usar esta opção para sobrepor outra opção no seu &rcfile; para todos os módulos. Por exemplo, para sobrepor a opção log-dir, deverá escrever: `--log-dir=/local/da/pasta`.

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

  Poderá usar esta opção para sobrepor uma opção do seu &rcfile; para um dado módulo. Por exemplo, para sobrepor a opção use-unsermake do 'kdemultimedia', iria escrever: `--kdemultimedia,use-unsermake=false`.

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

## Usar 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 comandos:

    &percnt; kdesvn-build

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

Leia mais para saber como é que o &kdesvn-build; faz isso, assim como o que 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 &svn; 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 actualizações para optimizações e correcções de erros que, opcionalmente, poderão ser aplicadas. Estas actualizações são à mesma compatíveis com a biblioteca &Qt;, como tal o código produzido com o 'qt-copy' funciona à mesma 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 poderá ter de 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, dado que não são linhas de comando equivalentes.

- O &kdesvn-build; irá definir automaticamente algumas variáveis de ambiente extra 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 actualizações opcionais com algumas correcções de erros e optimizações que ainda não entraram no &Qt; oficial. Para as activar, configure a opção &apply-qt-patches; como `true`. Depois de fazer esta alteração, poderá ter de 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 normais ao seu ambiente, por si:

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

- O local dos programas de suporte ao desenvolvimento do &kde; e do &Qt; é adicionado automaticamente à variável `PATH`. Isto significa que não irá necessitar de editar a &binpath; para os 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 incluir.

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

- 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 ter em conta a configuração da opção &use-unsermake;.

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

Os programas poder-se-ão executar com diferentes níveis de prioridades nos Sistemas Operativos dos dias de hoje, 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 afectados e possam executar normalmente. Com esta técnica, o &kdesvn-build; irá usar o CPU extra quando estiver disponível.

O &kdesvn-build; irá manter à mesma 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 terá de ajustar a opção &niceness; no &rcfile;. A opção &niceness; controla quão simpático é o &kdesvn-build; para os outros programas. Por outras palavras, se tiver um &niceness; maior, dará ao &kdesvn-build; uma prioridade menor. Como tal, para dar ao &kdesvn-build; uma maior prioridade, reduza o &niceness; (e vice-versa). O &niceness; pode ir de 0 (nada simpático, prioridade máxima) até 20 (super-simpático, prioridade mínima).

Poderá também mudar temporariamente a prioridade do &kdesvn-build; ao usar a &cmd-line-option; &cmd-nice;. O valor da opção é usado da mesma forma que no &niceness;.

É possível a alguns programas executados pelo super-utilizador 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 ideia, dado que não irá melhorar muito o tempo de compilação, mas tornará o seu computador muito lento, se precisar de o usar à mesma.

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

    &percnt; kdesvn-build --nice=15

Ou poderá editar o &rcfile; para tornar a mudança permanente:

    &niceness; 15

#### Instalação como super-utilizador

Poderá ter o &kdesvn-build; a executar a instalação com privilégios de super-utilizador. Isto pode acontecer no caso da instalação a nível do sistema (não recomendada). Também é útil se usar uma instalação normal para um único utilizador, 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.

Poderá simplesmente executar o &kdesvn-build; directamente como super-utilizador, dado 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-utilizador, sempre que possível.

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

Por exemplo, para instalar todos os módulos com o sudo, poderá fazer algo do género:

    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

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

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

Para usar esta funcionalidade, a opção &use-unsermake; deverá estar activa para o módulo. Esta opção está activada normalmente por omissão, se bem que alguns módulos não suportam a opção, pelo que são impedidos de usar o 'unsermake'. Como tal, se pensa que activou o 'unsermake' e não vê à mesma 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, pode querer compilar apenas um programa de um módulo. O &kdesvn-build; tem funcionalidades para simplificar isto. Existem várias formas complementares de o fazer.

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

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

Se não souber já o que vai transferir de um dado módulo, poderá ser uma boa ideia 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', poderá usar o &checkout-only; da seguinte forma:

    module kdeadmin
      &checkout-only; kuser kdat
    end module

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

Da mesma forma, algumas vezes uma aplicação poderá necessitar de outras pastas e isso ser difícil de descobrir; nesse caso poderá ser razão para tentativa e erro, adicionando constantemente pastas à opção para descobrir.

Uma nota final sobre esta opção: Se alterar esta opção deverá usar o ``kdesvn-build` `&cmd-refresh-build;` `módulo`` para garantir que o módulo é configurado de novo convenientemente. Para além disso, o &kdesvn-build; nunca irá remover os ficheiros existentes, se 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.

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

Em vez de restringir o que é obtido, é possível transferir tudo mas fazer com que o sistema de compilação deixe algumas pastas por compilar. Isto pode ser útil se uma pasta estiver sempre a invalidar 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 de novo 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

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

Poderá usar o &inst-apps; para indicar que apenas algumas pastas de um módulo completo serão instaladas (embora seja extraído o módulo inteiro).

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

As mesmas mensagens aplicam-se como nas outras duas opções, pelo que terá de configurar de novo o módulo, se alterar o valor do &inst-apps;.

#### Usar o &unsermake;

O unsermake é uma aplicação desenhada 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 efectuam compilações distribuídas, dado 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.

Para além disso, o 'unsermake' inclui o suporte para estimar o progresso do procedimento de compilação actual. O &kdesvn-build; tira partido disso para oferece 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 omissão, quando for possível usá-lo num determinado módulo.

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

    global
      use-unsermake false
    end global

Para activar o unsermake para um único módulo, mesmo que esteja desactivado a nível global, faça o seguinte:

    module nome-módulo
      use-unsermake true

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

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

Quando isso terminar, o &kdesvn-build; irá tentar à mesma usar o unsermake, mas não irá efectuar as actualizações. Poderá tanto alterar o &binpath; para apontar para a pasta correcta do 'unsermake', como extrair e actualizar você mesmo o unsermake no seu módulo (actualmente em kdenonbeta/unsermake).

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

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

O &svn; suporta a gestão 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 a trabalhar 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) possa também ter desenvolvimentos em curso nela.

Uma marca, por outro lado, é uma imagem do repositório de código numa dada posição no tempo. Isto é usado pela equipa de administração do &kde; para marcar uma versão do código adequada para lançamento, permitindo à mesma aos programadores continuarem a desenvolver.

No &svn;, 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 utilizadores mais avançados.

O método mais simples é usar as opções &branch; e &tag;. 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 transferir. Na maioria dos módulos do &kde;, isto funciona muito bem.

Para transferir 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 transferir o 'kdemultimedia' como foi lançado aquando do &kde; 3.4.3:

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

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 incorrecta: o &module-base-path; e o &override-url;

- O 'module-base-path' é usado para ajudar o &kdesvn-build; a preencher a parte em falta da localização de um módulo. No repositório do &kde;, todos os locais têm o formato raizSvn/module-base-path/nome-módulo. Normalmente, o &kdesvn-build; pode descobrir a parte intermédia apropriada por si só. Quando não conseguir, poderá usar o '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; transfira 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 exacto de onde transferir. Contudo, isto permite-lhe transferir dos locais onde o &kdesvn-build; não terá hipóteses de adivinhar o local.

      module qt-copy
        # Indique o local exacto 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' de todo, por isso, se mudar a sua configuração do &svn-server;, também terá de actualizar 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á efectuar automaticamente uma série de passos para tentar automaticamente obter um módulo para compilar quando 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 facto, e é rápido a falhar se não funcionar de todo.

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

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

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 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 a compilar o módulo pela primeira vez, todos esses passos são ignorados, dado que a nova compilação do zero não irá falhar normalmente, excepto no caso de um erro verdadeiro.

##### Compilar manualmente um módulo de novo

Se tiver feito alterações a 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, poderá ter de compilar o módulo de novo manualmente.

Podê-lo-á fazer se executar simplesmente o ``kdesvn-build` `--refresh-build` `módulo``

Se quiser que o &kdesvn-build; compile de novo de forma automática o módulo, durante a próxima actualização normal, poderá criar um ficheiro especial. Cada módulo tem uma pasta de compilação. Se criar um ficheiro 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 correr, mesmo que fosse executar normalmente a compilação incremental.

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

Compile de novo com o `.refresh-me` para o módulo arts

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

##### Controlar o comportamento da compilação

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

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

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

#### Mudar 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 lê do &rcfile; para construir o ambiente. Isto é feito principalmente para garantir que, quando compilar um módulo, a compilação pode ser repetida. Por outras palavras, o &kdesvn-build; poderá compilar um módulo, mesmo que se tenha esquecido como é que configurou as suas variáveis de ambiente na linha de comandos onde executou o &kdesvn-build;.

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

Ao contrário da maioria das opções, poderá ser definida mais que 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.

Configurar o 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

Poderá indicar ao &kdesvn-build; para começar a compilar a partir de um módulo diferente do que 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 a meio. Poderá controlar isto com a opção &cmd-resume-from;.

Se usar o &cmd-resume-from;, irá saltar por cima da actualização do código-fonte.

Prosseguir a compilação a começar no 'kdebase'.

    % kdesvn-build --resume-from=kdebase

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

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

Poderá fazer isso com a opção &cmd-ignore-modules;. Esta opção diz ao &kdesvn-build; para ignorar todos os restantes módulos da linha de comandos, ao efectuar a actualização e a compilação.

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

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

#### Mudar as opções na linha de comandos

##### Modificar as opções globais

Poderá alterar a configuração das opções lidas do &rcfile; directamente a partir da linha de comandos. Esta alteração irá substituir a configuração do ficheiro, mas é apenas temporária. Só fará efeito enquanto estiver à mesma presente na linha de comandos.

O &kdesvn-build; permite-lhe alterar as opções com nome do tipo nome-opção se passar um argumento na linha de comandos 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, avisá-lo-á, caso contrário irá recordar o valor que definir e substituir o valor do ficheiro de configuração.

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

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

Desactivar o 'unsermake' na linha de comandos. O --refresh-build é usado para que as modificações no 'unsermake' façam efeito.

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

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

Também é possível mudar 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 &rcfile; e só se aplica enquanto a opção for passada na linha de comandos.

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

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

### Funcionalidades para os programadores do &kde;

#### Criar a Documentação da API

O &kdesvn-build; poderá instalar automaticamente a documentação adicional gerada a partir do código num módulo. Isto só funciona para alguns módulos e só é útil para os programadores do &kde;.

Esta funcionalidade não funciona para os módulos compilados com o sistema de compilação unsermake. Dado que este é o sistema de compilação por omissão para os módulos que o podem usar, teria de desactivar o suporte para o 'unsermake'. Veja o exemplo abaixo para mais informações.

Para activar isto, basta definir a opção &apidox; como 'true' no &rcfile;, no caso do módulo onde deseja a documentação. Nem todos os módulos têm documentação. Os módulos que a incluem são o 'kdelibs', o 'kdebase' e o 'kdepim'.

Se tiver acesso à Internet, a documentação da API do &kde; também está disponível 'online'. No Konqueror, pode usar o atalho kde:NomeClasse.

Poderá também visitar a página Web da documentação do &kde; na English Breakfast Network.

Finalmente, é possível obter a documentação sob a forma de um pacote, do &kde; Developer's Corner. Carregue na versão do &kde; que deseja documentada e poderá então obter uma cópia para uso pessoal do módulo que deseja.

Instalar a Documentação da API do kdelibs.

    module kdelibs
      use-unsermake false    # o unsermake não consegue criar a apidox
      apidox        true     # criar e instalar a apidox
    end module

#### Verificações do Agente do SSH

O &kdesvn-build; poderá garantir que os programadores do &kde; que usem o &ssh; para aceder 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 indique a sua senha de SSH, por isso e por omissão, o &kdesvn-build; irá verificar se o Agente está a correr antes de efectuar as actualizaçõ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 actualização e extracção de código anónima do repositório. O &svn; irá lidar com as senhas para o segundo protocolo possível dos programadores do KDE, o HTTPS.

Poderá querer desactivar 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 desactivar a verificação do agente, configure a opção `disable-agent-check` como `true`.

Desactivar a verificação do agente do &ssh;

    global
      disable-agent-check true
    end global

### Outras funcionalidades do &kdesvn-build;

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

O &kdesvn-build; tem várias opções para controlar a quantidade de dados à 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 maioritariamente silencioso. Só as mensagens importantes, avisos ou erros serão apresentados. Quando estiver disponível, a informação de progresso é à mesma 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, dado que faz com que o &kdesvn-build; actue como se o `--verbose` estivesse activo, 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 a cores

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

Poderá desactivar isto com a opção `--no-color` na linha de comandos ou configurando a opção &colorful-output; no &rcfile; como `false`.

Desactivar as mensagens a cores no ficheiro 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 escola, 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 registo de erros abreviado para cada módulo. Só é enviada uma mensagem de e-mail para uma dada execução, mesmo que falhe a compilação de 15 módulos.

Esta funcionalidade não está activada por omissão. Para a activar, terá de 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. Vem incluído com o Perl 5.8 e é instalável com o Perl 5.6. O Mail::Mailer suporta o Sendmail (incluindo os cliente de e-mail compatíveis com o Sendmail), o transporte de SMTP nativo e o qmail

Enviar um e-mail de xpto-envio@exemplo.com to xpto-recepcao@exemplo.com em caso de erro na compilação.

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

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

Está com falta de espaço em disco mas deseja à mesma fazer uma extracção actualizada do &kde;? O &kdesvn-build; poderá ajudar a reduzir a sua utilização do disco ao compilar o &kde; a partir do &svn;.

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

1. A extracção de código actual poderá levar bastante espaço. Os módulos por omissão levam cerca de 1,6 gigabytes de espaço em disco. Poderá reduzir esta quantidade, se garantir que só vai compilar os módulos que deseja de facto. O &kdesvn-build; não irá remover o código-fonte do disco, mesmo que remova o item do &rcfile;, como tal garanta que são apagados os módulos extraídos e não usados da pasta de código. Lembre-se que os ficheiros de código são obtidos da Internet, pelo que não deverá removê-los se for usar estes ficheiros de facto, pelo menos até acabar de usar o &kdesvn-build;.

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

   Uma coisa a reparar é que, devido à forma como o &svn; funciona, existem de facto dois ficheiros no disco para cada ficheiro extraído do repositório. O &kdesvn-build; não tem código neste ponto para tentar minimizar o tamanho do código, quando este não estiver a ser 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á de 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, como tal 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; efectuar as compilações incrementais que poupam tempo.

3. Finalmente, existe espaço em disco necessário para a própria instalação do &kde;, que não 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 exactos, de qualquer forma.

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

Deverá ter mesmo a certeza que sabe o que faz, antes de decidir remover a informação de depuração. A execução de aplicações demasiado actuais significa que está a correr programas que, potencialmente, poderão ter tendência a estoirar, algo que não acontece numa versão estável. Se estiver a executar '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; como tal, é possível que tenha de activar de novo a informação de depuração da aplicação afectada e compilá-la de novo para ajudar um programador a resolver o estoiro. Como tal, 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 é mantida à mesma e a depuração fica activa.

    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 optimizações do tamanho.

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

## CMake, o sistema 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 seleccionado 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 Wiki do KDE. Basicamente, em vez de correr 'make -f Makefile.cvs', depois o 'configure', depois o 'unsermake' (ou o 'make'), basta simplesmente correr o 'cmake' e depois o 'make'.

O &kdesvn-build; tem um suporte inicial 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.

Contudo, algumas opções, como a 'inst-apps' ou a 'do-not-compile', não têm equivalente directo e, deste modo, estão desactivadas. Quando se arranjar uma forma de as implementar com o CMake, tal será feito e estas opções então voltarão a ser activadas. Contudo, de resto funciona quase tudo da mesma forma.

Nem todo o KDE foi alterado para usar o CMake nesta altura. Por exemplo, a opção apidox é relativamente inútil, até que a infra-estrutura equivalente esteja terminada. Tentou-se avisar esses factos, mas nem todas as deficiências poderão ser tratadas pelo &kdesvn-build; por agora.

## Créditos e Licenças

&underFDL;