試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

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. バージョン1.8.5の.specファイルを更新
  2. バージョン2.0.1のビルドメモ(x86_64向け)
  3. ximサーバについて
    1. X11のリソース設定

バージョン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