Apêndice A. Organização dos módulos e do código-fonte do KDE

O Módulo

O KDE agrupa os seus programas em módulos de diversos tamanhos. Isto era apenas um agrupamento lógico de alguns módulos grandes, mas com a introdução dos repositórios de código-fonte baseados no Git, estes grandes módulos foram por sua vez divididos em muitos módulos mais pequenos.

O kdesrc-build também usa este conceito de módulos. Em resumo, um módulo é um agrupamento de código que poderá ser transferido, compilado, testado e instalado.

Módulos individuais

É fácil indicar ao kdesrc-build para compilar um único módulo. Na lista a seguir está um exemplo de como deveria ser uma declaração de um módulo baseado em Subversion no arquivo de configuração.

module kdefoo
    cmake-options -DCMAKE_BUILD_TYPE=Debug
end module

Dica

Este é um módulo baseado no Subversion, uma vez que não usa uma opção repository. Do mesmo modo, a opção cmake-options aparece apenas como exemplo, não sendo obrigatória.

Grupos de módulos relacionados

Agora, a maioria dos módulos de código do KDE são baseados no Git do KDE, estando normalmente reunidos em grupos de módulos.

Deste modo, o kdesrc-build também suporta grupos de módulos, usando os conjuntos de módulos. Por exemplo:

module-set base-modules
    repository kde-projects
    use-modules kde-runtime kde-workspace kde-baseapps
end module-set

Dica

Você poderá deixar o nome do conjunto de módulos (módulos-base neste caso) vazio se o desejar. Esta opção repository indica ao kdesrc-build de onde transferir o código, mas poderá também usar uma URL git://.

Uma funcionalidade especial do repository kde-projects é que o kdesrc-build irá incluir automaticamente todos os módulos do Git que estiverem agrupados sob os módulos que apresentar (na base de dados do Projeto KDE).

Grupos de ramificações do módulo

Levando adiante o conceito de grupo de módulos, os desenvolvedores do KDE descobriram eventualmente que a sincronização dos nomes das ramificações Git por uma grande quantidade de repositórios estava ficando mais difícil, especialmente durante o esforço de desenvolvimento das novo KDE Frameworks para a Qt™ 5.

Assim, o conceito de grupos de ramificações foi desenvolvido de modo a permitir aos usuários e desenvolvedores selecionar um de alguns grupos, permitindo ao script selecionar automaticamente a ramificação Git apropriada.

O kdesrc-build tem suporte a essa funcionalidade desde a versão 1.16-pre2, através da opção branch-group.

Exemplo A.1. Exemplo de uso do branch-group

O branch-group pode ser usado no arquivo de configuração da seguinte forma:

global
    # Selecionar o KDE Frameworks 5 e outros aplicativos baseados na Qt5
    branch-group kf5-qt5

    # Outras opções globais aqui...
end global

module-set
    # O branch-group só funciona para o kde-projects
    repository kde-projects

    # O branch-group herda da definição global, mas pode ser definido aqui.

    use-modules kdelibs kde-workspace
end module-set

# A ramificação kdelibs será a "frameworks"
# A ramificação kde-workspace será a "master" (em agosto de 2013)

Nesse caso, o mesmo branch-group devolve diferentes nomes de ramificações para cada módulo Git.


Esta funcionalidade requer a manutenção de alguns dados por parte dos desenvolvedores do KDE em um repositório Git chamado kde-build-metadata. Contudo, esse módulo será incluído automaticamente pelo kdesrc-build (ainda que você possa vê-lo aparecer no resultado do script).

Dica

Os módulos do KDE que não têm um nome de ramificação definido para o grupo de ramificações que você escolher terão, por padrão, um nome de ramificação apropriado, como se não tivesse indicado o branch-group em tudo.