Die neue Version des Build-Systems Meson 1.1.0 ist veröffentlicht worden, das fĂŒr Projekte wie X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME und GTK verwendet wird. Der Meson-Code ist in Python geschrieben und wird unter der Lizenz Apache 2.0 angeboten.
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.
Hauptneuigkeiten in Meson 1.1:
- In declare_dependency() wurde ein neues Argument âobjects:â hinzugefĂŒgt, um Objekte direkt an ausfĂŒhrbare Dateien als interne AbhĂ€ngigkeiten anzuhĂ€ngen, die keinen link_who-Befehl erfordern.
- Der Befehl âmeson devenv âdumpâ bietet jetzt die optionale Möglichkeit, eine Datei anzugeben, um Umgebungsvariablen anstelle der Ausgabe auf den Standardausgabestrom zu schreiben.
- Die Methoden FeatureOption.enable_if und FeatureOption.disable_if wurden hinzugefĂŒgt, um die Erstellung von bedingten Konstruktionen bei der Vorbereitung zur Ăbergabe von Parametern an die Funktion dependency() zu vereinfachen. opt = get_option(âfeatureâ).disable_if(not foo, error_message: âKann die Funktion nicht aktivieren, wenn foo nicht ebenfalls aktiviert istâ) dep = dependency(âfooâ, required: opt)
- Die Ăbergabe von generierten Objekten ist nun als Argumente âobjects:â erlaubt.
- In der Funktion project wurde die UnterstĂŒtzung fĂŒr die Installation von Dateien mit Lizenzinformationen fĂŒr das Projekt implementiert.
- Bei der AusfĂŒhrung von âsudo meson installâ wird wĂ€hrend der Neubauphase die RĂŒckgabe der Berechtigungen fĂŒr die Zielplattformen sichergestellt.
- Im Befehl âmeson installâ wurde die Möglichkeit hinzugefĂŒgt, einen separaten Handler fĂŒr den Zugriff auf die Root-Rechte anzugeben (zum Beispiel kann polkit, sudo, opendoas oder $MESON_ROOT_CMD gewĂ€hlt werden). Bei der AusfĂŒhrung von âmeson installâ im nicht-interaktiven Modus werden keine Versuche zur Erhöhung der Berechtigungen mehr unternommen.
- Die UnterstĂŒtzung zum Lesen von Optionen aus der Datei meson.options anstelle von meson_options.txt wurde hinzugefĂŒgt.
- Die Umleitung von Informationen ĂŒber den Fortschritt der Introspektion in stderr wurde sichergestellt.
- Ein neuer Backend ânoneâ (âbackend=none) wurde hinzugefĂŒgt, um Projekte zu erstellen, die nur Installationsregeln enthalten und keine Build-Regeln.
- Eine neue AbhĂ€ngigkeit pybind11 wurde hinzugefĂŒgt, um die Funktion dependency(âpybind11â) mit pkg-config und cmake ohne Verwendung des Skripts pybind11-config zu unterstĂŒtzen.
- Die Verwendung der Optionen ââreconfigureâ und ââwipeâ (meson setup âreconfigure builddir und meson setup âwipe builddir) mit einem leeren builddir wurde erlaubt.
- In meson.add_install_script() wurde die UnterstĂŒtzung des SchlĂŒsselworts dry_run hinzugefĂŒgt, das das AusfĂŒhren eigener Installationsskripte beim Aufruf von âmeson install âdry-runâ ermöglicht.
Quelle: opennet.ru
