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)



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-12-17 (金) 16:35:41