Auswahl und Organisation der Module

Organisation der KDE-Software

Die KDE-Software ist in verschiedene Komponenten aufgeteilt, die meisten können mit kdesrc-build erstellt werden. das Verständnis dieser Organisation hilft dabei, die gewünschten Module zum Erstellen richtig auszuwählen.

  1. Auf der untersten Ebene befindet sich die Qt™-Bibliothek, eine sehr leistungsfähige Bibliothek für mehrere Plattformen. KDE basiert auf Qt™, ebenso wie einige Bibliotheken außerhalb von KDE, die aber für KDE erforderlich sind. Mit kdesrc-build können Sie Qt™ erstellen oder die bereits auf Ihrem System installierte Version verwenden, wenn Sie aktuell genug ist.

  2. Auf Qt™ bauen weitere Bibliotheken auf, die für das Funktionen der KDE-Software erforderlich sind. Einige dieser Bibliotheken sind wegen des breiten Anwendungsbereichs nicht Bestandteil von KDE, aber trotzdem zwingend für die KDE-Plattform nötig. Diese Bibliotheken sind im Modul kdesupport zusammengefasst, gehören aber nicht zu den Frameworks-Bibliotheken.

  3. Zu diesen wichtigen Bibliotheken gehören die KDE-Frameworks, manchmal abgekürzt als KF5, die wesentliche Bibliotheken für den KDE Plasma-Desktop, KDE-Anwendungen und andere Software von Drittanbietern.

  4. Auf diesen Frameworks-Bibliotheken als Basis kommt dann Folgendes:

    • Programme anderer Anbieter. Diese Programme benutzen die KDE-Frameworks oder benötigen KDE-Plasma zur Ausführung, werden aber nicht vom KDE-Projekt entwickelt und haben auch keine Verbindung dazu.

    • Plasma, eine vollständige Arbeitsflächen-Umgebung. Das sehen Benutzer normalerweise, wenn Sie sich für KDE anmelden.

    • Die KDE Anwendungen. Dies ist eine Sammlung von nützlicher Software,die in der Plattform und der Plasma™ -Arbeitsfläche in einzelnen Modulgruppen enthalten ist, darunter Dienstprogramme wie Dolphin, Spiele wie KSudoku und Produktivitätssoftware, die von KDE wie z. B. Kontact.

    • Schließlich gibt es noch Softwaresammlung, die auch in Modulen zusammengefasst sind, deren Entwicklung durch die KDE-Infrastruktur (wie Übersetzung, Versionsverwaltung, Fehlerverfolgung usw.) unterstützt wird. Diese Programme werden aber unabhängig von den Anwendungen und Plasma veröffentlicht und sind nicht Bestandteil der Softwaresammlung. Diese Module zusammen werden Extragear genannt.

Auswahl der Module zum Erstellen

Die Auswahl der der zu erstellenden Module wird durch die Einrichtungsdatei gesteuert. Darin folgt nach dem Abschnitt global eine Liste der zu erstellenden Module, eingefasst durch die Zeilen „module“ ... „end module“. Ein Beispiel für einen Moduleintrag finden Sie in Beispiel 2.4, „Beispieleintrag für ein Modul in der Einrichtungsdatei“.

Beispiel 2.4. Beispieleintrag für ein Modul in der Einrichtungsdatei

module kdesrc-build-git
    # Optionen für dieses Modul werden hier eingetragen, zum Beispiel:
    repository kde:kdesrc-build
    make-options -j4 # Startet vier Compilerläufe gleichzeitig
end module

Anmerkung

n der Praxis wird dieses Module meist nicht direkt verwendet. Stattdessen werden die meisten Module über Modulgruppen angegeben, wie unten beschrieben.

Wenn Sie nur module-Einträge verwenden, baut kdesrc-build diese in der von Ihnen angegebenen Reihenfolge und versucht nicht, andere Repositories herunterzuladen, außer denen, die Sie direkt angeben.

Modulgruppen

Der KDE-Quellcode ist in eine große Anzahl von relativ kleinen Git-Repositories aufgeteilt. Um die Verwaltung der großen Anzahl von Repositories zu erleichtern, die an einer sinnvollen KDE-basierten Installation dazugehören, unterstützt kdesrc-build die Gruppierung mehrerer Module und behandelt sie als Modulgruppen.

Das grundlegende Konzept der Modulgruppen

