・Xorg とか
Plamo-ML の方で報告されたゴシックが出ない問題,libfreetype がらみらしい ので libfreetype を 2.1.8 から(ゴシック問題のパッチがある) 2.1.10 に入 れ替えようと思ったのだけど,freetype はリリースバージョンが違うだけでも 内部構造に変更が加えられていることが多く,ABI/API の互換性が保証されな いらしいので,libfreetype 単独での更新ではなく Xorg 全体を更新する方向 に変更.
Xorg の最新版は 6.9 と 7.0 があって,機能等は同じものの 6.9 は従来型の 全体が一つのソース構成,7.0 は機能ごとに分割(モジュール化)したソースに なっているらしい.とりあえず昔からのなじみということで 6.9 ベースに挑戦.
まずは素のままで make World してみたけど,expat.h や ft2build.h が見つ からない,というエラー.Plamo-4.2 ではこれらのヘッダーファイルは /usr/X11R6/include にあるのだけど,どうもインクルードファイルの検索パス に /usr/X11R6/include が含まれていないらしい.
普通の Makefile なら適当に -I とかを付け加えればいいのだけど,X の場合 は Makefile は Imakefile から生成されるので単純に Makefile だけをいじっ てもうまくないから,Imakefile や xmkmf でそれらしい定義が無いかをあれこ れ探して EXTRA_INCLUDES とか LOCAL_LDFLAGS とかを host.def に設定.
ところがこれをやると,古いバージョン(Xorg 6.8.2)のヘッダーファイルを読 みこんでしまい,コンパイルエラーになることが判明.仕方ないので,必要な ヘッダーファイルやライブラリを /usr/{include,lib} 以下にリンクを貼って 胡麻化してみる.
本来,freetype のヘッダーや expat のヘッダーは自前のものを使うべきなの になぁ,,と思いながらとりあえずこの環境で make World できることを確認. 実は後からパッチ類を調べていたら,site.def あたりで freetype や expat がインストールされているものを使うかソースコードに含まれているものを使 うかの設定があることに気がついた(涙)
その後,山内さんが 6.8.2 をビルドするときに使っていたパッチがあたるかど うか試したり,freetype-2.1.8 から 2.1.10 に更新したりで丸一日 X と戯れ てしまった(苦笑
昔からそうだったけど,X の場合,Makefile を修正をしたい場合, Imakefile に修正を加えて Makefile を生成し,依存関係を解決して,,みた いな作業が必要になるので,どうすればいいか分らず,あれこれ試すような場 合には,ターンアラウンドタイムの長さがずいぶん気になってしまう.特にき ちんと完成させようと思うと Make World で全ての Makefile や依存関係やら を再生成することになるからかなり大変.
まぁ,それでも最近のマシンだと 1 時間もかからずに X のフルビルドができ るからずいぶん楽にはなったと思う.昔だと,帰る前に make World を仕掛け て翌朝確認したら typo があってがっくり,みたいなパターンだったからなぁ..
こうやって Imakefile と久しぶりに格闘してみると,やっぱり Imakefile の 仕組みというのは(当時のような多様な環境に対応するためには必要だった面は あるものの)無理があって普及せず,autoconf みたいな仕組みが生まれてきた のかなぁ,,という印象.
何とか libfreetype 回りは通るようになったかと思ったら,今度は module の方で変なエラーが出ているなぁ..(涙^2)