squeakをコンパイルしてみる。
どうもdebianをutf8運用しているとsqueakland.jpのイメージはキーボードを押した瞬間に落ちてしまう。
http://ftp.squeak.org/3.9/unix-linux/Squeak-3.9-8.src.tar.gz
ここからソースファイルをダウンロード
XIMのパッチを以下より入手
http://www.nabble.com/-Squeak-ja-3A-3367--3.9-8VM-E7-94-A8-E3-81-AESqueakImmX11Plugin-E3-83-91-E3-83-83-E3-83-81-to8473203.html
$ tar xzf Squeak-3.9-8.src.tar.gz $ cd Squeak-3.9-8 $ tar xzf ../SqueakImmX11Plugin3.9-8.tar.gz $ patch -p0 < ImmX11.patch $ mkdir bld $ cd bld $../platforms/unix/config/configure $make
$ ./squeak SqueakPlugin.image Segmentation fault 2025728400 ProcessorScheduler class>idleProcess 2025385784 [] in ProcessorScheduler class>startUp 2025385876 [] in BlockContext>newProcess アボートしました
現在のところパッチを当てないとXIMがつかえない(日本語が入力できない)どころかキーボードを押した瞬間にsqueak自身が落ちる。
パッチを当てずに使えばsqueakland.jpにある SqueakPlugin.imageで動くので問題はパッチの方だというところまでわかった。
もう少しサーチしてみると以下の記事を発見。
まずUbuntu(Linux)でsqueak.の症状はwww.squeakland.jp/から
ダウンロード・展開したオブジェクトで起動するとキーボード
入力した時点でSegmentation faultになってしまうというもの
でした。そこでgdbで調査するとsqUnixX11.cのXCreateFontSet
関数がNULLを返すのが原因だと分かったので、応急処置として#define FONTNAME "-*-Fixed-Medium-R-Normal--14-*-ISO8859-1"
と変更しました。思うにUbuntuのデフォルトロケールがUTF8
なので、いけなかったのではと思ってたり。
$ vi ../platforms/unix/vm-display-X11/sqUnixX11.c
#define FONTNAME "-*-*-medium-r-normal--14-*"
これを以下に変更
#define FONTNAME "-*-Fixed-Medium-R-Normal--14-*-ISO8859-1"
そしてconfigureからやりなおし。
実行してみたらXIMから入力できるようになったが文字化け。
しかも音もなってなかった。くやしい。今のところは 3.9-7でXIM抜きで我慢するか。
その後、同じ掲示板で以下を発見。
うまく動くか VM 3.7-7 で試してみました。
FC 5 ではとりあえず日本語入力できています。
utf-8 のコードをパッチに組み込んでおいて本当によかったと,
胸をなでおろしています。2c を 3.7-7 向けにパスを修正したのを,
http://opinion.nucba.ac.jp/~tsutomu/squeak/SqueakImmX11Plugin3a.tar.gz
に置きました。
3.7-7でチャレンジ。
$ tar xzf Squeak-3.7-7.src.tar.gz $ cd Squeak-3.7-7 $ tar xzf ../SqueakImmX11Plugin3a.tar.gz $ patch -p0 < ImmX11.patch $ mkdir bld $ cd bld $../platforms/unix/config/configure $make
だめだ、キーボード押した瞬間に落ちる(笑
まてよ。さっきのFONTNAMEを同様に編集してみると…動いた。
XIMの入力も化けない!
ということで、勝利の四角形。
ゲコゲコと音もするし今のところ問題無し。
よし、パッケージ作るぞ。
make installしたくないので動作するのに必要なのはvmとプラグインを同一のフォルダに置けばいいみたいだ。
$ mkdir test $ cd test $ cp squeak test $ for i in vm-* ; do cp $i/.libs/$i test ;done $ cp ImmX11Plugin/.libs/ImmX11Plugin test
一応以下のパッケージで動く模様。
ImmX11Plugin SqueakPlugin.image squeak vm-display-X11 vm-display-fbdev vm-display-null vm-sound-OSS vm-sound-null
良かった。良かった。