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

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

wime 1.8.3の覚え書きとebuild更新

wimeに関しては

を参照。ここで扱うのは、バージョン1.8.3になったことによる変更とGentoo向けのebuildについて。

  1. uim-cannaで動作を確認
    1. 変換候補数に関する不具合(1.8.4で修正済み)
  2. Gentoo Linuxのebuild更新と、x86_64上での手動ビルドについて
  3. 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 Linuxebuild更新と、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 Linuxebuildでインストールしたときに

 * 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」のメッセージも出なくなった。

使用したバージョン:

  • Wine 1.1.2
  • wime 1.8.3
  • ATOK 2008体験版
  • uim 1.5.2
  • Canna 3.7_p2

*1:kinput2scim-cannaでは「ろ」と「を」がとんでもない場所になり、非常に使いづらい・「kinput2もしくはscim-cannaによるかんなのかな入力について」を参照

*2:今回はx86_64上でビルドするために必要になるCFLAGSとLDFLAGSの追加と後述の-Wl,-z,noexecstackの件のみとした