Meson on järjestelmä tietokoneohjelman konfigurointiin lähdekoodista ja käännösautomaatioon.[2][3] Meson tukee useita hakemistoja eri käännöksiä varten samasta lähdekoodista.[2] Meson on toteutettu Python 3:lla ja julkaistu Apache 2.0 -lisenssillä.[2]

Meson
Luoja Jussi Pakkanen
Kehityshistoria
Vakaa versio 1.4.0 ()[1]
Tiedot
Ohjelmointikielet Python
Lisenssi Apache-lisenssi, versio 2.0
Aiheesta muualla
Verkkosivusto
Versiohallinta

Järjestelmässä on oma konfiguraatiokieli, joka tukee ehtolauseita.[2] Meson tukee C-, C++-, D-, Java- ja Vala-kielillä tehtyä lähdekoodia.[2][4]

Projektin on aloittanut suomalainen fyysikko Jussi Pakkanen jouluna 2012 ja ensimmäinen julkaisu oli kaksi kuukautta myöhemmin.[2] Järjestelmä on nimetty mesonihiukkasen mukaan.[2] Kriteerinä nimelle oli, että vastaavalla nimellä ei saanut ennestään olla Debian-pakettia tai SourceForge-projektia ja esimerkiksi Gluon ei siksi kelvannut nimeksi.[5]

Taustaa muokkaa

Aikaisempi make oli hidas ja Makefile-syntaksi on ylläpidolle hankala.[5] Evan Martin toteutti Ninja-työkalun make-ohjelman ongelmien vuoksi.[5][6] Ninja ei toteuta eräitä asioita joita make-ohjelma toteutti vaan luottaa toisen ohjelman kuten Mesonin tuottamiin konfiguraatiotiedostoihin.[7]

Mesonin konfiguraatiokieli ei ole Turing-täydellinen useiden syiden vuoksi, joista on yksi on mahdollinen työkalujen toteutuskielen vaihtaminen mikäli se osoittautuu pullonkaulaksi.[5][8]

Meson pyrkii toistettaviin käännöksiin.[9]

Esimerkki muokkaa

Esimerkki käännöksestä Meson-työkaluilla komentorivillä:

 $ cd ohjelma
 $ meson builddir
 $ cd builddir
 $ ninja

.. jossa ohjelma on hakemisto, jossa käännettävä ohjelma sijaitsee ja builddir on nimi käännöksen aikana käytettävälle hakemistolle.

meson tarkistaa saatavilla olevat riippuvuudet ja tekee tarvittavan konfiguraation käännöstä varten. Meson-järjestelmä ei salli käännöstä lähdekoodihakemistossa. ninja suorittaa varsinaisen käännöksen. Uudelleen kääntämiseen riittää komennon ninja ajaminen.[10]

Oletuksena Meson käyttää Ninja-järjestelmää taustatyökaluna projektin kääntämiseen, mutta se tukee myös muita kuten Visual Studiota.[3] Ohjelmointiympäristö voi suorittaa kääntämisen Ninjan sijaan.[3]

Käännöskonfiguraatio Mesonille voi olla seuraavankaltainen:[11]

project('simple', 'c')
src = ['source1.c', 'source2.c', 'source3.c']
executable('myexe', src)

Tuki muokkaa

Muun muassa X.Org-ohjelmisto on lisännyt tuen Meson-käännösjärjestelmälle vaihtoehtona GNU Autotoolsille.[12] GNOME-projektilla on tavoitteena siirtyä Autotoolsista Meson-järjestelmään.[13]

Muita Meson-järjestelmää käyttäviä projekteja ovat muun muassa Mesa 3D ja Wayland-projekti.[14]

Kirjallisuutta muokkaa

Lähteet muokkaa

  1. Release 1.4.0, (viitattu ). Tieto on haettu Wikidatasta.
  2. a b c d e f g Tim Schürmann: A Better Builder admin-magazine.com. Viitattu 1.2.2020. (englanniksi)
  3. a b c Meson/ The Meson build system sourceforge.net. Viitattu 1.2.2020. (englanniksi)[vanhentunut linkki]
  4. Compiling D applications mesonbuild.com. Viitattu 1.2.2020. (englanniksi)
  5. a b c d Meson Frequently Asked Questions mesonbuild.com. Viitattu 1.2.2020. (englanniksi)
  6. Ninja, a new build system neugierig.org. 6.2.2011. Viitattu 1.2.2020. (englanniksi)
  7. David Röthlisberger: The Ninja build tool lwn.net. 16.11.2016. Viitattu 1.2.2020. (englanniksi)
  8. Against The Use Of Programming Languages in Configuration Files taint.org. 18.2.2011. Viitattu 1.2.2020. (englanniksi)
  9. https://mesonbuild.com/Reproducible-builds.html
  10. Using Meson mesonbuild.com. Viitattu 1.2.2020. (englanniksi)
  11. Meson sample mesonbuild.com. Viitattu 1.2.2020. (englanniksi)
  12. The Meson Build System Is Being Fitted For The X.Org Server phoronix.com. 27.3.2017. Viitattu 19.10.2019. (englanniksi)
  13. GNOME Goal: Port modules to use Meson build system wiki.gnome.org. Viitattu 19.10.2019. (englanniksi)
  14. List of projects using Meson mesonbuild.com. Viitattu 1.2.2020. (englanniksi)