続・玩式草子 ―戯れせんとや生まれけん―

第17回 Days of WINE and Struggles[4]

この記事を読むのに必要な時間:およそ 5.5 分

世の中が新型コロナウイルスのニュース一色になっているうちに,気付くと2月も末,今年の1/6が終る時期になってしまいました。

例年だと,この時期は年度末作業が重なるため休載しがちなものの,今年はWINEのトラブルネタを書きためていたこともあって(苦笑⁠⁠,何とか月例の更新はできそうです。

さて,今回,ようやくWINEのビルドに取りかかります。WINEは更新頻度が高く,すでに5.xのシリーズが公開されているものの,ざっと5.2をビルドしてみた感じでは,ビルドの手順や必要なパッケージは本稿で扱っている4.21と変らないようです。

8月YX日:WINE用32ビット版パッケージの作成開始

CLFSレベルのパッケージだけではWINEの動作に全く足りないことに気づきしばし呆然としたものの,落ちついて考えると,WINEに必要なのは32ビット版のライブラリであって,システムユーティリティや設定ツール,メールやログのサーバ等々,システム運用関連のツールは不要だろうし,Emacs等のエディタやdocbook回りの機能,XfceやMateといったデスクトップ環境なども必要ないはずだ。

そう考えると多少気が楽になり,具体的にWINEがどれだけのライブラリを必要とするかは不明なものの,とりあえずX回りのライブラリから32ビット版を作成していくことにした。

X回りのライブラリは依存関係があるため,BLFSの手順を参照しながら,32ビット版パッケージをビルド,インストールしていく。

当初は64ビット版用のPlamoBuildスクリプトをコピーして,32ビット版に必要な設定を手動で追加していたものの,途中からはPlamoBuildスクリプトメーカー(make_PlamoBuild.py)を32ビット版にも対応できるように改造し,それを使って32ビット版用のビルドスクリプトを新造するようにしたので,32ビット版パッケージの作成速度はずいぶん改善した。

BLFSの手順に従ってビルドを進めてゆくと,OpenGL用の3DグラフィックライブラリであるMesaやXorgのサーバ,各種ドライバ類をビルドすることになっている。しかしながら,WINEが要求するのはライブラリの機能であって,Xorgのサーバやドライバは不要だろう,と考えてスキップすることにした。加えて,32ビット版のXアプリやフォントファイル等も不要なので,とりあえずlibxcbの32ビット版を作ったあたりで一段落とし,WINEのビルドを試してみることにした。

WINEには必要なライブラリが揃っているかをチェックするconfigureスクリプトが用意されている。このスクリプトがどこまで進むかを試してみたところ,⁠FreeTypeの32ビット開発環境が無い」というところでエラー終了した。

$ ~/WINE/wine-4.21 ./configure
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking whether make sets $(MAKE)... yes
...
checking for XkbQueryExtension in -lX11... yes
checking for -lXcursor... libXcursor.so.1
checking for -lXi... libXi.so.6
...
checking ft2build.h presence... yes
checking for ft2build.h... yes
checking for -lfreetype... not found
configure: error: FreeType 32-bit development files not found. Fonts will not be built.
Use the --without-freetype option if you really want this.

やはりフォント回りのライブラリも32ビット版が必要なようだ。もっとも,新しくインストールしたX回りのチェックは通っているので,このまま32ビット版のパッケージを揃えていけば何とかなりそうな希望は見えてきた。

FreeTypeの次は何が必要になるのだろう,とメッセージにあるように--without-freetypeオプションを指定してconfigureを再実行してみると,意外にも最後まで処理が進み,不足している機能やライブラリが多数表示される結果となった。

$ ~/WINE/wine-4.21$ .configure --without-freetype
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking whether make sets $(MAKE)... yes
...
config.status: executing tools/makedep commands
config.status: executing Makefile commands

configure: MinGW compiler not found, cross-compiling PE files won't be supported.
configure: libGLU 32-bit development files not found, GLU won't be supported.
configure: libOSMesa 32-bit development files not found (or too old), OpenGL rendering in bitmaps won't be supported.
configure: OpenCL 32-bit development files not found, OpenCL won't be supported.
configure: pcap 32-bit development files not found, wpcap won't be supported.
configure: libdbus 32-bit development files not found, no dynamic device support.
configure: libgnutls 32-bit development files too old, bcrypt encryption won't be supported.
configure: lib(n)curses 32-bit development files not found, curses won't be supported.
configure: libsane 32-bit development files not found, scanners won't be supported.
configure: libv4l2 32-bit development files not found.
configure: libgphoto2 32-bit development files not found, digital cameras won't be supported.
configure: libgphoto2_port 32-bit development files not found, digital cameras won't be auto-detected.
configure: liblcms2 32-bit development files not found, Color Management won't be supported.
configure: libz 32-bit development files not found, data compression won't be supported.
configure: libpulse 32-bit development files not found or too old, Pulse won't be supported.
configure: gstreamer-1.0 base plugins 32-bit development files not found, GStreamer won't be supported.
configure: OSS sound system found but too old (OSSv4 needed), OSS won't be supported.
configure: libudev 32-bit development files not found, plug and play won't be supported.
configure: libSDL2 32-bit development files not found, SDL2 won't be supported.
configure: libFAudio 32-bit development files not found, XAudio2 won't be supported.
configure: libcapi20 32-bit development files not found, ISDN won't be supported.
configure: libcups 32-bit development files not found, CUPS won't be supported.
configure: fontconfig 32-bit development files not found, fontconfig won't be supported.
configure: libgsm 32-bit development files not found, gsm 06.10 codec won't be supported.
configure: libkrb5 32-bit development files not found (or too old), Kerberos won't be supported.
configure: libgssapi_krb5 32-bit development files not found (or too old), no Kerberos SSP support.
configure: libtiff 32-bit development files not found, TIFF won't be supported.
configure: libmpg123 32-bit development files not found (or too old), mp3 codec won't be supported.
configure: libopenal 32-bit development files not found (or too old), OpenAL won't be supported.
configure: libvulkan and libMoltenVK 32-bit development files not found, Vulkan won't be supported.
configure: vkd3d 32-bit development files not found (or too old), Direct3D 12 won't be supported.
configure: libldap (OpenLDAP) 32-bit development files not found, LDAP won't be supported.
configure: Finished.  Do 'make' to compile Wine.

見つからないとエラー終了するFreeTypeとは異なり,これらのライブラリはWINEにとって必須ではないのだろう。指摘されたライブラリの多くは64ビット版を作ったことがあるものの,MinGWやlibvulkan等,見覚えのないソフトウェアも散在する。もっとも,それらがどういう機能に関わるのかも説明されているので,まずは見覚えがあるソフトウェアの32ビット版から作っていくことにしよう。

著者プロフィール

こじまみつひろ

Plamo Linuxとりまとめ役。もともとは人類学的にハッカー文化を研究しようとしていたものの,いつの間にかミイラ取りがミイラになってOSSの世界にどっぷりと漬かってしまいました。最近は田舎に隠棲して半農半自営な生活をしながらソフトウェアと戯れています。

URLhttp://www.linet.gr.jp/~kojima/Plamo/index.html