Weitergehende Funktionen

Teile eines Moduls erstellen

Es ist möglich, nur Teile eines einzelnen KDE-Moduls zu erstellen, zum Beispiel nur ein Programm aus einem Modul. Das ist mit kdesrc-build einfach durchzuführen, es gibt dafür mehrere Möglichkeiten.

Teile eines Moduls herunterladen

Mit dieser Methode wird Zeit beim Herunterladen und Speicherplatz auf der Festplatte eingespart. kdesrc-build lädt nur die angegebenen Teile eines Moduls herunter. Dazu wird die Option checkout-only mit einer Liste der herunterzuladenden Ordner für ein Modul verwendet.

Tipp

Wenn Sie nicht genau wissen, welche Programme ein Modul enthält, sollten Sie zuerst die Ordner im Modul mit WebSVN ansehen.

Um nur KUser und KSystemLog aus dem Modul kdeadmin herunterzuladen, benutzen Sie checkout-only wie im folgenden Beispiel:

module kdeadmin
  checkout-only kuser ksystemlog
end module

Wichtig

Die Ordner werden in der gleichen Reihenfolge wie in der Liste kompiliert. Wenn für das Kompilieren eines Ordners vorher andere Teile des Moduls kompiliert werden müssen, sind alle erforderlichen Ordner zusammen in die Zeile checkout-only einzutragen, und zwar in der richtigen Reihenfolge entsprechend den Abhängigkeiten.

Manchmal benötigt ein Programm andere Ordner, aber es ist nicht direkt erkennbar welche erforderlich sind. In diesem Fall ist es am einfachsten, einen Ordner nach dem anderen hinzuzufügen bis das Erstellen gelingt. Diese Option funktioniert nur, wenn das Erstellungssystem des Moduls dies unterstützt. Daher ist die Option nur für Module sinnvoll, die aus einer Sammlung von einzelnen Programmen bestehen.

Ein letzter Hinweis zu dieser Option: Wenn der Wert der Option geändert wird, sollte mit kdesrc-build --refresh-build module sichergestellt werden, dass das Modul korrekt neu konfiguriert wird. kdesrc-build entfernt keine vorhandenen Dateien, wenn einige Ordner aus der Option checkout-only gelöscht oder diese Option für ein bereits heruntergeladenes Modul eingefügt wird.

Ordner beim Erstellen auslassen

Anstatt die Menge der herunterzuladenden Quelltexte zu beschränken, kann alles heruntergeladen werden und einige wenige Ordner werden beim Kompilieren ausgelassen. Diese Vorgehensweise kann zum Beispiel benutzt werden, wenn bei einem Ordner immer Fehler auftreten, dieser Ordner aber für die übrigen Programme im Modul nicht erforderlich ist.

Dazu wird die Option do-not-compile verwendet, Sie funktioniert ähnlich wie die gerade beschriebene Option checkout-only und enthält ebenfalls eine Liste der Ordner, die nicht kompiliert werden sollen.

Wichtig

Wie checkout-only erfordert auch diese Option, dass das Erstellungssystem nach den Änderungen für das Modul erneut ausgeführt wird. Dies erreichen Sie mit dem Befehl kdesrc-build --reconfigure module.

Um den Ordner python beim Erstellen des Moduls kdebindings auszulassen, geben Sie folgendes ein:

module kdebindings
  do-not-compile python
end module

Anmerkung

Diese Option hängt von einigen Standardkonventionen ab, die in den meisten KDE-Modulen benutzt werden. Daher kann diese Option für einige Programme nicht funktionieren.

Zweige (Branches) und Tags mit kdesrc-build verwenden

Was sind eigentlich Zweige (Branches) und Tags?

Subversion verwaltet den Verlauf der Änderungen am KDE-Quelltext. Im KDE-System werden mit dieser Funktion Zweige für die Entwicklung und Tags des Archivs für eine Veröffentlichung erstellt.

Die KMail-Entwickler können zum Beispiel an neuen Funktionen in einem eigenen Zweig arbeiten, ohne Fehler in die von den meisten Entwicklern benutzten Hauptversion einzubringen. Im getrennten Zweig kann die Software unabhängig von der ebenfalls weiterentwickelten Hauptversion /trunk verbessert werden.

Ein Tag ist ein Abbild des Quelltextarchivs zu einem bestimmten Zeitpunkt. Die KDE-Systemverwalter verwenden Tags , um eine neue Version des Quelltextes für eine Veröffentlichung zu kennzeichnen. Die Softwareentwicklung kann dann in der Hauptversion /trunk weitergehen.

In Subversion gibt es keinen Unterschied zwischen Zweigen, Tags oder Trunk im Quelltext. Diese Bezeichnungen sind nur eine Konvention der Entwickler. Damit ist es schwierig, Zweige und Tags in kdesrc-build richtig zu verarbeiten.

