
As aplicações do KDE estão divididas em diversos componentes, muitos dos quais poderão ser compilados pelo kdesrc-build. A compreensão desta organização ajudá-lo-á a seleccionar adequadamente os módulos de aplicações que deseja compilar.
No nível inferior vem a biblioteca Qt™, que é uma “plataforma” multi-plataforma e muito poderosa. O KDE baseia-se no Qt™ e algumas das bibliotecas fora do KDE que são necessárias por este também se baseiam no Qt™. O kdesrc-build poderá compilar o Qt™ ou usar o que já está instalado no seu sistema, caso seja uma versão recente o suficiente.
No topo do Qt™ estão as bibliotecas necessárias para o sistema KDE funcionar. Algumas destas bibliotecas não são consideradas como fazendo parte do KDE propriamente dito, devido à sua natureza genérica, mas são à mesma essenciais para a Plataforma do KDE. Estas bibliotecas costumavam estar reunidas sob um único módulo
kdesupport
.Nota
Desde a Plataforma do KDE 4.6, muitos desses módulos do 'kdesupport' estão a ser migrados para o arquivo de Git do KDE, ainda que continuem a não fazer parte da Plataforma.
Sobre essas bibliotecas essenciais, vem a Plataforma do KDE. Estas são as bibliotecas que são necessárias para que as aplicações do KDE funcionem. Todavia, não é fornecido um ambiente de trabalho completo com esta plataforma.
Para o kdesrc-build, a camada da Plataforma consiste nos módulos
kdelibs
,kdepimlibs
ekde-runtime
.No topo da Plataforma, vêm diversas coisas diferentes:
Aplicações de “terceiros”. Estas são aplicações que usam a Plataforma do KDE mas não são da autoria ou estão associadas ao projecto KDE.
Um ambiente e respectiva “área de trabalho” completos. Isto é o que os utilizadores normalmente vêem quando “se autenticarem no KDE”. Isto é fornecido pelo Ambiente do Plasma™, maioritariamente em
kde-workspace
.A Compilação de 'Software' do KDE (SC). Esta é uma colecção de aplicações úteis que vem incluída na Plataforma e no Ambiente de Trabalho Plasma™, agrupada em módulos individuais. Estes são os módulos que têm nomes que começam por
kde
. Por exemplo, okdepim
é um componente da Compilação de 'Software' que contém aplicações de e-mail, leitura de notícias, organização e calendários, etc., enquanto okdegames
contém uma colectânea de jogos de alta qualidade para lhe ocupar o tempo.Finalmente, existe uma colecção de aplicações (também agrupada em módulos) cujo desenvolvimento é suportado pelos recursos do KDE (como as traduções, o controlo de código, o registo de erros, etc.) mas que não é lançada pelo KDE ou considerada como parte da Compilação de 'Software'. Estes módulos são conhecidos como “Extragear” e têm nomes do tipo
extragear/network
. Como nokdesupport
, algumas dessas aplicações do Extragear estão a migrar para o arquivo de Git do KDE.
A selecção de qual dos módulos possíveis a compilar é controlada pelo ficheiro de configuração. Depois da secção global
, existe uma lista com os módulos a compilar, delimitada pelas linhas 'module ... end module'. Aparece um item de exemplo para um módulo em Exemplo 2.1, “Item de exemplo de módulo no ficheiro de configuração”.
Exemplo 2.1. Item de exemplo de módulo no ficheiro de configuração
module nome-módulo
# As opções deste módulo vão aqui, por exemplo:
make-options -j4 # Correr 4 compilações de cada vez
end module
Dica
É possível declarar um módulo sem opções. De facto, a maioria dos seus módulo serão provavelmente declarados desta forma.
O kdesrc-build só compila os módulos que tiver apresentado no seu ficheiro de configuração. Para além disso, os módulos são compilados pela ordem indicada no ficheiro de configuração. Por essa razão, deverá garantir que a ordem dos módulos no seu ficheiro de configuração é consistente com a organização indicada em “Organização do 'Software' do KDE”.
Existe um ficheiro de exemplo, que vem com o kdesrc-build, chamado kdesrc-buildrc-sample
. Recomenda-se que copie este ficheiro para um outro chamado ~/.kdesrc-buildrc
(Repare no ponto inicial à frente do 'kdesrc-buildrc'!). Depois disso, edite o ficheiro novo para ajustar as opções predefinidas a seu gosto. (Cada opção está descrita com mais detalhe no Capítulo 4, Configurar o kdesrc-build). Os módulos predefinidos deverão ser suficientes para garantir a instalação de um KDE relativamente completo; contudo, poderá remover muitos dos módulos que aparecem a seguir ao kdebase
, caso queira poupar espaço em disco ou tempo de compilação.
O kdesrc-build é normalmente capaz de adivinhar onde transferir o código-fonte para um dado módulo de forma bastante simples, usando a sua configuração do svn-server e o nome do módulo para criar um único URL do Subversion, que descreve exactamente de onde transferir o código-fonte.
Com a passagem para o Git, muitos módulos maiores do Subversion foram sub-divididos por seu turno no processo, não existindo garantia de como encontrar um módulo com base no seu módulo. Devido a isto, foi desenvolvido um conceito chamado “conjuntos de módulos” para o kdesrc-build 1.12.1.
Se usar um conjunto de módulos, poderá declarar rapidamente muitos módulos do Git para serem transferidos e compilados, como se tivesse definido uma declaração de módulo em separado para cada um. A opção repository é tratada de forma especial para definir de onde foi transferido cada módulo, sendo todas as outras opções existentes no conjunto de módulos copiadas para cada módulo gerado desta forma.
Exemplo 2.2. Usar os conjuntos de módulos
globalgit-repository-base
kde-git
kde:
end global moduleqt
# Opções removidas para resumir end module module-setkde-support-libs
repository
kde-git
use-modules
automoc
attica
akonadi
end module-set # Outros módulos porventura necessários... modulekdesupport
end module
Em Exemplo 2.2, “Usar os conjuntos de módulos”, aparece um breve conjunto de módulos. Quando o kdesrc-build encontrar este conjunto de módulos, irá actuar como se, para cada módulo indicado em use-modules
, fosse declarado um módulo individual com o seu repository
igual à opção repository
do conjunto, seguida do nome do módulo indicado.
Para além disso, poderá passar outras opções num conjunto de módulos, as quais são copiadas para os novos módulos que forem criados desta forma. Ao usar os conjuntos de módulos, é possível declarar rapidamente vários módulos do Git que se baseiam todos no mesmo URL de repositório. Para além disso, desde o kdesrc-build 1.13, é possível atribuir um nome aos conjuntos de módulos (como demonstrado no exemplo), o que lhe permite referenciar directamente o grupo inteiro de módulos a partir da linha de comandos.
Nota
Os conjuntos de módulos são usados no suporte para transferências de módulos a partir da base de dados de módulos do arquivo de Git do KDE para o KDE. Veja também em “Procurar automaticamente módulos da base de dados oficial do KDE”.
Os conjuntos de módulos usam as opções
git-repository-base |
use-modules |
Com a migração do código-fonte do KDE para se migrar para o git.kde.org, houve um crescimento explosivo no número de módulos (por exemplo, um único módulo do Subversion chamado kdegraphics
transforma-se em 16 módulos diferentes no Git).
Isto foi derivado principalmente por cada módulo do Git conter o histórico completo do projecto (isto desperdiça de facto menos espaço em disco do que acontece a maioria dos repositórios do KDE, dado que o Git é extremamente eficiente a gravar repositórios).
O KDE permite agrupar os repositórios do Git em colecções de módulos relacionados (p.eex., o 'kdegraphics'). Estes módulos poderão por sua vez ser agrupados (p.ex., Compilação de Software do KDE). O Git não reconhece estes agrupamentos, mas o kdesrc-build pode ser configurado para lidar com estes grupos.
A forma como isto é feito é através da utilização de conjuntos de módulos. Em vez de usar um repositório específico git://
ou o nome de um repositório criado pelo git-repository-base, é usado o nome de repositório especial “kde-projects
”.
O kdesrc-build irá reconhecer que o repositório kde-projects
precisa de tratamento especial e ajustar o processo de compilação em conformidade. Entre outras coisas, o kdesrc-build irá:
Obter a última base de dados de módulos do arquivo de Git do KDE.
Tentar procurar um módulo com o nome indicado na opção
use-modules
do conjunto de módulos.Para cada módulo que encontrar, o kdesrc-build irá ver se existe uma opção do repositório para esse módulo na base de dados. Se existir um repositório, o kdesrc-build usá-la-á automaticamente para transferir ou actualizar o código-fonte. Se não estiver definido nenhum, o kdesrc-build irá tratar desse módulo como um grupo, tentando incluir todos os repositórios de código do Git que encontrar nesse grupo.
Nota
Na base de dados actual, não só alguns grupos de módulos têm uma colecção de módulos, como também declaram o seu próprio repositório de Git. Nestas situações, o kdesrc-build irá preferir o repositório de Git do grupo em vez de incluir os repositórios dos filhos.
O seguinte exemplo demonstra como usar a base de dados de módulos do KDE para instalar a biblioteca multimédia Phonon.
module-setmedia-support
# Esta opção deverá ser 'kde-projects' para usar a base de dados de módulos.repository
kde-projects
# Esta opção escolhe quais os módulos a procurar na base de dados.use-modules
phonon/phonon
phonon-gstreamer
phonon-vlc
end module-set
Dica
O phonon/phonon
é usado porque (com a base de dados do projecto actual), o kdesrc-build teria de optar entre o grupo de projectos “phonon” ou o projecto individual “phonon”. De momento, o kdesrc-build iria escolher o primeiro, o qual iria compilar muitas mais infra-estruturas que as necessárias.
O exemplo seguinte será porventura mais realista e demonstra uma funcionalidade que só está disponível na base de dados de módulos do KDE: a compilação de todas as aplicações gráficas do KDE com apenas uma única declaração.
module-setnunca-tente-isto
# Esta opção deverá ser igual a 'kde-projects' para usar a base de dados de módulosrepository
kde-projects
# Esta opção escolhe os módulos a pesquisar na base de dados.use-modules
kdegraphics/libs
kdegraphics/*
end module-set
Existem duas capacidades importantes aqui demonstradas:
O kdesrc-build permite-lhe definir módulos descendentes de um dado módulo, sem ter de compilar o módulo-pai, usando a sintaxe
. De facto, é obrigatório neste caso, dado que o módulo de base, o 'kdegraphics', está marcado como inactivo, para que não seja compilado por acaso, em conjunto com os seus módulos-filhos. A indicação dos módulos descendentes permite ao kdesrc-build saltar os módulos inactivos.nome-módulo
/*O kdesrc-build também não irá adicionar um módulo indicado à lista de compilação mais que uma vez. Isto permite-lhe configurar manualmente o
kdegraphics/libs
para ser compilado em primeiro lugar, antes do resto dokdegraphics
, sem ter de tentar compilar okdegraphics/libs
duas vezes.
Nota
Convém apontar que o kdesrc-build irá tentar compilar os módulos pela ordem correcta (por exemplo, se só o kdegraphics/*
tiver sido incluído em cima), mas isso depende de manter as outras bases de dados actualizadas. Poderá fazer a coisa certa manualmente, se necessário, usando a técnica descrita acima.
Poderá decidir que gostaria de compilar todos os módulos de um dado agrupamento de módulos do KDE, excepto um dado programa.
Por exemplo, o grupo kdeutils
inclui um programa chamado kremotecontrol. Se o seu computador não tiver o 'hardware' adequado para receber os sinais enviados pelos comandos à distância, poderá optar por não transferir, compilar e instalar o kremotecontrol de cada vez que actualiza o kdeutils
.
Desde o kdesrc-build 1.16, poderá conseguir isto com a opção de configuração ignore-modules.
Exemplo 2.3. Exemplo para excluir um módulo do projecto KDE num grupo
module-setutils
repository
kde-projects
# Esta opção escolhe os módulos a pesquisar na base de dados.use-modules
kdeutils
# Esta opção "retira" os módulos dos módulos escolhidos pelo "use-modules" acima.ignore-modules
kremotecontrol
end module-set module-setgraphics
repository
kde-projects
# Esta opção escolhe os módulos a pesquisar na base de dados.use-modules
extragear/graphics
# Esta opção "retira" os módulos dos escolhidos acima pelo "use-modules". # Neste caso, *tanto* o 'extragear/graphics/kipi-plugins' como o # 'extragear/graphics/kipi-plugins/kipi-plugins-docs' são ignoradosignore-modules
extragear/graphics/kipi-plugins
end module-set