# Manual do 'Script' &kdesvn-build;

## Introdução

O &kdesvn-build; é um programa que ajuda os utilizadores a instalar o &kde; a partir dos repositórios de código em &subversion; e &git;.

Este guia é uma introdução para descrever os seguintes aspectos da operação do &kdesvn-build;:

- Funcionalidades notórias.

- Uma introdução aos passos necessários para começar.

- A sintaxe e as opções do ficheiro de configuração.

- As opções da linha de comandos.

Também estão documentados os passos que deverá efectuar com as outras ferramentas (por outras palavras, os passos que não são executados automaticamente pelo &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 &subversion; 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 Técnica 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 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;.

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

#### Configurar uma conta nova do utilizador

Recomenda-se que use um conta de utilizador diferente para compilar, instalar e executar o seu ambiente &kde;, dado que são necessárias menos permissões e para evitar interferências com os pacotes da sua distribuição. Se já tiver pacotes do &kde; instalados, a melhor escolha será criar um utilizador diferente (dedicado) para compilar e executar o novo &kde;.

Se deixar o &kde; do seu sistema incólume, poderá ter uma manobra de emergência, no caso de o &kde; compilado for instável por uma razão qualquer.

Mais tarde, poderá fazer uma instalação de sistema se o desejar. Este documento não cobre uma instalação a nível do sistema. Se estiver a efectuar uma instalação a nível do sistema, provavelmente já deverá saber o que está a fazer. Caso contrário, poderá querer consultar a documentação ou 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 das ferramentas necessárias poderá ser encontrada na TechBase do KDE.

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

- Irá necessitar do &cmake;. A versão necessária irá variar, dependendo da versão do &kde; 4 que estiver a compilar; veja a TechBase para detalhes mais específicos.

- O programa do cliente de &subversion;, incluindo o suporte para HTTP Seguro (HTTPS). Para garantir o suporte necessário, poderá executar o ``svn `--version```. Se o resultado disser que lida com o esquema HTTPS (para o acesso de escrita ao svn.kde.org) ou o esquema 'svn' (para o acesso de leitura ao anonsvn.kde.org), então deverá ser tudo.

- Se estiver a compilar o &Qt; ou qualquer um dos vários módulos do &kde; disponíveis no Gitorious, então terá de instalar também o gestor de controlo de código Git.

- Irá precisar de um ambiente de desenvolvimento de C++. Recomenda-se o GCC 3.4 ou posterior.

A maioria das distribuições dos sistemas operativos incluem um método para instalar facilmente as ferramentas de desenvolvimento necessárias. Consulte a página Getting Started (Introdução) da TechBase, na secção Required Packages from your Distribution (Pacotes Necessários da sua Distribuição) para ver se essas instruções já estão disponíveis.

Uma excepção às bibliotecas necessárias é 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 ficheiro de configuração, 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 ficheiro de configuração, 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; 4.6 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 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;

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

O &kdesvn-build; vem incluído no módulo 'kdesdk', sendo o módulo normalmente já incluído nas distribuições. Se tiver transferido o &kdesvn-build;, garanta que está a usar a versão que transferiu. Poderá usar a opção --version para garantir que está a usar a versão que acha correcta.

1. Para obter o &kdesvn-build; a partir da sua página pessoal, basta ir à página pessoal do &kdesvn-build; 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 ou que está a correr uma versão errada por engano.

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

Ainda que o &kdesvn-build; não necessite que você crie um ficheiro de configuração, torna o trabalho muito mais simples. Se usar um ficheiro de configuração, 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 ficheiro de configuração.

O ficheiro de configuração 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 para o `~/.kdesvn-buildrc` e depois editá-lo.

Poderá encontrar mais informações sobre a sintaxe do ficheiro de configuração em configure-data e em kdesvn-buildrc.

### 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 kdesvn-buildrc. 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 à sua necessidade e a lista dos 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 alterar a lista de pastas que serão percorridas na procura de comandos. É exactamente igual à variável `PATH` da 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 &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 selecciona o URL de onde transferir o código. Isto é útil se você for um programador com uma conta de &subversion; para o &kde;.

Depois da secção global, existe uma lista de módulos a compilar, rodeados por '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 kdesvn-buildrc 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:

    $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 e passe a opção --reconfigure depois de instalar os pacotes em falta.

Por outro lado, 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 kdesvn-build-logging.

### 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' (como está por omissão), adicione em alternativa:

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

    # Actuar 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 a compilar o 'qt-copy' (e usar o &Qt; do seu sistema), adicione isto em alternativa:

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

    # Actuar 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 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 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 sua 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 &subversion; 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:

- 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; e com o servidor de FTP do &kde; (FTP desde o &kdesvn-build; 1.4), 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.

- 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 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; poderá transferir uma marca ou ramificação específica de um módulo. Poderá também garantir que é usada uma versão específica em vez de um módulo.

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

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

- A transferência inicial de alguns módulos poderá ser acelerada pelo &kdesvn-build;, que irá transferir automaticamente (se estiver disponível) uma amostra do módulo das réplicas do &kde; e usá-la para configurar a extracção inicial. Isto poupa tempo e largura de banda, tanto para o seu sistema como para os servidores do &kde;.

- Para os programadores: O &kdesvn-build; 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 &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 dado módulo. Pode até ignorar alguns módulos temporariamente para uma dada compilação.

- 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 &subversion; da primeira vez, por alguma razão. Isto só se aplica aos módulos do &kde; 3, dado 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 &cmake;, 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.

- 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 &subversion; anónimo.

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

      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 mantenha as suas pastas de origem limpas.

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

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

### 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 &subversion; 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;.

## Configurar o &kdesvn-build;

### Introdução à configuração do &kdesvn-build;

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

- async, para actualizar e compilar ao mesmo tempo.

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

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

### Tabela com as opções de configuração disponíveis

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 | 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. Para 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. Ainda é possível à mesma compilar manualmente a documentação da API para os módulos mais antigos, como é óbvio.
apply-qt-patches | Sobrepõe-se à global | Esta opção foi removida no kdesvn-build 1.10. Para obter o mesmo efeito, veja o using-qt-copy e a opção repository.
async | Não poderá ser sobreposta | Esta opção activa o modo assíncrono da operação, onde a actualização do código-fonte e o processo de compilação serão efectuados em paralelo, em vez de esperar por todas as actualizações de código-fonte antes do início do processo de compilação. Esta opção está activa por omissão para o modo assíncrono. Para a desactivar, defina esta opção como `false` Esta opção está disponível desde a versão 1.6.
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 é a $`PATH`. 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; 4.4, deverá configurar esta opção como `4.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 as opções module-base-path ou override-url. Nota: Esta opção também funciona com os módulos de código que usam o &git; em vez do &subversion;.
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 &subversion; (ver a opção 'source-dir'). Esta é a opção predefinida e 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`. 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 &subversion; passo-a-passo. O valor desta opção deverá ser uma lista separada por espaços das pastas a transferir. Ainda que esta opção se sobreponha à global, tenha em atenção que esta opção, como global, não faz sentido. Lembre-se que esta opção não fará efeito nos módulos do &git;, devido ao modo de operação do sistema de controlo de código &git;.
cmake-options | Adiciona às opções globais (excepto 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 é 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 secção global. Esta opção não se aplica ao 'qt-copy' (que não usa o &cmake;). Use o configure-flags em alternativa. 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 -DCMAKE_BUILD_TYPE=RelWithDebInfo
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. (Por outras palavras, os parâmetros obrigatórios do &cmake; são definidos para si automaticamente)
configure-flags | Sobrepõe-se à global | 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. Esta opção só funciona para o 'qt-copy'. Para mudar a configuração para os módulos do KDE 4, veja 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 definir as opções que serão usadas para compilar o módulo. Esta opção é definida aqui em vez de ser com o configure-flags ou o cmake-options, dado que esta opção irá também definir a variável de ambiente `CXXFLAGS` durante o processo de compilação. Lembre-se que, para o &kde; 4 e para os outros módulos que usam o &cmake;, é necessário definir a opção CMAKE_BUILD_TYPE como sendo "none" ao configurar o módulo. Isto pode ser feito com 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', 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 ideia incluir pastas ou separadores de pastas no nome, dado que isso irá interferir com as opções build-dir ou source-dir.
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 seleccionar 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. 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. Por exemplo, para manter o &juk; e o &kscd; no módulo 'kdemultimedia' sem serem compilados, 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 de alguma vez necessitar de enviar mensagens de e-mail. 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 opção foi removida na versão 1.10
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 ficheiro de configuração. 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 &systemsettings; 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.
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 programas como o distcc ou para os sistemas com mais que 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. Será à mesma mantido actualizado ao actualizar a partir do &subversion;. 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`/``. O valor por omissão é o `trunk/`$módulo`` ou `trunk/KDE/`$módulo``, 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; para si próprio. O valor por omissão é 10.
no-svn | Sobrepõe-se à global | Se esta opção for igual a 'true', então o &kdesvn-build; não irá actualizar o código-fonte do módulo automaticamente. Irá tentar compilar o módulo à mesma, caso não o tenha já tentado anteriormente.
no-rebuild-on-fail | Sobrepõe-se à global | Esta opção foi removida na versão 1.10, dado que este comportamento já não é mais útil, devido às correcções no sistema de compilação subjacente.
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. 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.
prefix | Sobrepõe-se à global | Esta opção controla onde instalar o módulo (normalmente é usada a opção `kdedir`).
purge-old-logs | Sobrepõe-se à global | Esta opção controla se as pastas de registo antigas são apagadas automaticamente ou não. O valor por omissão é `false` (falso). Mesmo que não tenha definido esta opção como 'true', poderá apagar manualmente as pastas de registo antigas, executando para tal o comando:
    kdesvn-build --no-src --no-build --purge-old-logs kdelibs
Poderá usar o nome de qualquer módulo na linha de comandos acima; não terá de ser a 'kdelibs'.
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.
repository | Sobrepõe-se à global | Esta opção foi introduzida com a versão 1.10, e é usada para definir o repositório &git; de onde transferir o código-fonte do módulo. O &Qt; (e, por consequência, o 'qt-copy') irão necessitar desta opção, assim como vários módulos do &kde; que estão no processo de conversão para o uso do git;.
revision | Sobrepõe-se à global | Se esta opção for configurada com um valor diferente de 0 (zero), o &kdesvn-build; irá obrigar a actualização do &subversion; a obter o módulo que tenha exactamente 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 actualizado, a menos que esta opção seja alterada ou removida da configuração.
run-tests | Sobrepõe-se à global | Se for igual a `true`, então o módulo será compilado com o suporte para executar o seu pacote de testes, sendo este executado como parte do processo de compilação. O &kdesvn-build; irá mostrar um relatório simples com os resultados dos testes. Isto é útil para os programadores ou para aqueles querem garantir que o seu sistema é configurado correctamente.
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 ficheiro de configuração. 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 &subversion; 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.
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.
svn-server | Sobrepõe-se à global | Esta opção é usada para definir o servidor usado para obter o código do &subversion;. Por omissã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 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.
use-cmake | Sobrepõe-se à global | Esta opção foi removida no &kdesvn-build; 1.4, dado que todos os módulos do &kde; 4 necessitam do &cmake; e a utilização do CMake não é permitida em mais nenhuns módulos.
use-idle-io-priority | Não poderá ser sobreposta | Esta opção, adicionada no &kdesvn-build; 1.12, irá provocar a utilização de uma menor prioridade para o disco e para outra utilização de E/S, o que poderá melhorar significativamente a capacidade de resposta do resto do sistema, às custas de algum tempo mais alargado de execução do &kdesvn-build;. Por omissão, está desactivado; para activar a menor prioridade de disco, configure esta opção como `true` (verdadeira).
use-qt-builddir-hack | Sobrepõe-se à global | Esta opção foi removida devido a melhorias no sistema de compilação do &Qt;.
use-stable-kde | Não poderá ser sobreposta | Esta opção foi removida na versão 1.10, que limita o suporte ao KDE 4, o que remove o efeito desta opção.

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

### Variáveis de Ambiente Suportadas

O &kdesvn-build; 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.

### Parâmetros suportados da linha de comandos

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

`--async`

- Activa o modo assíncrono para actualizar e compilar ao mesmo tempo. Esta é a opção por omissão, e só necessita de ser definida se a tiver desactivado na configuração.

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

- Activar o resultado colorido. (Este é o valor por omissão para os terminais interactivos).

`--nice=`valor``

- Este valor ajusta a prioridade do CPU pedida pelo &kdesvn-build;, e deverá estar no intervalo 0-20. O 0 (zero) é a prioridade máxima (dado que é a menos nice (simpática)), enquanto o 20 é a prioridade mínima. O &kdesvn-build; usa o valor por omissão 10.

`--no-async`

- Desactiva o modo assíncrono de actualização. Em vez disso, a actualização será efectuada por completo antes de a compilação começar. Esta opção irá tornar o processo global mais lento; porém, se encontrar erros de IPC durante a execução do &kdesvn-build;, tente usar esta opção e enviar um relatório de erros.

`--no-color`

- Desactiva o resultado do programa a cores.

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

- O &kdesvn-build; irá executar o processo de actualização e compilação, mas em vez de executar quaisquer acções de actualização ou compilação, irá sim apresentar o resultado do que o programa teria feito (p.ex., os comandos a executar, os passos gerais efectuados, etc.).

  Nota: Os comandos simples apenas para leitura (como a leitura da informação dos ficheiros) poderão ser à mesma executados para tornar o resultado mais relevante (como a simulação correcta se o código iria ser obtido por completo ou actualizado).

`--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` (ou `-v`)

- Torna-se bastante descritivo com o que se passa e o que o &kdesvn-build; está a fazer.

`--src-only` (ou `--svn-only`)

- Só efectua a actualização do código. (O `--svn-only` só é suportado por razões de compatibilidade com os programas mais antigos).

`--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 (isto é útil se quiser compilar a maioria dos módulos no seu ficheiro de configuração e apenas quiser saltar alguns).

`--no-src` (ou `--no-svn`)

- Salta o contacto com o servidor do &subversion;. (O parâmetro `--no-svn` só é suportado por razões de compatibilidade com as versões anteriores do programa).

`--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 `cmake` (para os módulos do &kde;) ou o `configure` (para o &Qt;) mais uma vez, sem limpar a pasta de compilação. Normalmente não terá de definir isto, dado que o &kdesvn-build; irá detectar quando alterar as opções relevantes e executar de novo automaticamente a configuração da compilação. Esta opção é implícita se for usado o `--refresh-build`.

`--resume-from`

- Esta opção é usada para prosseguir com a compilação a partir do módulo indicado, o qual é o parâmetro seguinte na linha de comandos. Esta opção implica a `--no-src`. Não deverá indicar os nomes dos outros módulos na linha de comandos.

  Veja também: cmdline-resume-after e resuming-failed. Irá preferir usar esta opção da linha de comandos se tiver corrigido o erro de compilação e quiser que o &kdesvn-build; termine a compilação.

`--resume-after`

- Esta opção é usada para prosseguir com a compilação a partir do módulo indicado, o qual é o parâmetro seguinte na linha de comandos. Esta opção implica a `--no-src`. Não deverá indicar os nomes dos outros módulos na linha de comandos.

  Veja também: cmdline-resume-from e resuming-failed. Irá preferir usar esta opção da linha de comandos se tiver corrigido o erro de compilação e tiver também compilado e instalado o módulo você mesmo, e ainda se quiser que o &kdesvn-build; comece de novo com o módulo seguinte.

`--rc-file`

- Isto 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 para este parâmetro é `kdesvn-buildrc` (verificado na pasta actual), caso esteja presente, ou então o `~/.kdesvn-buildrc` em caso contrário. Veja também o 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.

  Se quiser ver o ambiente usado pelo &kdesvn-build;, poderá executar o comando `printenv`:

      $ kdesvn-build --run printenv
      KDE_SESSION_VERSION=4
      SDL_AUDIODRIVER=alsa
      LANGUAGE=
      XCURSOR_THEME=Oxygen_Blue
      LESS=-R -M --shift 5
      QMAIL_CONTROLDIR=/var/qmail/control
      ... etc.

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

- Isto permite-lhe mudar a pasta onde o &kde; será instalado na linha de comandos. Esta opção implica a `--reconfigure`, mas a utilização do `--refresh-build` poderá à mesma ser necessária.

`--revision`

- Esta opção faz com que o &kdesvn-build; transfira uma marca ou ramificação específica de um módulo do &subversion;, substituindo-se a qualquer das opções branch, tag ou revision já definidas para estes módulos.

  Esta opção não será provavelmente uma boa ideia, sendo apenas suportado por razões de compatibilidade com os programas mais antigos.

`--build-system-only`

- Esta opção faz com que o &kdesvn-build; interrompa a compilação de um módulo, logo antes de o comando `make` ter sido executado. Isto é suportado por razões de compatibilidade com as versões mais antigas, sendo que este efeito não é útil para o sistema de compilação actual do &kde;.

`--install`

- Se esta for a única opção da linha de comandos, irá tentar instalar todos os módulo incluídos em `log/latest/build-status`. 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 (mesmo que não tenham sido compilados com sucesso na última execução).

`--purge-old-logs`

- Esta opção faz com que o &kdesvn-build; apague as pastas de compilação desnecessárias após a compilação, de modo a poupar espaço em disco. Todas as pastas de compilação que não sejam necessárias para satisfazer uma ligação do `log/latest` serão removidas. Esta opção está desactivada por omissão. Para activá-la, veja a opção purge-old-logs.

`--no-snapshots`

- Se indicar esta opção, fará com que o &kdesvn-build; prefira sempre uma extracção completa e inicial do &subversion; em vez de usar uma amostra do módulo do &subversion;.

  As amostras de módulos são extracções reais do &subversion;. Não deverá ter de definir esta opção, por ser apenas uma ajuda de resolução de problemas.

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

- Poderá usar esta opção para sobrepor outra opção no seu ficheiro de configuração 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>=`

- Ou poderá usar esta opção para substituir outra no seu ficheiro de configuração, para um dado módulo.

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 getting-started é tão simples como fazer o seguinte, a partir de uma linha de comandos:

    % 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; suporta a compilação da plataforma &Qt;, usada pelo &kde;, como conveniência para os utilizadores. Este suporte é tratado por um módulo especial chamado 'qt-copy'.

O &Qt; é desenvolvido num repositório separado do sistema &kde;, localizado em http://qt.gitorious.org/qt.

Para poder compilar o &Qt;, dever-se-á certificar que a opção qtdir está configurada com a pasta onde gostaria de instalar o &Qt;, como está descrito em configure-data.

Dever-se-á então certificar que o módulo 'qt-copy' está adicionado no seu `.kdesvn-buildrc`, antes de quaisquer outros módulos no ficheiro. Se estiver a usar o ficheiro de configuração de exemplo, poderá simplesmente descomentar o item do módulo 'qt-copy'.

Agora deverá verificar se a opção repository e as opções branch estão definidas apropriadamente:

1. A primeira opção é compilar com um agrupamento de modificações de correcções de erros e optimizações recomendadas (isto costumava ser controlado com uma opção chamada 'apply-patches'). Esta colecção é desenvolvida num repositório separado em http://gitorious.org/+kde-developers/qt/kde-qt. Se quiser compilar com as modificações aplicadas (a maioria dos programadores do &kde; fazem-no), então deverá configurar a sua opção 'repository' como sendo `git://gitorious.org/+kde-developers/qt/kde-qt.git`

2. Caso contrário, para compilar o &Qt;-padrão, configure a sua opção 'repository' como sendo `git://gitorious.org/qt/qt.git`

Em ambos os casos, a opção 'branch' deverá ser configurada como `master` (a menos que queira compilar uma ramificação diferente).

Em alguns casos, o sistema de controlo de código subjacente não é capaz de funcionar ao executar a partir do &kdesvn-build;, mas continuará a funcionar correctamente quando for executado a partir da linha de comandos. Este erro ainda está sob investigação.

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

#### 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 ficheiro de configuração. 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 opção da linha de comandos &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):

    % kdesvn-build --nice=15

Ou poderá editar o ficheiro de configuração para tornar a mudança permanente:

    &niceness; 15

A opção niceness só afecta a utilização dos processadores do computador. Outro efeito importante na performance do computador relaciona-se com a quantidade de entrada e saída de dados (E/S) que um programa usa. Para poder controlar a quantidade de E/S que um programa poderá usar, os sistemas operativos &Linux; modernos suportam uma ferramenta semelhante chamada ionice. O &kdesvn-build; suporta o ionice, (mas apenas para o activar ou desactivar por completo), usando a opção use-idle-io-priority, desde a versão 1.12 do &kdesvn-build;.

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

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

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

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

O &subversion; 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 &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 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; 4.4 (que é simplesmente conhecido pela ramificação '4.4'):

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

Ou, para transferir o 'kdemultimedia' como foi lançado aquando do &kde; 4.4.3:

    module kdemultimedia
      tag 4.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/4.4
      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/4.4`/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/4.4/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

O &kdesvn-build; costumava incluir funcionalidades para tentar automaticamente reconstruir o módulo em caso de falha (dado que, às vezes, essa nova tentativa iria funcionar, por causa dos erros no sistema de compilação da altura). Graças à mudança para o &cmake;, o sistema de compilação já não passa mais por esses erros, pelo que o &kdesvn-build; não irá tentar mais compilar um módulo mais que uma vez. Todavia, existem situações em que o &kdesvn-build; irá tomar alguma acção automaticamente:

- Se quiser alterar as opções configure-flags ou cmake-options para um dado módulo, o &kdesvn-build; irá detectar isso e tentar executar de novo o 'configure' ou o 'cmake' para esse módulo.

- Se o sistema de compilação não existir (mesmo se o &kdesvn-build; não o apagou), então o &kdesvn-build; irá tentar criá-lo de novo. Isto é útil para permitir a execução de um --refresh-build completo para um módulo específico, sem ter de efectuar isso para os outros módulos.

##### 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.refresh-me
    % kdesvn-build

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

Normalmente o &kdesvn-build; usa o ambiente que está presente no arranque, quando executa os programas de actualização e compilação. Isto é útil quando estiver a executar o &kdesvn-build; a partir da linha de comandos.

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 (Por exemplo, para configurar qualquer variáveis de ambiente necessárias na execução do &kdesvn-build; num escalonador de tarefas como o &cron;). 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-after;.

Se usar qualquer uma das opções de continuação, 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

Prosseguir a compilação logo a seguir ao 'kdebase' (no caso de ter corrigido manualmente o problema e tiver instalado o módulo você mesmo):

    % kdesvn-build --resume-after=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 kdereview numa execução completa:

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

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

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

Poderá alterar a configuração das opções lidas do ficheiro de configuração 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

##### Mudar 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 ficheiro de configuração 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;

#### 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 &subversion; 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 colorido

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 ficheiro de configuração 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 clientes 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 &subversion;.

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 ficheiro de configuração, 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 &subversion; 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 1 050 megabytes, enquanto o código do 'kdebase' ocupa apenas cerca de 550 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 TechBase do &kde;. Basicamente, em vez de correr ``make` `-f` `Makefile.cvs``, depois o `configure`, depois o &make;, basta simplesmente correr o &cmake; e depois o &make;.

O &kdesvn-build; tem o suporte para o &cmake;. Algumas funcionalidades do &kdesvn-build; são realmente funcionalidades do sistema de compilação subjacente, incluindo 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, assim como a opção do-not-compile também é suportada para o &cmake; desde a versão 1.6.3 do &kdesvn-build;.

## Créditos e Licenças

Tradução de José Nuno Pires zepires@gmail.com

&underFDL;