ビルド失敗の訳
livedocsについて昼休みに書いて、時間がなくなったので、夜にでもと思って、peardocのビルドシステムを入れ替えたりしていたら、上手くコンパイルできなくなった。それも、ビルド失敗が続いている本家サイトと同じように、エラーが起き、標準出力に結果らしきものがずらーっとでる。
原因を探るべくいろいろやっていたのだが、およそわかった気がする。
本家サイトのビルドログで
SP_ENCODING=XML SP_CHARSET_FIXED=YES /usr/local/bin/openjade -wno-idref \ -d html.dsl -V use-output-dir -t sgml ./phpdocxml.dcl manual.xml
とコマンドが発行されている。よくみると-cオプションが無い。-cオプションというのは、カタログファイルを指定するものである。省略した場合、SGML_CATALOG_FILES(だったかな)からカタログファイルが読み込まれることになっているようだ。
で、このコマンドの次に
/usr/local/bin/openjade:html.dsl:1:73:W: cannot generate system identifier \ for public text "-//James Clark//DTD DSSSL Style Sheet//EN"
というエラーが起きている。system identifierが生成できないというのは、上記のカタログファイルが読めていないためと思われる。
では、どのカタログファイルを読めばいいのかを調べてみると、
- jadeプロセッサに普通は付属しているdssslスタイルシート標準のカタログ
- cygwin版には付いてない
- DocBook用dssslスタイルシートのカタログ
- SGML用ISOエンティティ用のカタログ
を読めばよいらしい。
docbook DTD 用のカタログというのも存在するが、そこに宣言されている、ISOエンティティはjadeだと上手く処理できないらしい。manual.xmlで、
とファイル名つきで宣言することで、この問題を回避しているようだ。
なぜ、突然だめになったかというと、僕はカタログファイルはphpdocと共有していたのだが、phpdocで場所が変わったからのようだ。
と、ここまでわかったところで、ビルドを成功させるには、phpdocからカタログファイルをpeardocにコピーしてきて、 configure.in を書き換えてカタログを上手く読むようにすればよい。これで、うまくビルドできるところまで確認した。おそらくエラーの原因は、本家サイトと僕のところと同じだと思うので、本家にも投げたいね。
ところが、configure.in が汚いので、ちょっと書き直しているので、あすにでも投げてみよう。
#というわけで、livedocsについては、また次回