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

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

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

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

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

  • Додано експериментальну підтримку Webassembly з використанням як компілятор Emscripten;
  • Істотно покращена та доведена до робочого стану підтримка платформ Illumos та Solaris;
  • Забезпечено ігнорування сценаріїв інтернаціоналізації на базі gettext у разі відсутності в системі встановленого інструментарію gettext (раніше при використанні модуля i18n на системах без gettext виводилася помилка);
  • Поліпшено підтримку статичних бібліотек. Вирішено багато проблем при використанні деінстальованих статичних бібліотек;
  • Додано можливість використання словників призначення змінних оточення. При викликі environment() як перший елемент тепер можна вказати словник, у якому змінні оточення визначені у формі ключ/значення. Дані змінні будуть перенесені в environment_object, якби вони окремо встановлювалися через метод set(). Словники також тепер можуть передаватися до різних функцій, що підтримують аргумент «env»;
  • Додано функцію «runtarget alias_target(target_name, dep1, …)», що створює нову збірну мету першого рівня, яку можна викликати з вибраним збірним бекендом (наприклад, «ninja target_name»). Ця збірна мета не запускає жодних команд, але забезпечує складання всіх залежностей;
  • Забезпечено автоматичне встановлення змінної оточення PKG_CONFIG_SYSROOT_DIR при крос-компіляції за наявності налаштування sys_root у секції «[properties]»;
  • Додано опцію «—gdb-path» для визначення шляху до налагоджувача GDB при вказівці опції «—gdb testname» для запуску GDB із вказаним тестовим сценарієм;
  • Додано автоматичне визначення складальної мети clang-tidy для запуску цього linter-а з усіма вихідними файлами. Мета створюється за наявності у системі clang-tidy та визначенні у корені проекту файлу ".clang-tidy" (або "_clang-tidy");
  • Додана залежність dependency('blocks') для використання у Clang розширення блоки;
  • Розділено уявлення компонувальника та компілятора, що дозволяє використовувати різні поєднання компіляторів та компонувальників;
  • До об'єктів SourceSet додано метод all_dependencies() на додаток до методу all_sources();
  • У run_project_tests.py з'явилася опція "-only" для вибіркового запуску тестів (наприклад, "python run_project_tests.py -only fortran python3");
  • У функції find_program() додано можливість пошуку лише необхідних версій програми (версія визначається через запуск програми з опцією «version»);
  • Для керування експортом символів до функції shared_module() за аналогією з shared_library() додано опцію vs_module_defs;
  • Розширено можливості модуля kconfig, який тепер підтримує configure_file() визначення вхідного файла;
  • У configure_file() додано можливість вказівки кількох вхідних файлів для обробників «command:»;
  • Команда dist для створення архіву переведена в розряд команд першого рівня (раніше команда була прив'язана до ninja). Додано опцію «—formats» для визначення типів створюваних архівів (наприклад,
    "meson dist-formats = xztar, zip").

Джерело: opennet.ru

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