Випуск складальної системи Meson 1.1

Опубліковано реліз складальної системи Meson 1.1.0, яка використовується для складання таких проектів, як X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME та GTK. Код Meson написаний мовою Python та постачається під ліцензією Apache 2.0.

Ключовою метою розвитку Meson є забезпечення високої швидкості складального процесу у поєднанні із зручністю та простотою використання. Замість утиліти make при складанні за замовчуванням застосовується інструментарій Ninja, але можливе застосування інших бекендів, таких як xcode і VisualStudio. У систему вбудований багатоплатформний обробник залежностей, що дозволяє використовувати Meson для збирання пакетів для дистрибутивів. Правила складання задаються спрощеною предметно-орієнтованою мовою, відрізняються гарною читальністю і зрозумілі користувачеві (за задумом авторів розробник повинен витрачати мінімум часу на написання правил).

Підтримується крос-компіляція та складання в Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS та Windows з використанням GCC, Clang, Visual Studio та інших компіляторів. Можливе складання проектів різними мовами програмування, включаючи C, C++, Fortran, Java та Rust. Підтримується інкрементальний режим збирання, при якому перезбираються лише компоненти, що безпосередньо пов'язані зі змінами, внесеними з моменту минулого збирання. Meson можна використовувати для формування повторюваних збірок, при яких запуск складання в різних оточеннях призводить до генерації повністю ідентичних файлів, що виконуються.

Основні нововведення Meson 1.1:

  • У declare_dependency() додано новий аргумент «objects:» для прикріплення об'єктів безпосередньо до виконуваних файлів у формі внутрішніх залежностей, що не потребують застосування link_who.
  • У команду «meson devenv-dump» додано опціональну можливість вказівки файлу для запису в нього змінних оточення замість виведення у стандартний вихідний потік.
  • Додані методи FeatureOption.enable_if та FeatureOption.disable_if для спрощення створення умовних конструкцій під час підготовки до передачі параметрів у функцію dependency(). opt = get_option('feature').disable_if(not foo, error_message : 'Cannot enable feature when foo is not also enabled') dep = dependency('foo', required : opt)
  • Дозволено передачу згенерованих об'єктів серед аргументів «objects:».
  • У функції project реалізовано підтримку встановлення файлів з інформацією про ліцензії проекту.
  • Під час виконання «sudo meson install» забезпечено скидання привілеїв під час перескладання для цільових платформ.
  • У команді «meson install» надається можливість вказівки окремого оброблювача для отримання прав root (наприклад, можна вибрати polkit, sudo, opendoas або $MESON_ROOT_CMD). Під час запуску «meson install» не в інтерактивному режимі більше не роблять спроби підвищення привілеїв.
  • Додано підтримку читання опцій з файлу meson.options замість meson_options.txt.
  • Забезпечено перенаправлення в stderr виведення інформації про хід інтроспекції.
  • Додано новий бекенд «none» (backend=none) для створення проектів, що мають тільки правила встановлення і не містять правил складання.
  • Додана нова залежність pybind11, що забезпечує роботу dependency('pybind11') з pkg-config та cmake без застосування скрипту pybind11-config.
  • Дозволено використання опцій "-reconfigure" і "-wipe" (meson setup -reconfigure builddir і meson setup -wipe builddir) з порожнім builddir.
  • meson.add_install_script() додана підтримка ключового слова dry_run, що дозволяє запуск власних настановних скриптів при виклику «meson install —dry-run».

Джерело: opennet.ru

Додати коментар або відгук