Die Version 0.58 des Build-Systems Meson wurde veröffentlicht, das zum Erstellen von Projekten wie X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME und GTK verwendet wird. Der Code von Meson ist in Python geschrieben und unter der Lizenz Apache 2.0 verfĂŒgbar.
Ein zentrales Entwicklungsziel von Meson ist es, eine hohe Geschwindigkeit des Build-Prozesses zu gewĂ€hrleisten, gepaart mit Benutzerfreundlichkeit und Einfachheit. Anstelle des Tools make wird standardmĂ€Ăig das Ninja-Toolset verwendet, jedoch können auch andere Backends wie xcode und VisualStudio eingesetzt werden. Das System enthĂ€lt einen plattformĂŒbergreifenden AbhĂ€ngigkeitsmanager, der es ermöglicht, Meson zur Erstellung von Paketen fĂŒr Distributionen zu verwenden. Die Build-Regeln werden in einer vereinfachten, domĂ€nenorientierten Sprache festgelegt, die eine gute Lesbarkeit aufweist und fĂŒr den Benutzer verstĂ€ndlich ist (laut den Autoren sollte der Entwickler so wenig Zeit wie möglich mit dem Schreiben von Regeln verbringen).
Cross-Compilation und Builds werden fĂŒr Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS und Windows mit GCC, Clang, Visual Studio und anderen Compilern unterstĂŒtzt. Es ist möglich, Projekte in verschiedenen Programmiersprachen, einschlieĂlich C, C++, Fortran, Java und Rust, zu kompilieren. Der inkrementelle Build-Modus wird unterstĂŒtzt, bei dem nur die Komponenten neu kompiliert werden, die direkt mit den seit dem letzten Build vorgenommenen Ănderungen verbunden sind. Meson kann verwendet werden, um reproduzierbare Builds zu erstellen, bei denen das AusfĂŒhren des Builds in verschiedenen Umgebungen die Erzeugung vollstĂ€ndig identischer ausfĂŒhrbarer Dateien zur Folge hat.
Hauptneuheiten in Meson 0.58:
- Im Meson-Skriptformat wurden eingebaute String-Formatierungsoperationen implementiert. Anstelle des Aufrufs der Methode format können Werte jetzt direkt eingesetzt werden, beispielsweise anstelle von ââA string @0@ to be formatted @1@â.format(n, m)â kann man direkt âfâA string @n@ to be formatted @m@'â verwenden.
- Zu den String-Objekten wurde die Methode âreplaceâ hinzugefĂŒgt, um das Ersetzen einer Teilzeichenfolge durch eine andere zu ermöglichen, z. B. âs = s.replace(âaaaâ, âbbbâ)â.
- Die Funktion ârange(start, stop[, step])â wurde hinzugefĂŒgt, um ein Objekt zurĂŒckzugeben, das in einer âforeachâ-Schleife verwendet werden kann, z. B. âforeach i : range(15)â.
- Die Methode meson.add_devenv() wurde implementiert, um ein environment()-Objekt hinzuzufĂŒgen, mit dem Umgebungsvariablen wĂ€hrend der AusfĂŒhrung des Befehls âmeson devenvâ festgelegt werden können, z. B. um eine Umgebungsvariable mit dem Pfad zu einem Verzeichnis fĂŒr Plugins zu definieren.
- FĂŒr Entwicklungsumgebungen wurde das neue Kommando âmeson devenv -C builddir [<Kommando>]â eingefĂŒhrt, das die Möglichkeit bietet, einen Befehl in einer Umgebung auszufĂŒhren, die fĂŒr das Starten von Projekten aus dem Build-Verzeichnis konfiguriert ist (ohne Installation).
- StandardmĂ€Ăig wurde die Ăbergabe des Parameters â-pipeâ beim Start aller unterstĂŒtzten Compiler deaktiviert.
- Der Aufruf von meson.add_dist_script() aus Unterprojekten ist nun erlaubt.
- Es ist nun möglich, die Methoden append() und prepend() mehrfach fĂŒr dasselbe Objekt environment() aufzurufen.
- In der Funktion error() ist es jetzt erlaubt, mehr als ein Argument, getrennt durch ein Leerzeichen, anzugeben (analog zu warning() und message()).
- Ein Parameter ââskip-subprojectsâ wurde hinzugefĂŒgt, um die Installation von Unterprojekten selektiv zu ĂŒberspringen.
Hervorzuheben ist das Projekt Boson, das sich auf die Erstellung einer portablen und einfachen Implementierung der Build-Script-Sprache Meson konzentriert, geschrieben in C anstelle von Python. Das Projekt befindet sich derzeit noch in der Entwicklungsphase und ist noch nicht bereit fĂŒr den vollstĂ€ndigen Bau von Arbeitsprojekten. Der Code wird unter der GPLv3-Lizenz veröffentlicht (das ursprĂŒngliche Meson in Python wird unter der Apache 2.0-Lizenz bereitgestellt).
Quelle: opennet.ru
