Version 1.1 du système de construction Meson

La version du système de construction Meson 1.1.0 a été publiée, qui est utilisée pour construire des projets tels que X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME et GTK. Le code Meson est écrit en Python et est sous licence Apache 2.0.

L'objectif de développement clé de Meson est de fournir un processus d'assemblage à grande vitesse combiné à la commodité et à la facilité d'utilisation. Au lieu de make, la construction utilise la boîte à outils Ninja par défaut, mais d'autres backends tels que xcode et VisualStudio peuvent également être utilisés. Le système dispose d'un gestionnaire de dépendances multiplateforme intégré qui vous permet d'utiliser Meson pour créer des packages pour les distributions. Les règles d'assemblage sont définies dans un langage simplifié spécifique au domaine, elles sont bien lisibles et compréhensibles pour l'utilisateur (selon l'idée des auteurs, le développeur devrait passer un minimum de temps à écrire des règles).

La compilation croisée et la construction sur Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS et Windows à l'aide de GCC, Clang, Visual Studio et d'autres compilateurs sont prises en charge. Il est possible de créer des projets dans divers langages de programmation, notamment C, C++, Fortran, Java et Rust. Un mode de génération incrémentielle est pris en charge, dans lequel seuls les composants directement liés aux modifications apportées depuis la dernière génération sont reconstruits. Meson peut être utilisé pour générer des versions reproductibles, où l'exécution de la version dans différents environnements donne des exécutables complètement identiques.

Principales innovations de Meson 1.1 :

  • Un nouvel argument "objects:" a été ajouté à declare_dependency() pour attacher des objets directement aux exécutables en tant que dépendances internes qui ne nécessitent pas link_who.
  • La commande "meson devenv --dump" a la possibilité facultative de spécifier un fichier dans lequel écrire les variables d'environnement, au lieu de sortir dans le flux de sortie standard.
  • Ajout des méthodes FeatureOption.enable_if et FeatureOption.disable_if pour faciliter la création de conditions en vue de la transmission de paramètres à la fonction dependency(). opt = get_option('feature').disable_if(not foo, error_message : 'Impossible d'activer la fonctionnalité lorsque foo n'est pas également activé') dep = dependency('foo', requis : opt)
  • Il est permis de passer des objets générés parmi les arguments "objects:".
  • La fonction de projet prend en charge l'installation de fichiers contenant des informations sur les licences de projet.
  • L'exécution de "sudo meson install" garantit la réinitialisation des privilèges lors de la reconstruction des plates-formes cibles.
  • La commande "meson install" permet de spécifier un gestionnaire séparé pour obtenir les autorisations root (par exemple, vous pouvez sélectionner polkit, sudo, opendoas ou $MESON_ROOT_CMD). L'exécution de "meson install" en mode non interactif ne tente plus d'élever les privilèges.
  • Ajout du support pour lire les options du fichier meson.options au lieu de meson_options.txt.
  • Fourni la redirection vers stderr de la sortie d'informations sur la progression de l'introspection.
  • Un nouveau backend "none" (--backend=none) a été ajouté pour créer des projets qui n'ont que des règles d'installation et aucune règle de construction.
  • Une nouvelle dépendance pybind11 a été ajoutée pour que dependency('pybind11') fonctionne avec pkg-config et cmake sans utiliser le script pybind11-config.
  • Les options "--reconfigure" et "--wipe" (meson setup --reconfigure builddir et meson setup --wipe builddir ) sont autorisées avec un builddir vide.
  • meson.add_install_script() a ajouté la prise en charge du mot-clé dry_run, qui vous permet d'exécuter vos propres scripts d'installation lors de l'appel de "meson install --dry-run".

Source: opennet.ru

Ajouter un commentaire