Zweige (Branches) und Tags verwenden

Zweige und Tags werden mit einigen Optionen angegeben, von einer generellen Angabe für eine Version bis zu bestimmten URLs zum Herunterladen für erfahrene Benutzer.

Am einfachsten ist es, die Optionen branch und tag zu verwenden. Dazu wird die Option mit dem Namen des gewünschten Zweigs oder Tags für ein Modul angegeben. kdesrc-build ermittelt dann den passenden Pfad im KDE-Archiv. Für die meisten KDE-Module funktioniert das ohne Probleme.

Mit diesem Eintrag wird das Modul kdelibs aus KDE 4.6 - 4.6-Zweig genannt - heruntergeladen:

module kdelibs
  branch 4.6
  # weitere Optionen...
end module

Mit diesem Eintrag wird das Modul kdemultimedia aus KDE 4.6.1 heruntergeladen:

module kdemultimedia
  tag 4.6.1
  # weitere Optionen...
end module

Tipp

Für die Option branch kann ein globaler Wert eingestellt werden. Denken Sie aber daran, für alle Module einen zutreffenden Zweig (branch) einzustellen, die diesen globalen Wert nicht verwenden sollen.

Erweiterte Optionen für Zweige (branch)

kdesrc-build bietet zwei Optionen für Situationen, in denen mit branch und tag der falsche Pfad benutzt wird: module-base-path und override-url.

  • Mit module-base-path kann kdesrc-build den fehlenden Teil für den Pfad eines Moduls einfügen. Im KDE-Archiv haben alle Pfade die Form svnRoot/module-base-path/module-name. Normalerweise ist kdesrc-build dazu in der Lage, den passenden mittleren Teil des Pfades selbst zu bestimmen. Funktioniert dies nicht, ist module-base-path wie im folgenden Beispiel zu verwenden:

    module kdesupport
        # kdesupport supports various tags to easily organize the required
        # software for a given KDE Platform release.
        module-base-path tags/kdesupport-for-4.5
    end module
    

    Mit dieser Option lädt kdesrc-build in diesem Beispiel kdesupport von svn://anonsvn.kde.org/home/kde/tags/kdesupport-for-4.5 herunter.

    Tipp

    In früheren Versionen von kdesrc-build wurde die Option module-base-path anders verwendet. Stellen Sie Probleme mit einer alten Definition für diese Option fest, überprüfen Sie ob der tatsächliche Pfad in der von kdesrc-build erwarteten Form vorliegt, indem Sie die Option --pretend benutzen.

  • Die Option override-url erfordert die genaue Angabe des Pfades zum Modul im Archiv. Damit wird es kdesrc-build ermöglicht, Module zu laden, die mit den anderen Optionen nicht eingegeben werden können. Zurzeit sollte die Option module-base-path für alle Subversion-Archive funktionieren.

    Wichtig

    kdesrc-build ändert oder bearbeitet den angegebenen Wert für die Option override-url nicht. Wenn die Einstellung svn-server geändert wird, müssen auch die Pfade in override-url entsprechend angepasst werden.

Arbeitsweise von kdesrc-build zum erfolgreichen Erstellen

Automatisch das Erstellen neu ausführen

kdesrc-build enthielt in früheren Versionen Funktionen, um ein Module nach einem Fehler automatisch wieder neu zu erstellen. Dieses Verhalten war häufig wegen Fehlern im alten Erstellungssystem erfolgreich. Mit dem Wechsel zu CMake sind diese Fehler beseitigt, daher versucht kdesrc-build nur noch einmal, ein Modul zu erstellen. Trotzdem gibt es noch Situationen, in denen kdesrc-build automatisch aus diesen Gründen ein Modul erneut erstellt:

  • Wenn Sie für ein Modul configure-flags oder cmake-options geändert haben, erkannt kdesrc-build dies und führt automatisch erneut „configure“ oder „cmake“ für dieses Modul aus.

  • Wenn der Erstellungsordner nicht vorhanden ist - auch wenn er nicht von kdesrc-build entfernt wurde - erstellt das Skript ihn automatisch neu. Damit ist es möglich, einen vollständigen --refresh-build nur für ein bestimmtes Modul und nicht für alle anderen Module auszuführen.

Module manuell neu erstellen

Wenn die Optionen oder der Quelltext eines Moduls in einer Weise geändert wurden, die von kdesrc-build nicht erkannt wird, muss ein Modul manuell neu erstellt werden.

Dazu wird der Befehl kdesrc-build --refresh-build module ausgeführt.

Wenn dies erst bei der nächsten normalen Ausführung von kdesrc-build automatisch erfolgen soll, kann eine Datei .refresh-me in den Erstellungsordner eines Moduls geschrieben werden. So wird kdesrc-build bei der nächsten Ausführung das Modul neu erstellen und nicht wie normalerweise nur inkrementell.

