Meson パッケージガイドライン
32ビット – CLR – クロス – Eclipse – Electron – Free Pascal – GNOME – Go – Haskell – Java – KDE – カーネル – Lisp – MinGW – Node.js – ノンフリー – OCaml – Perl – PHP – Python – R – Ruby – Rust – VCS – ウェブ – Wine
- Meson はオープンソースのビルドシステムで、非常に高速で、さらに重要なことに、可能な限りユーザーフレンドリーであることを意図しています。
Python で書かれた Meson は、マルチプラットフォームのサポート、複数のプログラミング言語のサポート、クロスコンパイルなどを特徴としています。
Meson はソフトウェアを直接ビルドするのではなく、バックエンドのビルドシステムをセットアップします。一般的には ninja と共に使われますが、他のビルドシステムを使うこともできます。一般的には、GNU ビルドシステム を置き換えるために使われます。
このドキュメントは Meson を使うソフトウェアのための PKGBUILD を書くための標準ガイドラインを扱っています。
目次
Usage
必要条件
meson は PKGBUILD の makedepends の配列に含まれなければなりません。
build()
設定とビルドは通常 meson バイナリを使う ですが、Arch Linux arch-meson ラッパースクリプトを使う ことによっても行うことができます。
meson と arch-meson コマンドはどちらも options と source directory と build directory を使用法のシンタックスに含んでいます。
- オプション:少なくとも
--prefix /usrを含める必要がありますが、その他のオプションはmeson configure --helpで確認してください。また ソフトウェア固有の構築オプション も確認してください。 - ソースディレクトリ (または "sourcedir"): ソフトウェアのソースコードが格納されている場所です。例えば
.,$pkgnameまたは$pkgname-$pkgverなどです。 - 一般的には
buildまたは_buildという名前ですが、任意で指定できます。
meson バイナリを直接使用する場合
Arch Linux のパッケージはファイルを /usr/local にインストールしてはいけないため、--prefix=/usr は常に meson のバイナリに渡す必要があります、これは Arch パッケージガイドライン#パッケージエチケット に従っています。--buildtype=plain 組み込みのオプションは、あなたが何をしているかを知っていれば、他の値を設定することができます。
arch-meson ラッパースクリプトの使用
arch-meson は meson パッケージに含まれるラッパースクリプトで、Arch パッケージで使われるであろう Meson 組み込みのオプションのいくつかを設定し、パッケージ製作者の時間と PKGBUILD のコードを節約する利点があります。arch-meson に書かれている説明を引用すると、Highly opinionated wrapper for Arch Linux packaging(Arch Linux のパッケージングのための高度なラッパー)です。
例:
build() {
arch-meson source build
meson compile -C build
}
ソフトウェア固有のビルドオプションを設定する
Meson にはいくつかの 組み込みビルドオプション (たとえば --prefix) がありますが、パッケージ化されるソフトウェアには、パッケージャーが考慮すべき、他の ビルドオプション があるかもしれません。有効なソフトウェア固有のビルドオプションは、通常 meson_options.txt という名前のファイルに書かれています。(存在する場合) と meson.build にあります。これらのファイルで option(settings) を探し、settings を読みます。
ソフトウェア固有のビルドオプションを使用するには、-D key=value という記法を使います。ここで key はプロジェクトで設定したビルドオプション名、 value は例えば true などの有効な値です。
例えば、gtranslator は以下のようなビルドオプションを持っています。
meson_options.txt
option('gtk_doc', type: 'boolean', value: false, description: 'use gtk-doc to build documentation')
したがって、そのドキュメントを構築するためには、Meson を実行する必要があります。 -D gtk_doc=true build オプションを指定すると、コマンドラインは次のようになります。
arch-meson $pkgname-$pkgver build -Dgtk_doc=true
check()
パッケージ化されるソフトウェアがテストスイートを提供しているなら、PKGBUILD の check() 関数で実行することを検討してください。これは meson test コマンドで実行することができます。
例
check() {
meson test -C build
}
ここで build は、上記の #build() ステップで使用したものと同じビルドディレクトリ名です。
詳細については meson test --help と Unit tests in Meson docs を参照してください。
package()
Packaging normally requires running only meson install, but check if another installation command is required (e.g. an uncommon license). Use the same build directory as above and set the --destdir flag:
package() {
meson install -C build --destdir "$pkgdir"
}
Template
To sum up the above instructions and to provide a single copy-and-paste point, see the template below:
makedepends=(meson)
build() {
arch-meson $pkgname-$pkgver build
meson compile -C build
}
check() {
meson test -C build
}
package() {
meson install -C build --destdir "$pkgdir"
}
Example packages
This is a small list of packages that use Meson. See other packages in the list "Required by" in meson.