リリースを作成します。
開発に加え、ほとんどのプロジェクトは定期的なソースリリースを行います。これらはソースコードの単独パッケージです(通常はtarまたはzip形式)。リビジョン制御メタデータは含まれず、ソースコードのみが含まれます。Mesonはmeson dist
コマンドを使用して、これらを生成する簡単な方法を提供します。
Mesonはこれらを生成する簡単な方法を提供します。1つのコマンドで構成されています(0.52.0以降で使用可能)。
meson dist
または、古いMesonバージョンでninja
バックエンドを使用している場合は、代わりに次のコマンドを使用します。
ninja dist
これにより、meson-dist
サブディレクトリのビルドツリーでprojectname-version.tar.xz
というファイルが作成されます。このアーカイブには、すべてのサブモジュール(再帰的に)を含むリビジョン管理の最新コミットの完全な内容が含まれます。すべてのリビジョン制御メタデータは削除されます。次に、Mesonはこのアーカイブを取り込み、完全なコンパイル
+テスト
+インストール
サイクルを実行して、それが動作することをテストします。これらすべてが渡されると、Mesonはそのアーカイブの隣にSHA-256
チェックサムファイルを作成します。
Autotools distとMeson dist
Mesonの動作はAutotoolsとは異なります。Autotools「dist」ターゲットは現在のソースツリーをパッケージ化します。Mesonは最新のリビジョン管理コミットをパッケージ化します。その理由は、開発者が配布されたアーカイブがリビジョン制御のコミット(特にリリース用にタグ付けされたもの)と一致しない偶発的なリリースを実行するのを防ぐためです。
あなたのリリースにサブプロジェクトを含める
meson dist
コマンドには--include-subprojects
コマンドラインオプションがあります。有効になっている場合、現在のビルドで使用されているすべてのサブプロジェクトのソースツリーも最終的なtarballに含まれます。これは、オフラインでビルドできる自己完結型のtarball(つまり--wrap-mode=nodownload
)を配布するのに役立ちます。
--no-tests
でビルドとテストをスキップします。
meson dist
コマンドには、生成されたパッケージのビルドとテストステップをスキップする--no-tests
オプションがあります。たとえば、すでに独自のテストを行っているCIで行った場合などに、時間を無駄にしないために使用できます。
--no-tests
を使用すると、Mesonに「生成されたパッケージをビルドしてテストしないでください。」と伝えることができます。
gitリポジトリに変更されていない変更が含まれている場合にエラーを上書きするには--allow-dirty
を使用します。
0.62.0以降リポジトリに変更されていない変更が含まれている場合、警告を発行する代わりに、Mesonはユーザーに通知するエラーメッセージを生成し、すぐに終了します。meson dist
に--allow-dirty
がオプションとして指定されている場合、代わりに警告が発行され、Mesonは通常どおりに進みます。
サブプロジェクトを別々にリリースします。
0.57.0以降meson dist
コマンドは、メインプロジェクトと同じgitリポジトリ内のサブプロジェクトの配布用tarballを作成できるようになりました。これは、プロジェクトの一部(ライブラリなど)を別々にビルドして配布できる場合に役立ちます。その場合、それらをsubprojects/mysub
に移動してそのディレクトリでmeson dist
を実行すると、メインプロジェクトの残りまたは他のサブプロジェクトではなく、そのサブディレクトリのソースコードのみを含むtarballが作成されるようになりました。
例えば
git clone https://github.com/myproject
cd myproject/subprojects/mysubproject
meson setup builddir
meson dist -C builddir
これにより、builddir/meson-dist/mysubproject-1.0.tar.xz
tarballが生成されます。
VCSから取得したバージョンを固定します。
バージョン 1.4.0 以降、meson dist
コマンドでディストリビューション tarball のビルド設定を書き換えることができます。これは、設定が次の例のようにリビジョン制御のメタデータに依存している場合に必要になります。
meson.build
:
project('tig', 'c',
version : run_command('version.sh', 'get-vcs').stdout.strip())
meson.add_dist_script('version.sh', 'set-dist', meson.project_version())
version.sh
:
#!/bin/sh
if [ "$1" = "get-vcs" ]; then
git -C "$MESON_SOURCE_ROOT" describe --always --dirty
elif [ "$1" = "set-dist" ]; then
$MESONREWRITE --sourcedir="$MESON_PROJECT_DIST_ROOT" kwargs set project / version "$2"
else
exit 1
fi
検索の結果は次のとおりです。