xindy の make 可能に
先日から書いている pTeXLive の話だが、今までは xindy の make ができていなかった。今日は休みでもあるので、この問題を解決しておくことにする。
xindy はソースの生成に clisp を使っているので、当然だが clisp 周りはインストールしてから行う。まず pTeXLive を stage2 まで make しておいてから、
/var/tmp/ptexlive2009/texlive-20091011-source/utils/xindy/rte/ordrules/ordrulei.lspに patch をあてる。この問題に関しては、Debian GNU/Linux のバグトラックに以下のような情報がある:
Debian Bug report logs - #467585ので、ここに出ているスクリプトを元にして、以下のように patch を作成した。
xindy: FTBFS: ordrulei.c:24: error: 'clisp_dirent_off_t' undeclared (first use in this function)
--- ordrulei.lsp.orig 2010-11-03 13:55:04.110703835 +0900
+++ ordrulei.lsp 2010-11-03 13:56:18.318250541 +0900
@@ -15,6 +15,30 @@
(c-lines "#include \"ordrules.h\"~%")
+; clisp does not produce these include calls
+(c-lines
+ (concatenate 'string "#include <termios.h>~%"
+ "#include <bits/ipctypes.h>~%"
+ "#include <stddef.h>~%"))
+
+; The following lines are the lines 1845 to 1858 from
+; http://clisp.cvs.sourceforge.net/clisp/clisp/modules/bindings/glibc/linux.lisp?revision=1.25&view=markup
+
+;;; ============================== <dirent.h> ================================
+(c-lines "#include <dirent.h>~%")
+
+;;; ----------------------------- <bits/dirent.h> ---------------------------
+;; d_type is only in dirent64, not in dirent in <linux/dirent.h>,
+;; but it appears to BE required, and does appear in <bits/dirent.h>
+
+(c-lines "#ifndef __USE_FILE_OFFSET64
+typedef __ino_t clisp_dirent_ino_t;
+typedef __off_t clisp_dirent_off_t;
+#else
+typedef __ino64_t clisp_dirent_ino_t;
+typedef __off64_t clisp_dirent_off_t;
+#endif~%")
+
; Common OS definitions:
(def-c-type size_t uint)
これを、たとえば ~/ordrulei.lsp.patch というファイルに保存しておいて、xindy の ordrulei.lsp に patch をあてる。
$ cd /var/tmp/ptexlive2009/texlive-20091011-source/utils/xindy/rte/ordrulespatch をあてた後は make stage3 を実行すればコンパイルが行われる。
$ patch < ~/ordrulei.lsp.patch
2010/11/03(Wed) 14:09:45 | コンピュータ&インターネット
Re:xindy の make 可能に
後記。ここに書かれていることは obsolete です。もし日本語で TeX / LaTeX を使われたい方は、
http://www.fugenji.org/~thomas/texlive-guide/
を御参照下さい。