Durch Verwendung von Modulgruppen können Sie schnell viele Git-Module deklarieren, die heruntergeladen und erstellt werden sollen, ohne jedes Modul einzeln eintragen zu müssen. Mit der Option repository wird automatisch ermittelt, wo jedes einzelne Modul heruntergeladen werden kann und jede weitere Option der Modulgruppe wird auch für jedes auf diese Weise erzeugte Modul kopiert und angewendet.

Beispiel 2.5. Modulgruppen verwenden

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

module qt
    # Optionen entfernt, um das Beispiel kurz zu halten
end module

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

# Andere Module soweit erforderlich ..
module kdesupport
end module

In Beispiel 2.5, „Modulgruppen verwenden“ wird ein Beispiel einer einfachen Modulgruppe gezeigt. Wenn kdesrc-build eine Modulgruppe bearbeitet, wird für jedes in der Option use-modules angegebene Modul eine einzelne Moduldefinition aus dem Wert der Option repository der Modulgruppe und dem angegebenen Namen des Moduls erstellt.

Zusätzlich können noch weitere Optionen für eine Modulgruppe gesetzt werden. Diese Optionen werden dann automatisch in jede einzelne Moduldefinition kopiert. Mit Modulgruppen ist es einfach, viele Git-Module zu deklarieren, die alle auf der gleichen Archiv-URL basieren. Zusätzlich ist es auch möglich, für Modulgruppen Aliasnamen wie im Beispiel zu benutzen. Mit einem Alias können Sie eine gesamte Modulgruppe auf der Befehlszeile angeben.

Besondere Unterstützung für KDE-Modulgruppen

Die bisher beschriebene Unterstützung für Modulgruppen gilt allgemein für alle Git-basierten Module. Für die KDE-Repositories enthält kdesrc-build zusätzliche Funktionen, um die Arbeit für Benutzer und Entwickler zu erleichtern. Diese Unterstützung wird durch die Angabe von kde-projects für die Option repository für diese Modulgruppen aktiviert.

kdesrc-build erstellt normalerweise nur die Module in der Reihenfolge, wie Sie in Ihrer Einrichtungsdatei angegeben sind. Aber mit einer Modulgruppe kde-projects kann kdesrc-build die Auflösung von Abhängigkeiten von KDE-spezifischen Modulen durchführen und darüber hinaus automatisch Module in den Build einbeziehen, auch wenn diese nur indirekt angegeben sind.

Beispiel 2.6. „kde-projects“-Modulgruppen verwenden

# Nur juk aus kde/kdemultimedia/juk)
module-set juk-set
    repository kde-projects
    use-modules juk
end module-set

# Alle Module in kde/multimedia/*, einschließlich juk,
# aber keine anderen Abhängigkeiten
module-set multimedia-set
    repository kde-projects
    use-modules kde/multimedia
end module-set

# Alle Module in kde/multimedia/* und alle kde-projects-
# Abhängigkeiten für kde/kdemultimedia
module-set multimedia-deps-set
    repository kde-projects
    use-modules kde/multimedia
    include-dependencies true
end module-set

# Alle Module, die aus diesen drei Modulgruppen generiert wurden, erhalten automatisch
# die richtige Reihenfolge der Abhängigkeiten, unabhängig von den Einstellungen für include-dependencies

Tipp

Diese Modulgruppen kde-projects sind die wichtigste Methode, die Module zum Erstellen zu deklarieren.

Alle Modulgruppen verwenden die Optionen repository und use-modules. Die Modulgruppe kde-projects habt einen vordefinierten Wert für die Option repository, aber andere Arten von Modulgruppen verwenden ebenfalls die Option git-repository-base.

Die offizielle KDE-Moduldatenbank

Die Git-Repositories von KDE ermöglichen die Gruppierung verwandter Git-Module z. B. kdegraphics. Git erkennt diese Gruppierungen nicht, aber kdesrc-build kann diese Gruppen durch Modulgruppen mit einer Option repository vom Wert kde-projects korrekt verarbeiten.

kdesrc-build erkennt, dass das kde-projects-Repositories besonders bearbeitet werden müssen und passt den Erstellungsprozess dafür an. Unter anderem werden folgende Schritte ausgeführt:

  • Herunterladen der neuesten Moduldatenbank vom KDE-Git-Archiv.

  • Suche nach einem Modul mit dem in der Option use-modules angegebenen Namen in dieser Datenbank.

  • Für jedes gefundene Modul sucht kdesrc-build das entsprechende Repository in der Datenbank, basierend auf der Einstellung Branch-group. Wenn ein Repository existiert und der Branch aktiv ist, verwendet ihn kdesrc-build automatisch, um den Quellcode herunterzuladen oder zu aktualisieren.

