XEmacs UTF-2000 on Mac OS X (Re: XEmacs UTF-2000 on MS-Windows)
守岡知彦 / MORIOKA Tomohiko
tomo @ mousai.as.wakwak.ne.jp
2003年 1月 18日 (土) 19:12:26 JST
>>>>> In [chise-ja : No.00129]
>>>>> "宮崎さん" = Izumi MIYAZAKI <imiyazaki @ bun.kyoto-u.ac.jp> wrote:
宮崎さん> > Mac OS X 10.2 上では一応 XEmacs UTF-2000 が動いています。今は
宮崎さん> > ・Apple 純正 X11
宮崎さん> > ・Fink
宮崎さん> > ・Debian から持って来た xfs-xtt(GT を表示するためだけに使ってる)
宮崎さん> > を使った環境になってます。install ガイドも書きたいんだけど
宮崎さん> > 時間がない…
宮崎さん> 何故かこの環境が手元にあるので、(^^; 試してみましたが、dump
宮崎さん> する所で止まってしまいます。何かコツがあったら教えて下さい。
宮崎さん> $ ./configure --with-dialogs=athena --with-widgets=athena --with-sound=none --with-database=no --without-ldap --without-postgresql --with-mule --without-xim --without-wnn --with-utf-2000 --with-text-coding --prefix=/usr/local/xemacs
宮崎さん> として make すると、dump する所で、
宮崎さん> Loading /Users/izumi/work/XEmacs-UTF-2000/lisp/loaddefs.elc...
宮崎さん> Loading site-load...
宮崎さん> Finding pointers to doc strings...
宮崎さん> Note: Strange doc (not fboundp) for function save-char-attribute-table @ 57854
宮崎さん> Note: Strange doc (not fboundp) for function mount-char-attribute-table @ 57946
宮崎さん> Note: Strange doc (not fboundp) for function save-charset-mapping-table @ 228705
宮崎さん> Note: Strange doc (not fboundp) for function reset-charset-mapping-table @ 228801
宮崎さん> Finding pointers to doc strings...done
宮崎さん> Dumping under the name xemacs
宮崎さん> make[1]: *** [xemacs.dmp] Segmentation fault
宮崎さん> make: *** [src] Error 2
宮崎さん> と Segmentation fault になってしまいます。
私もすんなりとは build できずいろいろ試行錯誤した結果:
(a) どうも Lisp Object の総数(ないしは heap size?)が 7 MB を越えると
malloc が失敗する。ちなみに、この size は xemacs にどういうライブ
ラリをリンクしたか(*1) やどこで make するか(*1) によっても変わって
来るようだ
- このことから、外部データベース機能無しの場合、
lisp/utf-2000/dumped-chars.el をいじって、Ideograph-* とかの文字
定義を読み込まないようにすれば build 可能になる場合がある
- 文字定義を全部読み込むには外部データベース機能が必須であるといえ
る
(b) (*2) 何故か、Mac OS X 10.2 附属の emacs の shell buffer 上で make
するとうまく行く場合でも、Terminal.app や xterm, kterm 上で build
する場合はうまく行かなかないという不思議な現象を経験した。ちなみに、
私は login shell は tcsh ではなく /bin/bash を使っている。また、こ
の emacs の shell buffer 上なら Terminal.app でも xterm, kterm で
も remote からでも OK だった。
(c) 外部データベース機能を使うためのライブラリとしては、Berkeley DB 3
以外では成功しなかった。これは文字属性ファイルのファイル構成の問題
や (*1) の問題、あるいは、それ以外の要因が関係しているかも知れない。
(d) Fink の Berkeley DB 3 を何故か現状の XEmacs UTF-2000 の configure
は認識しない。そこで、src/config.h を手でいじって
/* Compile in support for Berkeley DB style databases? May require libdb. */
#define HAVE_BERKELEY_DB 1
/* Full #include file path for Berkeley DB's db.h */
#define DB_H_FILE "db3/db.h"
を書き足す。なお、HAVE_DBM は切っておく。
なお、未確認だが、おそらく Berkeley DB 3 を /usr/local に自分で
install すれば認識できるかも知れない。
;; 文字属性データベースは Berkeley DB 決め打ちで良いのではないかと
;; 思うに至った。このあたりが XEmacs の database 機能に依存してい
;; るのはあまり良くなく、Berkeley DB 4 ベースで libchise を作り、
;; それを使うという形に移行するのが良いと思う。
(e) (a) 〜 (d) で現行の cvs 上の XEmacs UTF-2000 を build した場合、
Lisp_Object の総数が微妙に (a) の条件を越えるようである。このため、
lisp/mule/chinese.el の
;; (modify-category-entry 'chinese-cns11643-3 ?t)
;; (modify-category-entry 'chinese-cns11643-4 ?t)
;; (modify-category-entry 'chinese-cns11643-5 ?t)
;; (modify-category-entry 'chinese-cns11643-6 ?t)
;; (modify-category-entry 'chinese-cns11643-7 ?t)
をコメントアウトした。これにより build に成功した。
;; char-category は文字属性に関連付けて情報を lazy-loading できるよ
;; うに再実装するべきであると考えられる。これを syntax-table などを
;; 文字属性化・lazy-loading 化すれば xemacs の初期サイズは
;; XEmacs-Mule 並みになる(場合によっては更にコンパクトにできる)と
;; 考えられる。
といったことにより build できました。
とりあえず、この binary を含む source tree 一式を
http://mousai.as.wakwak.ne.jp/projects/chise/dist/XEmacs/.notready/XEmacs-UTF-2000-mac-os-10.2.tar.gz
に置いときました。
では。
--
守岡 知彦 (MORIOKA Tomohiko) <tomo @ kanji.zinbun.kyoto-u.ac.jp>
More information about the CHISE-ja
mailing list