Gentoo Haskell Overlay 使うときの基本的な設定
最近なにやらDebian勢が「Haskell使うならDebian」と猛プッシュしてきててアレなので,Gentoo勢としての話を少々.
Debian勢が現時点のcabalが持つ脆弱なhackage間依存性解決やcabalが干渉できないhackage外パッケージとの依存性解決をaptでカバーしているように,Gentoo勢もportageでカバーしている部分がある.今後cabalが強い子になってhackage間依存性解決能力が高まってくるとしても,hackage外パッケージとの依存性解決についてはどうしても考慮せざるを得ないので,今後もシステム固有のパッケージシステムが仲介を果たす必要は残っていくのではないかと思う.
Gentooにおいては,通常以下のようにlaymanでHaskell Overlay入れてからのHaskell Platform入れが定石になるだろう.
# emerge -v layman # layman -S # layman -a haskell # nano -w /etc/make.conf +source "/var/lib/layman/make.conf" # emerge -v haskell-platform
この際,後々の開発作業を考慮すると,Haskell Platformをemergeする前にやっといたほうがいい設定が2つある.もちろん開発しない場合はこの限りではない.
ひとつ,USEフラグでprofileを有効にしておく.これが無いとインストールされるパッケージのプロファイル版が入らないので,もし開発中パフォーマンスに何か問題あったときにプロファイルが取れなくなる.
# nano -w /etc/make.conf +USE="${USE} profile"
ひとつ,cabalを--enable-shared付きでconfigureされるようにしておく.これが無いと前回の記事のように共有ライブラリを作る(-dynamicオプション付きでビルドする)必要がある場合,ビルドできなくなる.
# nano -w /etc/make.conf +CABAL_EXTRA_CONFIGURE_FLAGS=--enable-shared
それぞれcabal configのlibrary-profilingやsharedのTrue相当をemerge時に反映させる設定となる.通常版(*.hi),profile版(*.p_hi),shared版(*.dyn_hi)をそれぞれ作るようになるので,emergeがちょっと遅くなるが,Gentoo使いには「だから何?」程度の日常だろう.
その他何か設定が必要になったとき詳細は/usr/portage/eclass/haskell-cabal.eclassを眺めるとなんとなく知ることができる.