wime 1.8.3の覚え書きとebuild更新
wimeに関しては
- wimeにATOK2008体験版を入れて動作するかどうかを確認する(準備とIMEインストール)
- wimeにATOK2008体験版を入れて動作するかどうかを確認する(動作確認・各種制御・入力メソッド対応など)
を参照。ここで扱うのは、バージョン1.8.3になったことによる変更とGentoo向けのebuildについて。
- uim-cannaで動作を確認
- Gentoo Linuxのebuild更新と、x86_64上での手動ビルドについて
- Gentoo Linuxでexecutable stacksによるメッセージが出る件についての対処
uim-cannaで動作を確認
キーの割り当ての関係の事情*1により、現状でwimeを使ってかな入力をするのに一番使いやすそうと思われていたのがuim-cannaだったのだが、バージョン1.8.2までは未実装関数の関係で処理が正常に進まず、使えなかった。今回の(1.8.2から1.8.3への)バージョンアップでは、大変ありがたいことに、この部分の処理が改善されて、uim-cannaでも使えるようになった。これは、かな入力をするユーザにとっては朗報。
あとは、uim側の「ーキーがShiftキーを押さないと出ない」という問題が解消されれば...
変換候補数に関する不具合(1.8.4で修正済み)
例えば、「備忘録」を変換(確定)した後で「い」を変換しようとすると、2つの候補しか出ない。逆に、候補数の多い文字を確定した後はひらがなの候補が大量に出たりしている。
これらの現象はscim-cannaでは起こらず、また、uim-cannaで本物のCannaを使用した場合にもこのようにはならない。
(2008/8/9)大変ありがたいことに、この不具合はwimeのバージョン1.8.4で早くも修正された。
Gentoo Linuxのebuild更新と、x86_64上での手動ビルドについて
今回も、ビルド上の都合により、ebuildの他にパッチ*2を用意している。変数CFLAGSに関してはそのまま使えるため、これに関する処理は外している。また、x86_64上でビルドする場合のみsed -i 's:$(PREFIX)/lib:$(PREFIX)/lib32:' so/Makefile
を実行して、libwime.soを/usr/lib32/に入れるように変更した(Makefileへの変更を極力減らす目的)。もしx86_64上で手動ビルドする場合、installターゲットでインストールする前にこれを実行する(x86_32なライブラリが/usr/lib32/にあるディストリの場合)。
以下、x86_64上で手動ビルドする流れ。
$ tar jxf [wime-1.8.3.tar.bz2の場所] $ cd wime-1.8.3/ $ patch -p1 < [wime-1.8.3-gentoo.patchの場所] $ sed -i 's:$(PREFIX)/lib:$(PREFIX)/lib32:' so/Makefile $ make $ sudo make install PREFIX=/usr WINELIBDIR=/usr/lib32/wine
ebuildとパッチは
cid-3f9be5b1cd4a806c.skydrive.live.com/browse.aspx/%E5%85%AC%E9%96%8B/Gentoo%20Linux%20ebuild/app-i18n/wime
にアップロードしている。
(2008/8/9)バージョン1.8.4向けのebuildを追加アップロードした。処理自体は同じだが、1.8.3のときのパッチを再利用する関係で、そのファイル名の指定の部分のみ変更した。
(2008/8/30)同様にバージョン1.8.5向けのebuildをアップロードしたが、手元ではATOK2008の体験版は期限切れのため使えず、動作確認は行えない。変更点は、atok-taiken.regのエンコーディングがShift_JISになったことにより変換作業を省いた部分。パッチは1.8.3向けのもの(wime-1.8.3-gentoo.patch)を使える。
Gentoo Linuxでexecutable stacksによるメッセージが出る件についての対処
既に、上のURLでebuildファイルと同時にアップロードしたwime-1.8.3-gentoo.patchでは修正しているが、Gentoo Linuxのebuildでインストールしたときに* QA Notice: The following files contain executable stacks * Files with executable stacks will not work properly (or at all!) * on some architectures/operating systems. A bug should be filed * at http://bugs.gentoo.org/ to make sure the file is fixed. * For more information, see http://hardened.gentoo.org/gnu-stack.xml * Please include this file in your report: * /var/tmp/portage/app-i18n/wime-1.8.3/temp/scanelf-execstack.log * RWX --- --- usr/bin/wime.exe.so
というメッセージが出ていたので、
http://web.archive.org/web/20080522155201/http://www.gentoo.org/proj/en/hardened/gnu-stack.xml
を参考に調べたところ、
[wime-1.8.3]$ scanelf -qeR . RWX --- --- ./exe/wime.exe.so [wime-1.8.3]$ scanelf -eR . TYPE STK/REL/PTL FILE ET_DYN RW- R-- RW- ./dll/libwime.dll.so ET_REL --- --- --- ./dll/libwime.o ET_DYN RW- R-- RW- ./tools/hinshi-list/hinshi-list.exe.so ET_REL --- --- --- ./tools/hinshi-list/hinshi-list.o ET_EXEC RW- R-- RW- ./tools/wimectrl/wimectrl ET_REL --- --- --- ./tools/wimectrl/wimeapi.o ET_REL --- --- --- ./tools/wimectrl/corr.o ET_REL --- --- --- ./tools/wimectrl/lib.o ET_REL --- --- --- ./tools/wimectrl/ut.o ET_REL --- --- --- ./tools/wimectrl/main.o ET_DYN RW- R-- RW- ./so/libwime.so ET_REL --- --- --- ./so/libwime.o ET_DYN RWX R-- RW- ./exe/wime.exe.so ET_REL --- --- --- ./exe/at.o ET_REL --- --- --- ./exe/wime.o ET_REL --- --- --- ./exe/ut.o ET_REL --- --- --- ./exe/cannaapi.o ET_REL --X --- --- ./exe/apisup.o ET_REL --- --- --- ./lib/list.o ET_REL --- --- --- ./lib/lib.o
という状態のようで、試行錯誤の末に、exeディレクトリにあるMakefileの変数LDFLAGSの値に-Wl,-z,noexecstackを追加して
override CFLAGS+=-m32 -I../so -I$(LIBDIR) -mconsole -mno-cygwin override LDFLAGS+=-m32 -limm32 -mconsole -mno-cygwin -Wl,-z,noexecstack
のようにすることで
[wime-1.8.3]$ scanelf -qeR . (出力なし) [wime-1.8.3]$ scanelf -eR . | grep ./exe ET_DYN RW- R-- RW- ./exe/wime.exe.so ET_REL --- --- --- ./exe/at.o ET_REL --- --- --- ./exe/wime.o ET_REL --- --- --- ./exe/ut.o ET_REL --- --- --- ./exe/cannaapi.o ET_REL --X --- --- ./exe/apisup.o
となり、ebuildからインストールしたときに出る「QA Notice」のメッセージも出なくなった。
使用したバージョン: