切腹のイラスト

musl-llvmなGentooでGHCをビルドする

{
  date: "",
}

最近,とある手持ちのGentooマシンのlibcをglibcからmuslに移行した。 これはそのときの備忘録の一部である。


まずは上流からGHCのバイナリをダウンロードしてくる。 Alpine向けのビルドがmuslとリンクされているのでそれを使う。

% cd /tmp
% curl -L https://downloads.haskell.org/~ghc/9.0.2/ghc-9.0.2-x86_64-alpine3.12-linux-gmp.tar.xz \
  | tar xpvJ
% cd ghc-9.0.2-x86_64-unknown-linux
% ./configure --prefix=/opt/ghc-bin CC=clang # ここ重要(特にGCC-freeでないシステムの場合)
% doas make install

ほんでもってportageにパスを通す。 流派によって様々な方法があるが,ここでは/etc/profile.envを直接編集する。 このファイルはenv-update(1)によって上書きされるので消し忘れ防止にちょうど良い。

...
export PATH="...:/opt/ghc-bin/bin"
...

そしていよいよghcをemergeする。 EXTRA_ECONFCC_STAGE0CCを上書きしているのがミソ。 変数を恒久的に設定したい場合はpackage.envを使う。

% EXTRA_ECONF="CC_STAGE0=clang CC=clang AR=llvm-ar" USE=ghcbootstrap doas emerge ghc

最後にお掃除をする。

% doas rm -r /opt/ghc-bin

以上

快適な(GCC-free)Gentooライフを!