Bijlage A. De organisatie van de modules en broncode van KDE

De Module

KDE groepeert de software in modules van verschillende grootte. Oorspronkelijk was dit losjes gegroepeerd in een paar grote modules, maar met de introductie van de op Git-gebaseerde broncoderepositories, zijn deze grote modules verder opgesplitst in vele kleinere modules.

Ook kdesrc-build gebruikt dit concept van modules. In essentie, is een module een groepering van code die kan worden gedownload, gebouwd, getest, en geïnstalleerd.

Individuele modules

Het is makkelijk om het zo in te stellen dat kdesrc-build een enkele module bouwt. De volgende lijst is een voorbeeld van hoe een declaratie voor een op Subversion-gebaseerde module er uit zou zien in het configuratiebestand.

module kdefoo
    cmake-options -DCMAKE_BUILD_TYPE=Debug
end module

Tip

Dit is een op Subversion-gebaseerde module omdat het geen repository-optie gebruikt. Ook is de cmake-options-optie alleen als voorbeeld gegeven, het is niet vereist.

Groepen van gerelateerde modulen

Op dit moment zijn de meeste KDE broncodemodules gebaseerd op Git en worden gewoonlijk gecombineerd in groepen van modules.

kdesrc-build ondersteunt daarom ook groepen modules, met module sets. Een voorbeeld:

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

Tip

U kunt de module set naam (base-modules in dit geval) leeg laten als u dat wilt. Deze instelling repository geeft aan waar kdesrc-build de broncode kan downloaden, maar u kunt ook een git:// URL gebruiken.

Een speciale functionaliteit van de repository kde-projects is dat kdesrc-build automatisch alle Git modules die in de door u opgegeven modules (in the KDE Project database) zijn gegroepeerd, zal downloaden.

Module branch groups

Het concept van een groep van modules verder uitbouwent, merkten de KDE-ontwikkelaars uiteindelijk dat het synchroniseren van namen van de Git branches over een groot aantal repositories steeds moeilijker werd, met name tijdens de ontwikkeling van de nieuwe KDE Frameworks voor Qt™ 5.

Daarom is het concept branch groups ontwikkeld, om gebruikers en ontwikkelaars in staat te stellen een of alleen een paar groepen te selecteren en het script toestaan om automatisch de juiste Git-branch te selecteren.

kdesrc-build ondersteunt deze functie vanaf versie 1.16-pre2, via de optie branch-group.

Voorbeeld A.1. Voorbeeld van gebruikt van een branch-group

branch-group kunt u in het configuratiebestand als volgt gebruiken:

global
    # Selecteert KDE Frameworks 5 aen andere Qt5-gebaseerde apps
    branch-group kf5-qt5

    # Andere global opties hier ...
end global

module-set
    # branch-groep werkt alleen voor kde-projects
    repository kde-projects

    # branch-groep is doorgegeven van de set globally, maar kan ook
    # hier gespecificeerd.

    use-modules kdelibs kde-workspace
end module-set

# kdelibs's branch zal zijn "frameworks"
# kde-workspace's branch zal zijn "master" (vanaf Augustus 2013)

In dit geval geeft dezelfde branch-group voor elke Git-module verschillende branch-namen.


Voor deze functionaliteit moeten de KDE-ontwikkelaars in een Git repository genaamd kde-build-metadata wat data bijhouden, maar deze module zal automatisch door kdesrc-build (u kunt het zien verschijnen in de uitvoer van het script) worden meegeleverd.

Tip

KDE modules die nog geen naam hebben voor de branch group die u heeft gekozen, zullen standaard een toepasselijke naam voor de branch krijgen, als u nog geen branch-group heeft opgegeven.