Meson の 1 つのビルドディレクトリで複数のビルドシステムを混合する方針

Meson は、「プラットフォーム」によって Pkg-Config などのメカニズムを介して提供されるか、または主プロジェクトの Meson サブプロジェクトとして構築されるすべての依存関係という原則に基づいて設計されています。ビルドシステムを混在させたいプロジェクトがいくつかあります。つまり、同じビルドディレクトリ内の依存関係を、一方のビルドシステムからもう一方のビルドシステムを呼び出して構築することです。ビルドディレクトリは必ずしも互いに内部にある必要はありませんが、それが一般的なケースです。

このページでは、ビルドシステムの混合に関する Meson プロジェクトの立場をリストします。tl/dr バージョンは、このようなユースケースに役立つ機能をいくつか提供していますが、単純なケースでのみ機能するというものです。それ以上複雑なことは信頼できるものではなく、それを行おうとすると、事実上無限のメンテナンスの負担で Meson 開発者に負担をかけることになります。したがって、これらのユースケースは確実に機能するとは限らず、それらを使用するプロジェクトが現在動作していても、将来のバージョンでも確実に動作する保証はありません。

「ビルドシステムの混合」の定義

このページの目的では、ビルドシステムの混合とは、あるビルドシステムが、別のビルドシステムのビルドディレクトリからいかなる方法でもビルドアーティファクトを使用するメカニズムのすべてを意味します。

この定義は、依存関係がどのようなもので、どのように構築されるかを指定するのではなく、どのように消費されるかを指定するものであることに注意してください。たとえば、ビルドシステム X で構築されたスタンドアロンの依存ライブラリがあるとします。この場合、ビルド時に依存関係を構築するために Meson がビルドシステムを呼び出すことは、ビルドシステムの混合と解釈されます。一方、「Flatpak のような」アプローチでは、外部メカニズムを使用してライブラリを構築およびインストールし、Pkg-Config などの標準的なビルドシステムに依存しない方法でそれを消費しますが、それはビルドシステムの混合とは見なされません。ただし、アンインストールされた pkgconfig ファイルの使用は混合と見なされます。

サポートと互換性にとってこれは何を意味しますか?

Meson プロジェクトは、上記で説明した単純なビルドセットアップ以外のものも機能するようにするためのメンテナンス負担は負いません。また、プレーンな Meson のユーザーエクスペリエンスを悪化させるようなユースケースをサポートするための変更も行いません。これには、以下が含まれますが、これらに限定されません。

  • 混合プロジェクトの破損を引き起こす他のビルドシステムの変更は、Meson のバグとは見なされません。

  • 混合ビルドプロジェクトの破損は回帰とは見なされず、根本的な問題が何であっても、そのような問題はリリースブロッカーとは決して見なされません。

  • 他のビルドシステムの機能の欠如または破損回避のために、Mesonに大きな変更を加える必要があるようなユースケースはサポートされていません。これらの問題は、アップストリームで修正する必要があります。

検索結果は