Vrystelling van die Meson 1.1-samestellingstelsel

Die vrystelling van die Meson 1.1.0-boustelsel is gepubliseer, wat gebruik word om projekte soos X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME en GTK te bou. Die Meson-kode is in Python geskryf en is onder die Apache 2.0-lisensie gelisensieer.

Die sleutelontwikkelingsdoelwit van Meson is om 'n hoëspoedsamestellingsproses te bied, gekombineer met gerief en gemak van gebruik. In plaas van maak, gebruik die bou by verstek die Ninja-gereedskapstel, maar ander backends soos xcode en VisualStudio kan ook gebruik word. Die stelsel het 'n ingeboude multi-platform afhanklikheid hanteerder wat jou toelaat om Meson te gebruik om pakkette vir verspreidings te bou. Samestellingreëls word in 'n vereenvoudigde domeinspesifieke taal opgestel, dit is goed leesbaar en verstaanbaar vir die gebruiker (volgens die outeurs se idee moet die ontwikkelaar 'n minimum tyd spandeer om reëls te skryf).

Kruissamestelling en bou op Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS en Windows met behulp van GCC, Clang, Visual Studio en ander samestellers word ondersteun. Dit is moontlik om projekte in verskeie programmeertale te bou, insluitend C, C++, Fortran, Java en Rust. 'n Inkrementele boumodus word ondersteun, waarin slegs komponente wat direk verband hou met veranderinge wat aangebring is sedert die laaste bou, herbou word. Meson kan gebruik word om herhaalbare bouwerk te genereer, waar die uitvoering van die bou in verskillende omgewings heeltemal identiese uitvoerbares tot gevolg het.

Belangrikste innovasies van 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».

Bron: opennet.ru

Voeg 'n opmerking