WINEでは毎年1月にメジャーバージョンを更新することになっており、現在、12月上旬に公開されたWine-6.23を開発版の最終バージョンとして、来年公開予定のWine-7.0への最終調整段階に入っています。
Plamo用の正式なパッケージは7.0が公開されてから作成する予定なものの、今回はその予行演習としてWINEをソースコードからビルドする作業を紹介しましょう。
ソースコードのダウンロードとビルドスクリプトの用意
WINEのビルドには32ビット用のコンパイラやライブラリが必要で、ゼロから用意するのはなかなか大変なものの、先に紹介したパッケージ群をインストールしてWINEが動作する環境を作っておけば、後は他のソフトウェアと同じ手順でビルドすることができます。今回は本稿執筆時点での最新版であるwine-7.0-rc2をビルドしてみることにします。
まずは、WineHQのサイトから、wine-7.0-rc2のソースコードをダウンロード、展開しておきます。
WINEのソースコードにはconfigureスクリプトが付属しているので、configureとmake installで手動インストールすることも可能なものの、パッケージ化しておけばインストールやアンインストールが簡単になるので、既存のビルドスクリプトを流用してパッケージ化することにします。Plamo Linuxでは、各パッケージのビルドスクリプトは/usr/share/doc/以下に収められています。
今回はconfigureスクリプトに渡すオプション等は6.20の設定のまま使い、ヘッダ部分のバージョン番号回りのみを7.0-rc2用に修正しました。
エラー発生!!
config処理では、6.20の時と同様OpenCLやOSS sound system、libcapi20がサポートされない旨が指摘されたものの、特に問題なく終了しました。
ところが、ビルドしてみると途中でエラー終了してしまいます。
あれれ、と思って調べたところ、Wine-7.0系ではDirect3D12の機能をVULKAN用に変換するvkd3dライブラリの1.2以上が必要になるようです。それでは、とvkd3d-1.2をビルドしようとすると、今度は「SPIR-Vのヘッダが古すぎる」と怒られました。
関連パッケージを更新して再挑戦
インストール済みのSPIRV_Headersは1.4.1なのに対し、SPIR-Vのサイトを確認すると、1.5.4というバージョンが公開されています。
SPIRV-HeadersはSPIR-Vが使う変数や関数の定義集(ヘッダーファイル)で、コンパイル等の処理は不要なため、既存のビルドスクリプトのバージョン番号回りを修正する程度でエラーなくパッケージ化できました。
SPIRV_Headersを1.5.4に更新するとvkd3d-1.2もきちんとビルドできるようになり、vkd3d-1.2に更新すると、無事Wine-7.0-rc2のビルドも完了しました。
これで64ビット版のWine-7.0-rc2はビルドできたものの、WINEでは32ビットのバイナリも必要なので、次にvkd3d-1.2の32ビット版をビルド、インストールした上で、32ビット版のWINEのビルドに進みます。
多少試行錯誤があったものの、何とかwine-7.0-rc2の64ビット版と32ビット版のパッケージが作成できました。
新しいパッケージの動作確認
6.20と7.0-rc2のサイズを比べると、64ビット版で10MB、32ビット版で7MBほど大きくなっていました。
updatepkgコマンドで新しいパッケージに更新し、winecfgの動作を確認します。
バージョンアップすると既存のWine環境(~/Wine/Wine01/等)にインストールされた設定ファイル類を更新するようで、最初の起動時にはすこし待たされるものの、winecfgも無事起動し、バージョン番号(7.0-rc2)も確認できました。
インストール済のアプリもたいていは問題なく動いているものの、「3D麻雀悠遊」の得点計算画面の文字表示を見ると、フォントがかすれてしまっている感じです。どうやらフォントのレンダリングがうまく行っていないようです。
バグレポートを出せればいいのだけれど、wine-6.20から7.0-rc2の間では4つくらいバージョンがあるので、どの時点で忍びこんだバグなのかをチェックするのは大変そうです。まぁ、まだRCの状態なので、今回は様子を見ることにしておきます。
以上、とりあえずWine-7.0-rc2が動くことは確認できたので、後は今回引っかかったSPIR-Vのように、更新が必要なパッケージをチェックしつつ、年明けに控えるWine-7.0の正式リリースを待つことにしましょう。
WINEは64ビットと32ビットを自在に使い分ける複雑なソフトウェアで、最初はなかなか手を付けにくいものの、一度動作する環境を構築できれば、後は通常のソフトウェア同様、パーツごとに更新も可能になります。
今回は触れられなかったものの、WINEでは開発版に反映される前のパッチを集めたWine-stagingというパッチ集も公開しており、これらのパッチを適用しないと動作しないアプリも散在するようです。
本稿を参考に、WINEの新バージョンへの挑戦や、これら新機能の追加など、読者の方々で試された結果を報告いただければ幸いです。