Meson build system versiunea 1.1

A fost publicată lansarea sistemului de compilare Meson 1.1.0, care este folosit pentru a construi proiecte precum X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME și GTK. Codul Meson este scris în Python și este licențiat sub licența Apache 2.0.

Scopul cheie de dezvoltare al Meson este de a oferi un proces de asamblare de mare viteză, combinat cu confort și ușurință în utilizare. În loc de make, build folosește setul de instrumente Ninja în mod implicit, dar pot fi utilizate și alte backend-uri, cum ar fi xcode și VisualStudio. Sistemul are încorporat un handler de dependență multiplatformă care vă permite să utilizați Meson pentru a construi pachete pentru distribuții. Regulile de asamblare sunt stabilite într-un limbaj simplificat specific domeniului, sunt bine citite și ușor de înțeles pentru utilizator (conform ideii autorilor, dezvoltatorul ar trebui să petreacă un minim de timp scriind reguli).

Compilarea încrucișată și construirea pe Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS și Windows folosind GCC, Clang, Visual Studio și alte compilatoare sunt acceptate. Este posibil să construiți proiecte în diferite limbaje de programare, inclusiv C, C++, Fortran, Java și Rust. Este acceptat un mod de construire incremental, în care numai componentele care sunt direct legate de modificările efectuate de la ultima versiune sunt reconstruite. Meson poate fi folosit pentru a genera build-uri repetabile, unde rularea build-ului în medii diferite are ca rezultat executabile complet identice.

Principalele inovații ale 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».

Sursa: opennet.ru

Adauga un comentariu