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