[[diary/Kojima]]
・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)
-一応 make World も通るようになったけど、X のソースレベルで無理して差し替えるよりは、独立した外部のパッケージとして用意して X は(付属のものではなく)インストール済の libfreetype を使うようにする方が簡単だし、バージョンアップの自由度も高いな。つい近視眼的に腕力で解決しようとしてしまったけど、外部パッケージを使う方法でやり直そう。 -- [[kojima]] &new{2006-04-10 (月) 06:41:11};
#comment