Organização e seleção dos módulos

Organização do Software do KDE

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 irá ajudá-lo a selecionar adequadamente os módulos de aplicações que deseja compilar.

  1. No nível inferior vem a biblioteca Qt™ da Digia, que é uma biblioteca multi-plataforma e muito poderosa. O KDE baseia-se no Qt™ e algumas das bibliotecas fora do KDE que são necessárias 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.

  2. No topo do Qt™ estão as bibliotecas necessárias para o sistema KDE funcionar. Algumas destas bibliotecas não são consideradas como parte do KDE propriamente dito, devido à sua natureza genérica, mas são ainda 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, muitas bibliotecas do módulo do 'kdesupport' estão sendo migradas para o git.kde.org, ainda que continuem a não fazer parte da Plataforma.

  3. 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 e kde-runtime.

  4. 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 projeto KDE.

    • Um ambiente e respectiva área de trabalho completos. Isto é o que os usuários normalmente veem quando se autenticarem no KDE. Isto é fornecido pelo Ambiente do Plasma™, majoritariamente em kde-workspace.

    • A Compilação de Software do KDE (SC). Esta é uma coleçã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, o kdepim é 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 o kdegames contém uma coletânea de jogos de alta qualidade para lhe ocupar o tempo.

    • Finalmente, existe uma coleção de aplicações (também agrupada em módulos) cujo desenvolvimento é suportado pelos recursos do KDE (como as traduções, o controle de código, o registro 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 no kdesupport, algumas dessas aplicações do Extragear estão migrando para o git.kde.org.

Selecionar os módulos a compilar

A seleção de qual dos módulos possíveis a compilar é controlada pelo arquivo de configuração. Depois da seçã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 arquivo de configuração”.

Exemplo 2.1. Item de exemplo de módulo no arquivo de configuração

module nome-módulo
    # As opções deste módulo vão aqui, por exemplo:
    make-options -j4 # Rodar 4 compilações de cada vez
end module

Dica

É possível declarar um módulo sem opções. De fato, a maioria dos seus módulos serão provavelmente declarados desta forma.

O kdesrc-build só compila os módulos que tiver apresentado no seu arquivo de configuração. Além disso, os módulos são compilados na ordem indicada no arquivo de configuração. Por essa razão, você deverá certificar-se de que a ordem dos módulos no seu arquivo de configuração é consistente com a organização indicada em “Organização do Software do KDE”.

Existe um arquivo de exemplo, que vem com o kdesrc-build, chamado kdesrc-buildrc-sample. Recomenda-se que copie este arquivo para um outro chamado ~/.kdesrc-buildrc (Repare no ponto inicial à frente do 'kdesrc-buildrc'!). Depois disso, edite o arquivo novo para ajustar as opções pré-definidas a seu gosto. (Cada opção está descrita com mais detalhes no Capítulo 4, Configurando o kdesrc-build). Os módulos padrão deverão ser suficientes para garantir a instalação de um KDE relativamente completo; contudo, poderá remover muitos dos módulos que aparecem após o kdebase, caso queira poupar espaço em disco ou tempo de compilação.

Conjuntos de Módulos

O kdesrc-build é normalmente capaz de adivinhar onde transferir o código-fonte para um determinado módulo de forma bastante simples, usando a sua configuração do svn-server e o nome do módulo para criar uma única URL do Subversion, que descreve exatamente de onde transferir o código-fonte.

Com a passagem para o Git, muitos módulos maiores do Subversion foram subdivididos 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

global
    git-repository-base kde-git kde:
end global

module qt
    # Opções removidas para resumir
end module

module-set kde-support-libs
    repository kde-git
    use-modules automoc attica akonadi
end module-set

# Outros módulos conforme necessário...
module kdesupport
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á atuar 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.

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 na mesma URL de repositório. 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 diretamente o grupo inteiro de módulos a partir da linha de comando.

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 projects.kde.org 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

Procurar automaticamente módulos da base de dados oficial do KDE

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 feito principalmente por cada módulo do Git conter o histórico completo do projeto (isto desperdiça de fato menos espaço em disco do que acontece na maioria dos repositórios do KDE, uma vez que o Git é extremamente eficiente gravando repositórios).

O KDE permite agrupar os repositórios do Git em coleções de módulos relacionados (p.ex., 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 projects.kde.org.

  • 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 irá usá-la automaticamente para transferir ou atualizar 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 atual, não só alguns grupos de módulos têm uma coleçã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-set media-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 procurar na base de dados.
    use-modules phonon/phonon phonon-gstreamer phonon-vlc
end module-set

Dica

O phonon/phonon é usado uma vez que (com o projeto de banco de dados atual) o kdesrc-build caso contrário teria que decidir entre o grupo de projetos chamado phonon ou o projeto individual chamado phonon. Atualmente, o kdesrc-build pegaria o mais antigo, que compilaria mas infraestruturas do que o necessário.

O exemplo a seguir será talvez mais realista e demonstra uma funcionalidade que só está disponível na base de dados de módulos do KDE: a compilação de todos os aplicativos gráficos do KDE com apenas uma única declaração.

module-set kdegraphics
    # Esta opção deverá ser igual a 'kde-projects' para usar a base de dados de módulos
    repository 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 importantes habilidades demonstradas aqui:

  1. O kdesrc-build permite que você especifique módulos que são descendentes de um determinado módulo, sem compilar o módulo pai, usando a sintaxe nome-módulo/*. Isto é necessário de fato neste caso uma vez que o módulo base, o kdegraphics, está marcado como inativo, de modo que ele não seja acidentalmente compilado com seus módulos-filho. Especificar os módulos descendentes permite ao kdesrc-build pular o módulo desativado.

  2. O kdesrc-build também não adicionará um módulo fornecido a uma lista de compilação mais de uma vez. Isto nos permite definir manualmente que okdegraphics/libs seja compilado primeiro, antes do restante do kdegraphics, sem que o kdegraphics/libs seja compilado duas vezes.

Nota

Convém apontar que o kdesrc-build irá tentar compilar os módulos pela ordem correta (por exemplo, se apenas o kdegraphics/* tiver sido incluído acima), mas isso depende da atualização de outros bancos de dados. Se necessário, você pode listar os módulos na ordem correta manualmente usando a técnica descrita acima.

Filtrar módulos do projeto do KDE

Você pode decidir que gostaria de compilar todos os programas dentro de um agrupamento de módulos do KDE, exceto um determinado 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 por controles remotos, você pode optar por não baixar, compilar e instalar o kremotecontrol todas as vezes que atualizar o kdeutils.

Desde o kdesrc-build 1.16, você pode conseguir isto usando a opção de configuração ignore-modules.

Exemplo 2.3. Exemplo para ignorar um módulo de um grupo do projeto KDE

module-set utils
    repository kde-projects

    # Esta opção escolhe quais os módulos procurar no banco de dados.
    use-modules kdeutils
    # Esta opção "subtrai" os módulos escolhidos pela opção 'use-modules' acima.
    ignore-modules  kremotecontrol
end module-set

module-set graphics
    repository kde-projects

    # Esta opção escolhe os módulos a pesquisar no banco de dados.
    use-modules extragear/graphics

    # Esta opção "retira" os módulos dos escolhidos acima pelo 'use-modules'.
    # Nesse caso, *tanto* o 'extragear/graphics/kipi-plugins' quanto o
    # extragear/graphics/kipi-plugins/kipi-plugins-docs são ignorados
    ignore-modules extragear/graphics/kipi-plugins
end module-set