「Meson パッケージガイドライン」の版間の差分
(→Requirements: 翻訳) |
(→build(): 翻訳) |
||
22行目: | 22行目: | ||
=== build() === |
=== build() === |
||
+ | 設定とビルドは通常 [[#Meson バイナリを直接使用する|''meson'' バイナリを使う]] ですが、[[#arch-meson ラッパースクリプトの使用|Arch Linux ''arch-meson'' ラッパースクリプトを使う]] ことによっても行うことができます。 |
||
− | Configuring and building is normally done [[#Using meson binary directly|using ''meson'' binary]], but it can also be done by [[#Using arch-meson wrapper script|using Arch Linux's ''arch-meson'' wrapper script]]. |
||
− | + | ''meson'' と ''arch-meson'' コマンドはどちらも '''options''' と '''source directory''' と '''build directory''' を使用法のシンタックスに含んでいます。 |
|
+ | * '''オプション''':少なくとも {{ic|--prefix /usr}} を含める必要がありますが、その他のオプションは {{ic|meson configure --help}} で確認してください。また [[#ソフトウェア固有の構築オプションの設定|ソフトウェア固有の構築オプション]] も確認してください。 |
||
− | * '''options''': must include at least {{ic|--prefix /usr}}, but make sure to check other options with {{ic|meson configure --help}}; also check [[#Setting software-specific build options|software-specific build options]]. |
||
− | * ''' |
+ | * '''ソースディレクトリ''' (または "sourcedir"): ソフトウェアのソースコードが格納されている場所です。例えば {{ic|.}}, {{ic|$pkgname}} または {{ic|$pkgname-$pkgver}} などです。 |
+ | * 一般的には {{ic|build}} または {{ic|_build}} という名前ですが、任意で指定できます。 |
||
− | * '''build directory''' (or "builddir"): where the build files will stored by Meson; commonly named {{ic|build}} or {{ic|_build}}, but it is discretionary. |
||
+ | {{Note|ソースディレクトリがビルドディレクトリの前に ''meson'' に渡される場合と、その逆の場合がありますが、Meson はどちらがどちらかを知っていて適切に環境をセットアップするので問題ありません。}} |
||
− | {{Note|It does not matter if source directory is passed to ''meson'' before the build directory, and vice-versa, as Meson will know which is which and will set up the environment properly.}} |
||
==== Using meson binary directly ==== |
==== Using meson binary directly ==== |
2022年2月17日 (木) 18:17時点における版
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
という名前ですが、任意で指定できます。
Using meson binary directly
Notice --prefix=/usr
always needs to be passed to meson binary because Arch Linux packages must not install files to /usr/local
, according Arch package guidelines#Package etiquette. The --buildtype=plain
built-in option can be set to another value, if you know what you are doing.
Example:
build() { meson --prefix=/usr --buildtype=plain source build meson compile -C build }
meson compile
is a wrapper for supported back-end build systems, which currently defaults to ninja[1]
Using arch-meson wrapper script
arch-meson is a wrapper script included in meson package which has the advantage of setting some of Meson built-in options that would probably be used in an Arch package, saving packager's time and code in the PKGBUILD. Quoting the description written in arch-meson, it is a "Highly opinionated wrapper for Arch Linux packaging".
Example:
build() { arch-meson source build meson compile -C build }
Setting software-specific build options
While Meson has some built-in build options (e.g. --prefix
), the software being packaged could have other build options which the packager should consider. Valid software-specific build options are normally found in a file named meson_options.txt
(if present) and in meson.build
. Look for option(settings)
in these files, then read the settings
.
To use a software-specific build option, use the notation -D key=value
, where key
is the build option name set in the project and value
is a valid value, like e.g. true
.
For instance, gtranslator has the following build options:
meson_options.txt
option('gtk_doc', type: 'boolean', value: false, description: 'use gtk-doc to build documentation')
So, to build its documentation, one must run Meson appending -D gtk_doc=true
build option, resulting in a command line like e.g.
arch-meson $pkgname-$pkgver build -Dgtk_doc=true
check()
If the software being packaged provides test suite, consider running it in the PKGBUILD's check() function. This can be accomplished with meson test
command.
Example:
check() { meson test -C build }
where build
is the same build directory name used in the above #build() step.
See meson test --help
and Unit tests in Meson docs for more info.
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.