Anmerkung

In der aktuellen Datenbank bestehen einige Modulgruppen nicht nur aus einer Sammlung von Modulen, sondern deklarieren auch ein eigenes Git-Archiv. In diesem Fall wird aktuell des Git-Archiv der Gruppe anstelle der darin enthaltenen Archive verarbeitet.

Das folgende Beispiel zeigt, wie die KDE-Moduldatenbank verwendet werden kann, um die Phonon-Multimediabibliothek zu installieren.

module-set media-support
    # Als Option muss kde-projects angegeben werden, damit die Moduldatenbank verwendet wird.
    repository kde-projects

    # Diese Option bestimmt, nach welchem Modul in der Datenbank gesucht wird.
    use-modules phonon/phonon phonon-gstreamer phonon-vlc
end module-set

Tipp

Hier wird phonon/phonon mit der aktuellen Projektdatenbank verwendet, um zwischen der Gruppe von Projekten mit dem Namen phonon und einzelnen Projekten mit diesem Namen zu unterscheiden. In der aktuellen Version von kdesrc-build wird die erste Variante benutzt, aber dann werden viel mehr Bacḱends als nötig erstellt.

Das folgende Beispiel ist wahrscheinlich realistischer und zeigt eine Funktion, die nur für die KDE-Moduldatenbank verfügbar ist: Erstellen aller KDE-Grafikprogramme mit einer Deklaration.

module-set kdegraphics
    # Als option muss kde-projects für die Moduldatenbank verwendet werden.
    repository kde-projects

    # Diese Option legt fest, welche Module in der Datenbank gesucht werden sollen.
    use-modules kdegraphics/libs kdegraphics/*
end module-set

Hier werden zwei wichtige Fähigkeiten gezeigt:

  1. Mit kdesrc-build können Sie Module angeben, die von einem angegebenen Modul abstammen, ohne das übergeordnete Modul selbst zu erstellen, indem Sie die Syntax module-name/* verwenden. In diesem Beispiel ist das sogar erforderlich, das das Modul kdegraphics als inaktiv markiert ist, so dass es nicht unbeabsichtigt mit allen darin enthaltenen Module erstellt wird. Mit der Angabe von untergeordneten Modulen, kann kdesrc-build dieses deaktivierte Modul übergehen.

  2. kdesrc-build fügt außerdem auch mehrfach angegebene Module nur einmal in die Erstellungsliste ein. Dadurch kann kdegraphics/libs manuall als erstes Modul zum Erstellen vor kdegraphics angegeben werden, ohne dass kdegraphics/libs zweimal erstellt wird. Dies war früher für die korrekte Behandlung von Abhängigkeiten erforderlich und bleibt heute eine Ausweichmöglichkeit für den Fall, dass in der KDE-Projektdatenbank Metadaten zu Abhängigkeiten fehlen.

KDE-Projektmodule ausfiltern

Vielleicht möchten Sie alle Programme in einer KDE-Modulgruppe mit Ausnahme eines bestimmten Programms erstellen.

In der Gruppe kdeutils gibt es zum Beispiel ein Programm mit dem Namen kremotecontrol. Hat Ihr Rechner nicht die passende Hardware, um Signale von Fernsteuerungen zu empfangen, werden Sie möglicherweise darauf verzichten wollen, jedesmal kremotecontrol herunterzuladen, zu erstellen und zu installieren, wenn Sie kdeutils aktualisieren.

Dies erreichen Sie durch die Option ignore-modules. Auf der Befehlszeile bewirkt die Option --ignore-modules dasselbe, ist aber praktischer, um ein Modul nur einmal herauszufiltern.

Beispiel 2.7. Beispiel für das Ignorieren eines KDE-Projektmoduls aus einer Gruppe

module-set utils
    repository kde-projects

    # Diese Option bestimmt, nach welchem Modul in der Datenbank gesucht wird.
    use-modules kdeutils

    # Diese Option legt fest, welche der mit use-modules oben gewählten Module ausgelassen wird.
    ignore-modules kremotecontrol
 end module-set

module-set graphics
repository kde-projects

# Diese Option bestimmt, nach welchem Modul in der Datenbank gesucht wird.
use-modules extragear/graphics

# Diese Option legt fest, welche der mit use-modules oben gewählten Module ausgelassen wird.
# In diesem Fall werden *sowohl* extragear/graphics/kipi-plugins und
# extragear/graphics/kipi-plugins/kipi-plugins-docs ignoriert
ignore-modules extragear/graphics/kipi-plugins
end module-set