Выпуск зборачнай сістэмы Meson 1.1

Апублікаваны рэліз зборачнай сістэмы Meson 1.1.0, якая выкарыстоўваецца для зборкі такіх праектаў, як X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME і GTK. Код Meson напісаны на мове Python і пастаўляецца пад ліцэнзіяй Apache 2.0.

Ключавой мэтай развіцця Meson з'яўляецца забеспячэнне высокай хуткасці зборачнага працэсу ў спалучэнні з зручнасцю і прастатой выкарыстання. Замест утыліты make пры зборцы па змаўчанні ўжываецца інструментар 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 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

Дадаць каментар