Meson-konstrua sistemo eldono 1.1

La eldono de la konstrusistemo Meson 1.1.0 estis publikigita, kiu estas uzata por konstrui projektojn kiel X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME kaj GTK. La Meson-kodo estas skribita en Python kaj estas licencita laŭ la permesilo Apache 2.0.

La ŝlosila disvolva celo de Meson estas provizi altrapidan kunigprocezon kombinitan kun oportuno kaj facileco de uzo. Anstataŭ fari, la konstruo uzas la Ninja ilaron defaŭlte, sed aliaj backends kiel xcode kaj VisualStudio ankaŭ povas esti uzataj. La sistemo havas enkonstruitan plurplatforman dependectraktilon, kiu permesas vin uzi Meson por konstrui pakaĵojn por distribuoj. Asembleaj reguloj estas fiksitaj en simpligita domajna specifa lingvo, ili estas bone legeblaj kaj kompreneblaj por la uzanto (laŭ la ideo de la aŭtoroj, la programisto devus pasigi minimume da tempo skribante regulojn).

Transkompilado kaj konstruado sur Linukso, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS kaj Vindozo uzante GCC, Clang, Visual Studio kaj aliajn kompililojn estas subtenataj. Eblas konstrui projektojn en diversaj programlingvoj, inkluzive de C, C++, Fortran, Java kaj Rust. Pliiga konstrureĝimo estas subtenata, en kiu nur komponentoj kiuj estas rekte rilataj al ŝanĝoj faritaj ekde la lasta konstruo estas rekonstruitaj. Meson povas esti uzata por generi ripeteblajn konstruojn, kie funkcii la konstruon en malsamaj medioj rezultigas tute identajn ruleblajn konstruaĵojn.

Ĉefaj inventoj de Meson 1.1:

  • Nova argumento "objects:" estis aldonita al declare_dependency() por ligi objektojn rekte al ruligeblaj kiel internaj dependecoj, kiuj ne postulas link_who.
  • La komando "meson devenv --dump" havas la laŭvolan kapablon specifi dosieron por skribi mediovariablojn, anstataŭ eligi al la norma eligofluo.
  • Aldonis la metodojn FeatureOption.enable_if kaj FeatureOption.disable_if por faciligi la kreadon de kondicionaloj en preparo por transdoni parametrojn al la funkcio dependency(). opt = get_option('trajto').disable_if(ne foo, error_message : 'Ne povas ebligi funkcion kiam foo ankaŭ ne estas ebligita') dep = dependency('foo', bezonata : elekt)
  • Estas permesite pasi generitajn objektojn inter la "objektoj:" argumentoj.
  • La projekta funkcio subtenas la instaladon de dosieroj kun informoj pri projektlicencoj.
  • Efektivigi "sudo meson install" certigas privilegion rekomencigita dum rekonstruo por celplatformoj.
  • La komando "meson install" disponigas la kapablon specifi apartan prizorganton por akiri radikajn permesojn (ekzemple, vi povas elekti polkit, sudo, opendoas aŭ $MESON_ROOT_CMD). Ruli "mezoninstalon" en ne-interaga reĝimo ne plu provas altigi privilegiojn.
  • Aldonita subteno por legado de opcioj de la meson.options dosiero anstataŭ meson_options.txt.
  • Provizita alidirekto al stderr de la eligo de informoj pri la progreso de introspekto.
  • Nova "neniu" backend (--backend=neniu) estis aldonita por krei projektojn kiuj havas nur instalregulojn kaj neniujn konstruregulojn.
  • Nova dependeco pybind11 estis aldonita por ke dependency('pybind11') funkciu kun pkg-config kaj cmake sen uzi la skripton pybind11-config.
  • La opcioj "--reconfigure" kaj "--wipe" (meson setup --reconfigure builddir kaj meson setup --wipe builddir ) estas permesitaj kun malplena builddir.
  • meson.add_install_script() aldonis subtenon por la ŝlosilvorto dry_run, kiu ebligas al vi ruli viajn proprajn instalajn skriptojn kiam vi vokas "meson install --dry-run".

fonto: opennet.ru

Aldoni komenton