[Freewnn-users 153] Re: OpenSuse 向けパッチを debian amd64 で適用して、成功。

Back to archive index

ISHIKAWA,chiaki ishik****@yk*****
2013年 8月 22日 (木) 12:35:54 JST


石川です。

(2013/08/22 9:25), 1xx wrote:
> 2013年8月22日 2:07 ISHIKAWA,chiaki <ishik****@yk*****>:
>>
>> C - 本メイルリストで公開されているOpenSuseのパッチ群。
> 
>>
>>      最初の3つは、OpenSuseの想定する ファイルのレイアウト(設定ファイ
>>      ルの位置、辞書の位置、また 利用する locale  の設定をja_JP から
>>      ja [多分 Suseでの日本語locale], また多少 experimental ? な
>>      root ユーザIDの使用/未使用についてのもので、
>>      クラッシュしない jserver を debian で実行するには
>>      関係がないということで今回の64bits Debianでのテスト目的では適用しませんでした。
> 
> 確かにPatch0, Patch1は設定ファイルの位置とlocaleをja_JPからjaに変更しています。
> 後方互換性のため、外すことができませんでした。

これはOpenSuseとDebianでの違いですから、どうしようもないことかと思います。

>>   Debianでは /usr/share/wnnの下に設定ファイルなどがはいり、辞書の本体は/var/lib/wnnの
>>   下に入ります。またDebianの利用する日本語localeはja_JPがprefixです。ja_JP.UTF-8, ja_JP.EUC-JPとか。
>>
>>


>>      以下のパッチは順次適用します。ただし、patch に渡す -pN のレベルが
>>      0,1,2 の間のどれかを個々のパッチ毎に適切に選ばないとうまくいきません。
>>      ちょっと注意が必要です。
>>
>>      Debian のパッチを当てたあとに、さらに追加してパッチを当てているの
>>      でうまく当たらないものも当然でてきます。.rej の内容を確認しながら
>>      手動で反映します。そんなに多くはありません。
>>
>>          o Patch3:         FreeWnn-sighandler.patch
>>          o Patch5:         FreeWnn-1.1.1-a022.dif
>>          o Patch7:         FreeWnn-s390x.patch
>>
>>          o Patch8:         FreeWnn-warnings.patch
>>                            -p0
>>
>>          o Patch11:        FreeWnn-include.patch
>>                          -p1
>>
>>          o Patch13:        FreeWnn-prototypes.patch
>>
>>          o Patch14:        FreeWnn-trad_cpp.patch
>>
>>          多くは patch -p2 < ...うえのpatchファイル
>>          でうまくいきますが、 -p1, -p0 を利用する場合もあります。
> 
> 判りにくくてすみません。
> patch の-pNオプションについてはSPEC fileを見ていただければ
> -p幾つでpatchを当てればよいか判るようになっています。
> https://build.opensuse.org/package/view_file/home:Mitsutoshi:branches:M17N/fwnn/fwnn.spec?expand=1
> 
> fwnn.specより
> Patch0:         FreeWnn-fsstnd.patch
> Patch1:         FreeWnn-ja.patch
> Patch2:         FreeWnn-noroot.patch
> Patch3:         FreeWnn-sighandler.patch
> Patch5:         FreeWnn-1.1.1-a022.dif
> Patch7:         FreeWnn-s390x.patch
> Patch8:         FreeWnn-warnings.patch
> Patch11:        FreeWnn-include.patch
> Patch13:        FreeWnn-prototypes.patch
> Patch14:        FreeWnn-trad_cpp.patch
> 
> %setup -q -n FreeWnn-%{base_version}-%{alpha_version}
> %patch0 -p1
> %patch1 -p1
> %patch2 -p1
> %patch3 -p2
> %patch5 -p1
> %patch7 -p2 -b .s390x
> %patch8
> %patch11 -p1
> %patch13 -p1
> %patch14 -p1
> %patch15 -p0
> 

なるほど、このようにしてpatchの-pレベルを指定できるのですね。
Debian用に少し修正したファイルに対してで手動で適用していたので気づきませんでした。

なお、別の投稿にあった クラッシュ問題ですが、
32bitsでは strncpy原因のatod のcrashが起きませんでした。

64bitsでは、最初の一度だけ strncpy原因のatod クラッシュがおきて
pwd.cファイルのcryptを呼び出しているcheck_pwd() 関数の中での問題までわかったのですが、
fprintf() を入れて様子を見ようとしたら出なくなり、なぜかソースを完全に
元に戻してもでなくなってしまいました。

どこかにmake clean で完全に32bits
のバイナリがクリアされない問題があるのか(これはたぶん無し)、はてまた Debianの場合もそうなのか
どうか知りませんが、たしかセキュリティ関連でスタックの場所とかをランダムに変える
機能とかがSELinuxか何かで入っているためにメモリレイアウトが(リンクと)実行のつど
微妙に少し変わったりして問題が出なくなったりするのかもしれません。ミステリアスです。

当方のgccとリンクしたライブラリのバージョン情報です。
gcc --version
gcc (Debian 4.7.3-4) 4.7.3

atodのリンクされているライブラリは以下の通り:

ishikawa @ vm-debian-amd64:~/repos/FreeWnn-1.1.1-a022-debian-mods-halfway/Wnn$ ldd jutil/atod
	linux-vdso.so.1 (0x00007fffbe9e5000)
	libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007f6e3d672000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f6e3d2c6000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f6e3d8c4000)
ishikawa @ vm-debian-amd64:~/repos/FreeWnn-1.1.1-a022-debian-mods-halfway/Wnn$ pushd /lib/x86_64-linux-gnu/
/lib/x86_64-linux-gnu ~/repos/FreeWnn-1.1.1-a022-debian-mods-halfway/Wnn /COMM-CENTRAL/comm-central
ishikawa @ vm-debian-amd64:/lib/x86_64-linux-gnu$ ls -l libc.*
lrwxrwxrwx 1 root root 12  8月  2 00:19 libc.so.6 -> libc-2.17.so*
ishikawa @ vm-debian-amd64:/lib/x86_64-linux-gnu$




freewnn-users メーリングリストの案内
Back to archive index