Meson

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

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]

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]

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 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)

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 | muokkaa wikitekstiä]
  1. Release 1.6.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)