wraptoolを使用する

Wraptoolは、WrapDBデータベースを使用してソース依存関係を管理することを可能にするMesonのサブコマンドです。依存関係のインストールと更新などの、必要なあらゆる機能を提供します。ラップツールはすべてのプラットフォームで動作し、唯一の制限はラップ定義がターゲットプラットフォームで動作する必要があることです。動作しないラップが見つかった場合は、バグを報告するか、さらに良い方法としてパッチを送信してください。

ここでのすべてのコード例は、最上位のソースディレクトリでコマンドを実行していることを前提としています。$マークで始まる行は、入力するコマンドです。

簡単なクエリ

行う最も簡単な操作は、使用可能なパッケージのリストをクエリすることです。すべてをリストするには、次のコマンドを発行します。

$ meson wrap list
box2d
enet
gtest
libjpeg
liblzma
libpng
libxml2
lua
ogg
sqlite
vorbis
zlib

通常、特定のパッケージを検索する場合があります。これはsearchコマンドを使用して行うことができます。

$ meson wrap search jpeg
libjpeg

パッケージがラップのリストにない場合、searchコマンドはすべてのラップ依存関係を調べます。

$ meson wrap search glib-2.0
Dependency glib-2.0 found in wrap glib

インストール可能なlibjpegのバージョンを特定するには、infoコマンドを発行します。

$ meson wrap info libjpeg
Available versions of libjpeg:
  9a 2

最初の数値はアップストリームのリリースバージョンで、この場合は9aです。2番目の数値はラップの改訂番号です。これらは特定のものに関して関連していませんが、大きい数値は新しいリリースを示します。常に最新バージョンのリリースを使用する必要があります。

依存関係のインストール

依存関係のインストールも簡単です。まず、ソースツリーのトップにサブプロジェクトディレクトリを作成し、インストールコマンドを発行します。

$ meson wrap install libjpeg
Installed libjpeg branch 9a revision 2

これで、meson.buildファイルでsubproject('libjpeg')を発行して使用できます。

プロジェクトが最新かどうかを確認するには、statusコマンドを発行します。

$ meson wrap status
Subproject status
 libjpeg up to date. Branch 9a, revision 2.
 zlib not up to date. Have 1.2.8 2, but 1.2.8 4 is available.

この場合、zlibには新しいリリースがあります。更新は簡単です。

$ meson wrap update zlib
Updated zlib to branch 1.2.8 revision 4

Wraptoolは、これらの他に他のこともできます。これらのドキュメントは、meson wrap --helpでアクセスできるコマンドラインヘルプにあります。

依存関係の自動フォールバック

0.64.0以降のMesonは、WrapDBを使用して不足している依存関係を自動的に見つけることができます。

ユーザーは最新のデータベースをダウンロードするだけで、以下のコマンドはこれをsubprojects/wrapdb.jsonに格納します: $ meson wrap update-db

データベースがローカルに利用可能になると、システムにはないがWrapDBで利用可能な依存関係は自動的にダウンロードされます。

WrapDBサブプロジェクトの自動フェッチは、ファイルsubprojects/wrapdb.jsonを削除するか、--wrap-mode=nodownloadを使用することで無効にすることができます。

検索結果は次のとおりです。