meson-python

Meson ビルドシステムを利用する Python パッケージビルドバックエンド。

meson-python は Python ビルドシステムフックを実装し、pipbuild などの Python ビルドフロントエンドが Meson ビルド定義に基づく Python パッケージのビルドやインストールを実行できるようになります。

Meson は非常に可読性の高いドメイン固有言語で記述されたビルド定義と非常に高速なビルドが特徴です。Meson は Windows、macOS、Linux、およびその他の UNIX 系オペレーティングシステム、さらに主要なコンパイラツールチェーンをすべてサポートしています。また、C、C++、Cython、D、Fortran、Objective C、Rust を含む多数のプログラミング言語で記述されたコードのコンパイルとリンクを可能にします。ディストリビューションパッケージと適切に連携するマルチプラットフォーム依存プロバイダーが組み込まれており、依存関係をサブプロジェクトとしてビルドする機能も備えています。Meson に詳しくない場合は、Meson チュートリアル を確認することをお勧めします。

meson-python は Meson の長所を引き継いでおり、そのためコンパイル言語で拡張モジュールをビルドする Python パッケージに最適です。 meson-python は小さなパッケージにも非常に複雑なパッケージにも適しています。詳細は ディレクトリを参照してください。

Meson プロジェクトの Python ソースディストリビューション (sdist) またはバイナリ Python パッケージ (wheel) を pipbuild でビルドできるようにするには、ソースツリーのルートにトップレベルの meson.build の横に、meson-python を Python ビルドバックエンドとして指定する pyproject.toml ファイルを追加するだけで十分です。

[build-system]
build-backend = 'mesonpy'
requires = ['meson-python']

パッケージ名とバージョンは meson.build ファイルの project() 関数で Meson に提供されるメタデータから抽出されます。パッケージのメタデータは、pyproject.tomlproject セクションの標準パッケージメタデータ形式を使用してオーバーライドしたり、拡張したりできます。

[project]
name = 'example'
version = '1.0.0'
description = 'Example package using the meson-python build backend'
readme = 'README.rst'
license = {file = 'LICENSE.txt'}
authors = [
  {name = 'Au Thor', email = 'author@example.com'},
]

[project.scripts]
example = 'example.cli:main'

pyproject.toml ファイルの詳細な説明については PyPA ドキュメント を参照してください。Python パッケージングのための meson-python と Meson についての使用ガイドについては チュートリアル を参照してください。