wimeのMandriva Linux向けRPMパッケージを更新・x86_64向けビルドメモとximサーバ(動作未確認)について
Wineのバージョン1.1.15から「x86_64上ではwinegccが正常に動作しない?(前半)」「x86_64上ではwinegccが正常に動作しない?(後半)」の問題がなくなったことによりx86_64上のビルドも問題なく行えるようになったことを受けて、別館の配布ページで公開していたwimeの.specファイルとソースRPMを更新した。また、バージョン2.0.x系も出ているため、そちらもパッケージ化した。
なお、手元には動作するWin32 IMEがないため、漢字変換の動作確認はできていない。
(2014/10/12)配布ページは削除済み。
バージョン1.8.5の.specファイルを更新
x86_64上のビルドのために用意した「winegcc32」パッケージは必要がなくなったため廃止し、「%ifarch」による分岐も無くした。その代わり、要求するWineのバージョンは1.1.15以上となった。バージョン2.0.1のビルドメモ(x86_64向け)
x86_64上でビルドしたときに、Wineと関係のないファイルは64bitの実行ファイルとなるようにする方針で試行錯誤した結果、下のような流れでビルドすることとなった。Makefileは修正していない。また、CFLAGSに%{optflags}を含めるとi586向けビルドで何故か本体が起動せず落ちる(外すと落ちない)ことが分かったのでx86_64上でのみ付けることにした。[引用]ファイル名: wime.spec(2.0.1-1kkr2009.0)より
%build # %{optflags} causes crash on i586 CFLAGS="-std=gnu99 -Wno-multichar -fgnu89-inline -fPIC" %ifarch x86_64 CFLAGS="${CFLAGS} %{optflags}" %endif export CFLAGS %make -C lib WINEINCDIR=%{_includedir}/wine %make -C tools/wimectrl %make -C xim %{__rm} lib/*.[oa] for dir in lib so dll exe tools/hinshi-list; do %make -C ${dir} CFLAGS="${CFLAGS} -m32" LDFLAGS="-m32" done
libディレクトリの中のファイル群は64bit/32bitの両方の部分から利用(静的リンク)されるため、先にx86_64向けの部分をビルドしてからlibディレクトリを掃除し、残りのx86_32向けの部分を個別にビルドする流れとなった。
以下はx86_64版のインストールされるファイルに関するfileコマンドによる情報から実行ファイルと共有オブジェクトに関する項目を抽出したもの。
$ find -type f -exec file {} \; | grep ELF ./usr/lib/wine/libwime.dll.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, stripped ./usr/lib/libwime.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, stripped ./usr/bin/wimexim: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped ./usr/bin/wimectrl: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped ./usr/bin/wime.exe.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, stripped ./usr/bin/hinshi-list.exe.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, stripped
ximサーバについて
バージョン2.0.0でXIMサーバwimeximが追加されているが、完成度はまだ低いらしい。環境変数XMODIFIERSに「@im=wimexim」を指定して使用するようだ。手元の環境ではIMEの関係もあって動作を確認できなかったため、以下の内容は正しくない可能性がある。
X11のリソース設定
[引用]ファイル名: wime-2.0.1/Readmeよりwimexim.ConversionKey: [Stkeys-]Key 漢字入力のオン/オフキーを指定します。 Stkeys は S(shift),C(ctrl),AかM(alt) を1つ以上指定します(必要ない場合、[Stkeys-]の部分は省略できます)。 Keyは キーボード上の1文字、あるいはキー名(keysymdef.hにあるもの)です。 例: A-` Altと"`"キー SC-space ShiftとCtrlとスペースキー F12 F12キー wimexim.DefaultCompositionFont: PixelSize,Foundry Family 変換ウィンドウのフォントセットが指定されなかったときに使うフォントを指定し ます。 Foundry,Family,PixelSizeはXLFDの要素です。
上記の設定をX11のリソースとして指定するようだ。下は設定例。
ファイル名: ~/.Xresources
wimexim.ConversionKey: [キー入力を示す「C-space」のような文字列] wimexim.DefaultCompositionFont: [サイズ],[Foundry文字列] [Family文字列]
XLFDというのはX11上のフォントを表す記述でxfontselでハイフン区切りになっている文字列となる。「fndry」「fmly」「pxlsz」が設定項目に対応する。
wimexim実行時に端末に出る「get_conv_key」の後ろの値が
$ xrdb ~/.Xresources $ wimexim get_conv_key:645:code 65(0x41), state 0x4 make_server:198:create disp=0x15de9d0 win=7c00001
のように表示される。
キー名についてはxevを実行したときの端末への出力における
state 0x10, keycode 65 (keysym 0x20, space), same_screen YES,
の部分を見ると対応が分かる。上はスペースキーの場合の出力となる。
この他、幾つかの注意点などがReadmeファイルに書かれている(が、よく分からない部分もある)。
使用したバージョン:
- Wine 1.1.15
- wime 1.8.5, 2.0.1