Tipp

In der Voreinstellung ist der Erstellungsordner ~/kdesrc/build/module/. Haben Sie die Einstellung für die Option build-dir geändert, verwenden Sie diese Einstellung anstelle von ~/kdesrc/build.

Neu erstellen mit .refresh-me für das Modul kdelibs:

% touch ~/kdesrc/build/kdelibs/.refresh-me
% kdesrc-build

Einstellungen für Umgebungsvariablen ändern

Normalerweise benutzt kdesrc-build die Umgebungsvariablen, die beim Start des Skripts gesetzt sind, um den Quelltext zu aktualisieren und zu kompilieren. Das funktioniert ohne Probleme, wenn Sie kdesrc-build von der Befehlszeile ausführen.

Manchmal möchten Sie die Umgebungsvariablen ändern, für die keine Optionen in kdesrc-build vorhanden sind. Wenn Sie zum Beispiel kdesrc-build als Cron-Job regelmäßig ausführen möchten, können Sie mit der Option set-env alle dafür nötigen Umgebungsvariablen setzen.

Anders als alle anderen Optionen kann diese Option mehrfach verwendet werden. Sie erfordert zwei durch Leerzeichen getrennte Einträge. Der erste Eintrag ist der Name der Umgebungsvariablen und der zweite der einzustellende Wert.

Setzt DISTRO=BSD für alle Module:

global
  set-env DISTRO BSD
end global

Das Erstellen fortsetzen

Ein abgebrochenes oder fehlgeschlagenes Erstellen fortsetzen

kdesrc-build kann das Erstellen mit einem bestimmten Modul fortsetzen. Diese Funktion kann mit den Optionen --resume-from und --resume-after benutzt werden, wenn bei einigen Modulen Fehler aufgetreten sind, oder das Kompilieren abgebrochen wurde.

Anmerkung

Frühere Versionen von kdesrc-build haben die Aktualisierung des Quelltextes beim erneuten Erstellen übersprungen. Diese Verhalten ist nicht mehr die Voreinstellung, aber Sie können immer noch die Befehlszeilenoption --no-src verwenden, um das Aktualisieren des Quelltextes zu überspringen.

Das Erstellen mit kdebase fortsetzen:

% kdesrc-build --resume-from=kdebase

Das Erstellen mit dem Modul nach kdebase fortsetzen (für den Fall, dass Sie den Fehler in kdebase manuell beseitigt und dieses Modul selbst installiert haben):

% kdesrc-build --resume-after=kdebase

Wenn das letzte Erstellen mit kdesrc-build mit einem Fehler beendet wurde, können Sie auch die Befehlszeilenoption --resume verwenden, mit der das Erstellen beim letzten fehlgeschlagenen Modul fortgesetzt wird. Das Aktualisieren der Quelltexte und Metadaten wird gleichfalls übersprungen. Möchten Sie dies jedoch ausführen, sollten Sie stattdessen die Option --resume-from verwenden.

Module vom Erstellen ausschließen

Ähnlich wie das Erstellen eines Moduls fortgesetzt wird, kann stattdessen das Aktualisieren und Erstellen für alles ausgeführt werden, wobei einige Module ausgelassen werden.

Verwenden Sie dazu die Option --ignore-modules. Damit werden alle mit dieser Option angegebenen Module nicht aktualisiert oder erstellt.

Mit dieser Eingabe werden extragear/multimedia und kdereview beim Erstellen ausgelassen:

% kdesrc-build --ignore-modules extragear/multimedia kdereview

Optionen auf der Befehlszeile ändern

Globale Optionen ändern

Die Einstellungen aus der Einrichtungsdatei können auf der Befehlszeile geändert werden. Damit werden die globalen Einstellungen nur für die Ausführung dieses Befehls überschrieben.

In kdesrc-build können interne Optionen mit Namen wie option-name durch Eingabe eines Arguments auf der Befehlszeile in der Form --option-name=value geändert werden. kdesrc-build sucht den angegebenen Namen in der internen Liste der Optionen. Wird der Name nicht gefunden, so wird eine Warnung ausgegeben, anderenfalls wird der angegeben Wert der Option übernommen und der Wert aus der Einrichtungsdatei überschrieben.

Einstellung der Option source-dir auf /dev/null zum Testen:

% kdesrc-build --pretend --source-dir=/dev/null

Änderung der Optionen für Module

Sie können Optionen nur für bestimmte Module ändern. Die Syntax ist ähnlich: --module,option-name=value.

Diese Änderung überschreibt jede Einstellung für das Modul aus der Einrichtungsdatei und wird nur bei Eingabe auf der Befehlszeile benutzt.

Mit dieser Eingabe wird ein anderer Ordner zum Erstellen des Moduls kdeedu verwendet:

% kdesrc-build --kdeedu,build-dir=temp-build