[[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

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS