Издание на системот за изградба на Meson 1.1

Објавено е издавањето на системот за градење Meson 1.1.0, кој се користи за изградба на проекти како што се X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME и GTK. Месон кодот е напишан во Python и е лиценциран под лиценцата Apache 2.0.

Клучната развојна цел на Meson е да обезбеди процес на склопување со голема брзина во комбинација со практичност и леснотија на користење. Наместо марка, конструкцијата стандардно го користи комплетот со алатки 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

Додадете коментар