ビルド失敗の訳

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が生成できないというのは、上記のカタログファイルが読めていないためと思われる。
では、どのカタログファイルを読めばいいのかを調べてみると、

  1. jadeプロセッサに普通は付属しているdssslスタイルシート標準のカタログ
    • cygwin版には付いてない
  2. DocBook用dssslスタイルシートのカタログ
  3. SGML用ISOエンティティ用のカタログ

を読めばよいらしい。
docbook DTD 用のカタログというのも存在するが、そこに宣言されている、ISOエンティティはjadeだと上手く処理できないらしい。manual.xmlで、

とファイル名つきで宣言することで、この問題を回避しているようだ。

なぜ、突然だめになったかというと、僕はカタログファイルはphpdocと共有していたのだが、phpdocで場所が変わったからのようだ。

と、ここまでわかったところで、ビルドを成功させるには、phpdocからカタログファイルをpeardocにコピーしてきて、 configure.in を書き換えてカタログを上手く読むようにすればよい。これで、うまくビルドできるところまで確認した。おそらくエラーの原因は、本家サイトと僕のところと同じだと思うので、本家にも投げたいね。

ところが、configure.in が汚いので、ちょっと書き直しているので、あすにでも投げてみよう。

#というわけで、livedocsについては、また次回