gstでTcl/Tk8.5

 Tcl/Tk8.5の正式版がやっとリリースされたので早速導入してみたい。が、自分が使っているUbuntu用のバイナリはまだ無いようなので、ソースから入れる。

$ mkdir tcltkbuild
$ cd tcltkbuild
$ wget -c http://prdownloads.sourceforge.net/tcl/tcl8.5.0-src.tar.gz
$ wget -c http://prdownloads.sourceforge.net/tcl/tk8.5.0-src.tar.gz
$ tar zxf tcl8.5.0-src.tar.gz
$ tar zxf tk8.5.0-src.tar.gz
$ cd tcl8.5.0/unix
$ ./configure --enable-threads
$ make
$ sudo make install
$ make clean
$ cd ../../tk8.5.0/unix/
$ ./configure --enable-threads --enable-xft2 --with-tcl=/usr/local/lib
$ make
$ sudo make install
$ make clean

 --enable-xft2 オプションが重要なのです。これがないとアンチエイリアスなフォントが有効になりません。せっかく8.5からLinuxでもサポートされるようになったのにオプションを付け忘れてはいけない。と言いつつ自分はこのオプションを付け忘れて二度コンパイルするはめになったTT あと、Ubuntuだと libxft-dev がインストールされているか最初に確認したほうがいいかもしれない。これが無いとこのオプションを付けても意味が無い。とか言いつつ自分は最初その事に気付かなくて三度コンパイルするはめになったTT
 と言うわけで、無事(?)インストール出来たので、以前の記事でも書いたのですが、Linux/CentOSワークステーション環境構築で紹介されている方法でフォントの具合をテスト。
 おぉ!美しい! 以前とは比べ物にならないぐらい良くなった。こりゃあ早速今あるTkアプリを全部8.5に対応させたいな。とりあえず、やっぱ最初にgnu-Smalltalkのシステムブラウザを対応させたいな。今のままでもまぁいいんですけど、アンチエイリアスなフォントが有効になればなお良さそうなので、ちと面倒臭いですが、これまたソースから入れ直すことにする。

$ cd src/smalltalk-2.3.6/
$ ./configure --prefix=/home/user/GST_DIR \
--with-tcl=/usr/local/lib --with-tk=/usr/local/lib
$ make
$ make install
$ make clean

 Tcl/Tkをソースから入れる際に --prefix オプションで指定していなかったので、デフォルトで /usr/local/lib にインストールされています。なのでその場所を --with オプションで指定してます。まったく問題無くコンパイル、インストール出来た様に思えたのですが、システムブラウザを起動しようとしたら、なんとエラーです。エラーの内容は、 Object: DLD error: requested module blox-tk was not found です。自分このエラーを見るのは初めてではないのです。最初にgstをソースから入れた時もこれとまったく同じエラーが出ました。これはDLDがTcl/Tkモジュールのダイナミックリンクに失敗した時に出るエラーらしいのですね。そしてその原因は大概gstのコンパイルに失敗していると。(いや、コンパイルには成功しているんだけど、Tcl/Tkモジュールの部分だけおかしくなっているらしい?実際システムブラウザ以外は問題無く動作する)んで、Tcl/Tk8.4を使っている時は tcl8.4-dev と tk8.4-dev を入れたら問題無く解決した。けど、今回はTcl/Tk自体ソースから入れているのでdevなんて必要ないし・・・ 何故? ちなみに config.log などを見ても怪しい部分は見当たらない。本当に、何故なの?
 解決すべく色々検索してみると、なんだか他でもTcl/Tk8.5関連でちょくちょく問題が出てるなぁとか思っていたら、gstの本家のページがヒットした。
problem with tcl/tk 8.5 | GNU Smalltalk
 問題が確認されているのはバージョン2.95hらしいのですが、やっぱ今自分が使ってるバージョン(2.3.6)でもTcl/Tk8.5だと何か問題あるのかなぁ・・・ むぅ、解からん。とりあえず、こんなエラーがあったぞ という記録でした。

 このエラーが出た環境:
Ubuntu 7.04(feisty)
GNU Smalltalk 2.3.6 (ソースからインストール)
Tcl/Tk8.5.0 (ソースからインストール)

追記
 まったくもって問題は解決出来てなくてしょぼい追記ですが、gstのコンパイルオプションに --enable-jit を付けるとちょっと速くなる。つか、物によっては倍以上速くなった。
さらに追記
 解決しました^^