Выпуск сборочной системы Meson 1.11.0

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

Ключевой целью развития Meson является обеспечение высокой скорости сборочного процесса в сочетании с удобством и простотой использования. Вместо утилиты make при сборке по умолчанию применяется инструментарий Ninja, но возможно применение и других бэкендов, таких как Xcode и Visual Studio. В систему встроен многоплатформенный обработчик зависимостей, позволяющий использовать Meson для сборки пакетов для дистрибутивов. Правила сборки задаются на упрощённом предметно-ориентированном языке, отличаются хорошей читаемостью и понятны пользователю (по задумке авторов разработчик должен тратить минимум времени на написание правил).

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

Основные новшества Meson 1.11:

  • При вызове в скриптах Meson метода rust.workspace() реализован разбор корневого файла Cargo.toml внутри проекта, для корректной активации при сборке feature-флагов, определённых в общем для всех рабочих пространств файле Cargo.toml. Кроме того, метод rust.workspace() теперь возвращает объект, через который можно получить список feature-флагов и зависимостей для подпроектов, а также запустить сборку целей, объявленных в файлах Cargo.toml.
  • В команду «meson dist» добавлены опция «-j» (—num-processes) и переменная окружения MESON_NUM_PROCESSES для задания числа процессов, параллельно выполняемых при сборке и тестировании пакетов.
  • Параметр should_fail, допускающий прохождении теста при возвращении ошибки, объявлен устаревшим и переименован в expected_fail. Добавлен параметр expected_exitcode для выставления кода успешного завершения теста, отличного от 0.
  • В модуле external_project на платформе Windows задействована команда cygpath для преобразования специфичных для Windows файловых путей и Unix-подобные пути (например, из C:/path/to/configure в /path/to/configure).
  • В команды install_man и install_headers добавлена поддержка аргумента install_tag для выбора устанавливаемых файлов по произвольным тегам, а не только по тегам man и devel.
  • Добавлен параметр link_early_args, через который в командную строку при запуске компоновщика можно подставить опции (например, «-u» или «—defsym») до перечисления объектов и библиотек.
  • Добавлена константа «~», заменяемая на домашний каталог в файлах описания среды (machine files).
  • В команде «meson format» по умолчанию отключена сортировка файлов, указанных в числе аргументов функции files(). Для включения сортировки следует использовать опцию sort_files.
  • Анонсировано прекращение поддержки версий Python до выпуска 3.10.
    Meson 1.11.0 является последним выпуском с поддержкой веток Python 3.7, 3.8 и 3.9.

  • Добавлена поддержка новых возможностей C/C++ компилятора MPLAB XC32, появившихся в версии 5.0, таких как автоматическое включение LTO-оптимизаций и поддержка стандартов C2x и CPP23.

Источник: http://www.opennet.ru/opennews/art.shtml?num=65199