Wine ランタイムのビルド
提供ランタイム
Section titled “提供ランタイム”wine-build リポジトリは、バブトンイリホヨ ランチャーで使用する macOS 向け Wine ランタイムを再現可能にビルドしてパッケージングするためのパイプラインです。
現在は 3 つのランタイム系列を維持しています。
| ランタイム | ビルドコマンド | 出力先 |
|---|---|---|
wine-winehq-11.11 | ./scripts/winehq-11.11/build-all.sh | artifacts/wine-winehq-11.11/wine-winehq-11.11 |
wine-winehq-11 | ./scripts/winehq-11/build-all.sh | artifacts/wine-winehq-11/wine-winehq-11 |
wine-crossover-26.1.0 | ./scripts/crossover-26.1.0/build-all.sh | artifacts/wine-crossover-26.1.0/wine-crossover-26.1.0 |
WineHQ 11.11 は現在の WineHQ 系列の基準ビルドです。 WineHQ 11.0 は比較と互換性のための別ラインです。 CrossOver 26.1.0 は CrossOver ベースの独立した patch set を適用する別ラインで、WineHQ 専用の DWProton extras や HoYoPlay proxy は既定では含めません。
macOS でのビルドを前提にしています。 まず Homebrew の依存関係と共有 toolchain を準備します。
./scripts/common/install-brew-deps.sh./scripts/common/fetch-toolchain.sh各 build-all.sh も共有 toolchain の準備を呼び出します。
初回ビルド時に上のコマンドを先に実行しておくと、依存関係の問題とランタイムビルドの問題を切り分けやすくなります。
対象ランタイムに合わせて build-all.sh を実行します。
./scripts/winehq-11.11/build-all.sh./scripts/winehq-11/build-all.sh./scripts/crossover-26.1.0/build-all.shpatch をきれいに再適用したい場合は、対象ランタイムの clean.sh を先に実行します。
./scripts/winehq-11.11/clean.sh./scripts/winehq-11.11/build-all.shclean.sh は選択した flavor の source と output を削除しますが、共有 download cache と toolchain は残します。
patch 適用状態を検証する場合は、--keep-source を使わず clean build を行うのが無難です。
ビルドパイプライン
Section titled “ビルドパイプライン”CrossOver 系列は次の流れでビルドされます。
common/fetch-toolchain.shcrossover-26.1.0/fetch-source.shcrossover-26.1.0/apply-patches.shcrossover-26.1.0/configure.shcommon/build.shcommon/install.shcommon/package.shWineHQ 系列では DWProton extras と HoYoPlay proxy も準備します。
common/fetch-toolchain.shBDIH-HelperProgram/hoyoplay-proxy/build.shwinehq-*/fetch-source.shwinehq-*/apply-patches.shwinehq-*/fetch-dwproton-source.shwinehq-*/prepare-dwproton-lsteamclient.shwinehq-*/configure.shcommon/build.shwinehq-*/build-proton-steam.shcommon/install.shcommon/package.shWineHQ パッケージには DWProton steam.exe、lsteamclient、HoYoPlay proxy、GStreamer、macOS msync、Steam CEF 互換パッチ、HoYoPlay routing backend が含まれます。
CrossOver パッケージには Steam と object-directory の互換パッチ、共有 process telemetry パッチが含まれますが、WineHQ 専用 extras は既定では含まれません。
Steam 基準
Section titled “Steam 基準”WineHQ 系列と CrossOver 系列は、対象となる steamwebhelper.exe プロセスに次の Steam UI 安定化引数を適用します。
--no-sandbox --in-process-gpu --disable-gpuこの引数は steam.exe 本体には付けません。
また、crashpad handler と host-resolver helper には注入しません。
Steam overlay DLL override は Wine patch の一部ではないため、overlay 比較が必要な場合は別途指定します。
HoYoPlay 基準
Section titled “HoYoPlay 基準”WineHQ 系列には、HoYoPlay が起動しようとするゲーム child process を検出し、ランチャーが別の game prefix で実際のゲームを起動できるよう route event を送る backend が含まれます。 この構造では、HoYoPlay のログインと更新状態を launcher prefix に置き、DXMT、media、HoYoProtect、msync などのゲーム別状態を game prefix に分離します。
これは Wine だけで完結するエンドユーザー向けフローではありません。 バブトンイリホヨ ランチャーが prefix 作成、イベント検証、game profile 準備、実際の起動、プロセス追跡を担当する必要があります。
Eternal Return 関連メモ
Section titled “Eternal Return 関連メモ”WineHQ 11.11 では、Eternal Return 実行中に WineHQ 11.0 より高い set_timer と select の wineserver request が観測された記録があります。
この文書では、これを確定した regression や release blocker ではなく、CPU と発熱余裕に影響し得る性能調査項目として扱います。
リリースビルドに一時的な request counter を残してはいけません。 frametime 改善が測定され、Steam と HoYoverse workload で回帰がないことを確認した後にだけ、変更を release patch set に入れる方針です。
オプションと出力
Section titled “オプションと出力”共通 override の例です。
BUILD_NAME=winehq-11-test ./scripts/winehq-11/build-all.shBREW_PREFIX="$(brew --prefix)" ./scripts/crossover-26.1.0/build-all.shBUNDLE_PROTON_EXTRAS=0 ./scripts/winehq-11/build-all.shBUNDLE_DXMT_RUNTIME=1 \DXMT_RUNTIME_DIR=/path/to/dxmt-runtime \./scripts/winehq-11.11/build-all.shパッケージング結果は次の構造で生成されます。
artifacts/wine-$BUILD_NAME/ wine-$BUILD_NAME-build/ wine-$BUILD_NAME-install/ wine-$BUILD_NAME/ wine-$BUILD_NAME.tar.gz wine-$BUILD_NAME.tar.gz.sha256 wine-$BUILD_NAME.json