
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.
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:
modulekdeadmin
checkout-onlykuser 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
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. --refresh-build
module
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:
modulekdebindings
do-not-compilepython
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.
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 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.
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/
. 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-name
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/
herunter.tags/kdesupport-for-4.5
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.
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.
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
ausgeführt. --refresh-build
module
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/
. Haben Sie die Einstellung für die Option build-dir geändert, verwenden Sie diese Einstellung anstelle von module
/~/kdesrc/build
.
Neu erstellen mit .refresh-me
für das Modul kdelibs
:
%
touch
~/kdesrc/build/
kdelibs
/.refresh-me%
kdesrc-build
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
für alle Module:DISTRO
=BSD
global set-envDISTRO
BSD
end global
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.
Ä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
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
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.--
option-name
=value
Einstellung der Option source-dir auf /dev/null
zum Testen:
%
kdesrc-build
--pretend
--
source-dir
=/dev/null
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