きりかノート 3冊め

おあそびプログラミング

Portfileで開発版と安定版の両方を選べるようにするテクニック

チケットに対応してて(間接的に)教えてもらったワザ。

いくつかのportには"-devel"とついた、開発版のパッケージがある。たとえば、cairoとcairo-develとかね。依存関係は通常パッケージ名で管理するようになっていて、どちらかがあればよい、という書き方はできない。バリアントでdepends_libを差し替えという手もあるけど、機能的に大差ないのなら避けたい。

そこで、

% ack -a -G Portfile depends_lib rb-rcairo
rb-rcairo/Portfile
18:depends_lib-append		path:lib/pkgconfig/cairo.pc:cairo

のようにすれば、すでにcairo-develまたはcairoにより、pkg-config管理のcairoがインストール済みであれば依存は満たされているし、なければ無印のcairoから自動的にインストールするってこと。

lib:やbin:だとmacports以外の領域も探すけど、path:だと${prefix}以下のみになるのがミソ。