FOSDEM 2008: Buildsysteme bauen und testen Software
Am Sonntagmorgen der europäischen Entwicklerkonferenz FOSDEM waren Build-Systeme ein Themenschwerpunkt.
Kohsuke Kawaguchi von der Firma Sun stellte sein Open-Source-Projekt Hudson vor. Die Webanwendung nimmt automatisierte Builds vor und berichtet die Ergebnisse. Hudson sei einfach zu installieren und zu konfigurieren und liefere eine ständige Rückmeldung für die Entwickler - sie erfahren in kürzester Zeit, wenn neu eingespielter Code Fehler verursacht und gewinnen einen Vorsprung bei kritischen Bugfixes. Der Build-Automat ist in Java geschrieben, eignet sich laut Kawaguchi aber auch für Software in anderen Sprachen, beispielsweise Ruby.
Komplett in Python umgesetzt ist das System SCons, über das sein Schöpfer Steven Knight sprach. Selbst die Konfigurationsdateien sind Python-Skripte, die Knight aufgrund ihrer Programmierbarkeit für sinnvoller hält als beispielsweise XML-Dateien. Der Vortrag beschäftigte sich ausführlich mit der SCons-Konfigurationssprache, einer Domain-Specific Language, und gab praktische Anwendungsbeispiele.
Zum Einrichten des Build-Systems SCons kommt eine in Python umgesetzte Konfigurationssprache zum Einsatz.
Das Buildsystem zeigt seine Stärken besonders bei umfangreichen Builds ganzer Quelltext-Bäume, den "Buildmaster Builds". Beim Bearbeiten einzelner Entwickler-Verzeichnisse sowie bei Performance und Speicherbedarf sieht Knight dagegen noch Verbesserungsbedarf. Das SCons-Wiki hält jedoch einige Tipps bereit, um Builds schneller zu machen.
Bill Hoffman kommt vom kleinen Unternehmen Kitware, das medizinische Visualisierungsoftware mit Open-Source-Software anbietet. Für die Anatomie-Software Insight Toolkit wurde das Buildsystem CMake entwickelt, das auch im KDE-Projekt und demnächst für das Online-Spiel Second Life eingesetzt wird.
Hoffman gab einen Überblick über CMake, das Abhängigkeiten in den Sprachen C und C++ automatisch auflöst, ebenfalls in Fortran, das im Supercomputing noch von Bedeutung ist. Danach stellte er Administartionswerkzeuge für Kommandozeile sowie Unix- und Windows-GUIs vor und erklärte die Funktionen in Cmake-Konfigurationsdateien.
Als Testwerkzeug ist CTest in der CMake-Distribution bereits enthalten. Hoffman: "Was nicht getestet ist, funktioniert nicht." Oft kommt es beispielsweise zu Fehlern auf Hardware-Plattformen und Betriebssystemen, die Software-Entwickler nicht bedacht haben. Bill Hoffman erzählte, er habe beim Programmieren oft das Echtzeit-Betriebssystem QNX vergessen, bis ihn CTest mit Fehlermeldungen daran erinnerte. Ein weiteres Tool im CMake-Werkzeugkasten ist CDash, ein Dashboard, das über eine Weboberfläche stets den aktuellen Status von Builds und Tests anzeigt. Mit CPack schließlich lässt sich Software für die Distribution paketieren.





