É possível compilar apenas partes de um único módulo do KDE. Por exemplo, você pode querer compilar apenas um programa de um módulo. O kdesrc-build possui funcionalidades para simplificar isto. Existem várias formas complementares de fazer esta tarefa.
Esta será talvez a melhor forma de fazer isto. Quando funciona, lhe poupará tempo de transferência e espaço em disco. O que acontece é que o kdesrc-build irá baixar apenas as partes do módulo que indicar. Isto é feito com a opção checkout-only para um determinado módulo, que irá indicar uma lista das pastas a baixar.
Dica
Se você ainda não souber o que vai transferir de um determinado 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 KSystemLog do 'kdeadmin', você poderá usar o checkout-only da seguinte forma:
modulekdeadmin
checkout-onlykuser ksystemlog
end module
Importante
As pastas serão compiladas na ordem que forem indicadas na opção. Se uma das pastas necessitar de alguma coisa além do módulo para compilar, então você terá que garantir que ambas se encontram na linha checkout-only e que a dependência necessária venha antes da pasta que necessita dela.
Da mesma forma, algumas vezes um aplicativo poderá necessitar de outras pastas e isso pode ser difícil de descobrir. Isto poderá ser solucionado através de tentativa e erro, adicionando constantemente pastas à opção para descobrir qual é a necessária.Esta opção depende do suporte no sistema de compilação do módulo, só sendo útil para os módulos que sejam coleções de aplicações individuais.
Uma nota final sobre esta opção: Se você alterar esta opção deverá usar o kdesrc-build
para garantir que o módulo é configurado de novo convenientemente. Além disso, o kdesrc-build nunca irá remover os arquivos existentes, se você retirar o número de pastas da sua opção checkout-only ou adicionar a opção a um módulo que já foi extraído.--refresh-build
módulo
Em vez de restringir o que é baixado, é possível transferir tudo mas fazer com que o sistema de compilação deixe de fora algumas pastas ao compilar. Isto pode ser útil se uma pasta estiver sempre invalidando a compilação e for desnecessária para o resto do módulo.
Isto é controlado com a opção do-not-compile. Funciona de forma semelhante à opção checkout-only descrita acima, e é apenas uma lista das pastas que não deverão ser compiladas.
Importante
Da mesma forma que no checkout-only, esta opção necessita pelo menos que o sistema de compilação do módulo seja reconfigurado após a alteração. Isto é feito com o comando kdesrc-build
. --reconfigure
módulo
Para remover a pasta python
do processo de compilação do 'kdebindings':
modulekdebindings
do-not-compilepython
end module
Nota
Esta função depende de algumas convenções normais, usadas na maioria dos módulos do KDE. Assim, ela poderá não funcionar para todos os programas.
O Subversion suporta o gerenciamento do histórico do código do KDE. O KDE usa esse suporte para criar ramificações ('branches') para desenvolvimento e para marcar o repositório com marcas ('tags'), sempre que lança uma nova versão.
Por exemplo, os programadores do KMail poderão estar trabalhando numa nova funcionalidade, numa ramificação diferente, para evitar corromper a versão que está em uso pela maioria dos programadores. Esta ramificação tem desenvolvimentos em curso nela, mesmo quando a ramificação principal (chamada de /trunk) também possua desenvolvimentos em curso nela.
Uma marca, por outro lado, é uma imagem do repositório de código numa determinada posição no tempo. Isto é usado pela equipe de administração do KDE para marcar uma versão do código adequada para lançamento, permitindo ainda aos programadores trabalharem no código.
No Subversion, não existem diferenças entre ramificações, marcas ou o 'trunk' no código. É apenas uma convenção usada pelos programadores. Isso torna difícil suportar convenientemente as ramificações e marcas no kdesrc-build. Contudo, existem algumas coisas que poderão ser feitas.
O suporte para ramificações e marcas é tratado por um conjunto de opções, que vão desde um simples pedido de uma versão até um URL específico de transferência, para os usuários mais avançados.
O método mais simples é usar as opções branch e tag. Você poderá usar a opção em conjunto com o nome da marca ou ramificação de um módulo, para que o kdesrc-build determine o local apropriado, dentro do repositório do KDE, de onde deve baixar. Na maioria dos módulos do KDE, isto funciona muito bem.
Para baixar o 'kdelibs' do KDE 4.6 (que é simplesmente conhecido pela ramificação '4.6'):
module kdelibs
branch 4.6
# outras opções...
end module
Ou, para baixar o 'kdemultimedia' como foi lançado no KDE 4.6.1:
module kdemultimedia
tag 4.6.1
# outras opções...
end module
Dica
Você poderá definir aqui um valor global para o 'branch'. Mas, se o fizer, não se esqueça de indicar uma ramificação diferente para os módulos que não devem usar a ramificação global!
O kdesrc-build suporta duas opções para as situações em que o branch e o tag adivinham o local de forma incorreta: o module-base-path e o override-url.
O module-base-path é usado para ajudar o kdesrc-build a preencher a parte faltante da localização de um módulo. No repositório do KDE, todos os locais possuem o formato
raizSvn/caminho-módulo-base/
. Normalmente, o kdesrc-build pode descobrir a parte intermediária apropriada por si só. Quando não conseguir, você poderá usar o 'caminho-módulo-base' ou module-base-path da seguinte forma:nome-módulo
module kdesupport # o 'kdesupport' suporta várias marcas para organizar facilmente as # aplicações necessárias para uma determinada versão da plataforma do KDE. module-base-path tags/kdesupport-do-4.5 end module
Isto deverá fazer com que o kdesrc-build baixe o 'kdesupport' de (neste exemplo)
svn://anonsvn.kde.org/home/kde/
.tags/kdesupport-for-4.5
Dica
Nas versões anteriores do kdesrc-build, o module-base-path era tratado de forma diferente. Se você tiver problemas ao usar uma definição antiga do 'module-base-path', talvez deva confirmar se a localização atual é a mesma que o kdesrc-build está esperando, usando a opção --pretend.
A opção override-url, por outro lado, necessita que você indique o local exato de onde baixar. Contudo, isto permite-lhe transferir de locais que versões anteriores do kdesrc-build não teriam chances de baixar. Atualmente, a opção module-base-path deve ser suficiente para qualquer URL de fonte de Subversion.
Importante
O kdesrc-build não irá mexer ou corrigir o valor que indicar no kdesrc-build, por isso, se mudar a sua configuração do svn-server, também terá que atualizar isto.
O kdesrc-build costumava incluir recursos para automaticamente tentar recompilar o módulo após uma falha (uma vez que esta nova tentativa poderia funcionar, devido a falhas no sistema de compilação naquela época). Graças a mudança para o CMake, o sistema de compilação não sofre mais destas falhas, e assim o kdesrc-build não tentará compilar um módulo mais de uma vez. Existem situações onde o kdesrc-build automaticamente executará uma recompilação:
Se você mudar o configure-flags ou o cmake-options para um módulo, então o kdesrc-build detectará e automaticamente re-executará o 'configure' ou o 'cmake' para aquele módulo.
Se o sistema de compilação não existir (mesmo se o kdesrc-build não o removeu) então o kdesrc-build automaticamente irá recriá-lo. Isto é útil para permitir a execução de um --refresh-build completo para um módulo específico sem ter que executá-lo em outros módulos.
Se você tiver feito alterações em alguma opção de um módulo, ou se o código-fonte do módulo mudar de uma forma que o kdesrc-build não reconheça, você poderá ter que recompilar o módulo manualmente.
Você poderá se isto executando simplesmente o kdesrc-build
. --refresh-build
módulo
Se você quiser que o kdesrc-build recompile de forma automática o módulo, durante a próxima atualização normal, você poderá criar um arquivo especial. Cada módulo possui uma pasta de compilação. Se você criar um arquivo chamado .refresh-me
na pasta de compilação de um módulo, o kdesrc-build irá reconstruir o módulo da próxima vez que o processo de compilação rodar, mesmo que fosse executar normalmente a compilação incremental.
Dica
Por padrão, a pasta de compilação é a ~/kdesrc/build/
. Se você mudar a opção build-dir, então use essa em vez da módulo
/~/kdesrc/build
.
Recompilar usando o .refresh-me
para o módulo kdelibs
:
%
touch
~/kdesrc/build/
kdelibs
/.refresh-me%
kdesrc-build
Normalmente, o kdesrc-build usa o ambiente que está presente quando inicia e executa os programas para atualizar e compilar. Isto é útil para quando você está rodando o kdesrc-build a partir da linha de comando.
Contudo, você poderá desejar alterar a configuração das variáveis de ambiente para as quais o kdesrc-build não possui uma opção direta. (Por exemplo, para configurar qualquer variável de ambiente ao rodar o kdesrc-build em um agendador de tarefas como o Cron) Isto é possível com a opção set-env.
Ao contrário da maioria das opções, ela poderá ser definida mais de uma vez e aceita dois itens separados por um espaço. O primeiro item é o nome da variável de ambiente a definir e o resto da linha é o valor.
Configura a
para todos os módulos:DISTRO
=BSD
global set-envDISTRO
BSD
end global
Você poderá indicar ao kdesrc-build para começar a compilar a partir de um módulo diferente daquele onde iria prosseguir. Isto poderá ser útil quando falhou um conjunto de módulos ou se tiver cancelado a execução de uma compilação no meio. Você poderá controlar isto com as opões --resume-from e --resume-after.
Nota
As versões mais antigas do kdesrc-build iriam saltar a atualização do código ao prosseguir com uma compilação. Isto já não é mais feito por padrão, mas você ainda poderá continuar a usar a opção da linha de comando --no-src
para saltar a atualização do código.
Prosseguir a compilação começando no 'kdebase':
%
kdesrc-build
--resume-from=
kdebase
Prosseguir a compilação começando após o 'kdebase' (no caso de você corrigir manualmente um problema e ter instalado o módulo você mesmo):
%
kdesrc-build
--resume-after=
kdebase
Se a última compilação do kdesrc-build terminou com erro, você poderá também usar a opção --resume da linha de comando, a qual prossegue com a última compilação a partir do módulo que falhou. As atualizações de código e metadados também são ignoradas (porém, se precisar delas, normalmente é melhor usar a opção --resume-from em alternativa).
Como acontece quando deseja prosseguir com a compilação de um módulo, você poderá optar em alternativa por atualizar e compilar tudo normalmente, só que ignorando um conjunto de módulos.
Você poderá fazer isso com a opção --ignore-modules. Esta opção diz ao kdesrc-build para ignorar todos os módulos da linha de comando, ao efetuar a atualização e a compilação.
Ignorar o extragear/multimedia e o kdereview numa execução completa:
%
kdesrc-build
--ignore-modules
extragear/multimedia kdereview
Você poderá alterar a configuração das opções lidas do arquivo de configuração diretamente a partir da linha de comando. Esta alteração irá substituir a configuração do arquivo, mas é apenas temporária. Só terá efeito enquanto ainda estiver presente na linha de comando.
O kdesrc-build permite-lhe alterar as opções com nome do tipo nome-opção
passando um argumento na linha de comando com o formato
. O kdesrc-build irá reconhecer se não souber qual a opção, e irá procurar o nome na sua lista de nomes de opções. Se não reconhecer o nome, ele irá avisá-lo, caso contrário irá recordar o valor que definiu e substituir o valor do arquivo de configuração.--
nome-opção
=valor
Configurar o source-dir como /dev/null
para fins de teste:
%
kdesrc-build
--pretend
--
source-dir
=/dev/null
Também é possível alterar as opções apenas para um módulo específico. A sintaxe é semelhante: --módulo
,nome-opção
=valor
.
Esta alteração substitui qualquer opção duplicada do módulo encontrado no arquivo de configuração e só se aplica enquanto a opção for passada na linha de comando.
Usando uma pasta de compilação diferente para o módulo 'kdeedu':
%
kdesrc-build
--
kdeedu
,build-dir
=temp-build