Snow Leopard で Common Lisp (SBCL編)
Snow Leopard に,MacPortsでまだ対応していない Common Lisp 処理系をインストールする方法についてメモしておきます.
1.0.29版バイナリのインストール
SBCL の公式サイトでは OS X に対応した 1.0.29 版のバイナリが配布されていますので,まずはこれをインストールします.この版は Snow Leopard でも一応動きます.デフォルトのインストール先は /usr/local になりますが,別の場所にしておきます.ここでは配布物の置き場所を /opt/src, インストール先を /opt/sbcl-1.0.29 とし,以下のコマンドを実行しました.必要なら適当に sudo を補ってください.初めてSBCLをインストールするのであれば環境変数 SBCL_HOME の除去は不要です.
mkdir -p /opt/src cd /opt/src wget http://prdownloads.sourceforge.net/sbcl/sbcl-1.0.29-x86-darwin-binary-r2.tar.bz2 tar xvjf ../tmp/sbcl-1.0.29-x86-darwin-binary-r2.tar.bz2 cd sbcl-1.0.29-x86-darwin unset SBCL_HOME INSTALL_ROOT=/opt/sbcl-1.0.29 sh install.sh
これで1.0.29版が使えるようになるはずです.環境変数 SBCL_HOME を以下のようにセットして実行します.
$ export SBCL_HOME=/opt/sbcl-1.0.29/lib/sbcl $ /opt/sbcl-1.0.29/bin/sbcl This is SBCL 1.0.29, an implementation of ANSI Common Lisp. More information about SBCL is available at <http://www.sbcl.org/>. SBCL is free software, provided as is, with absolutely no warranty. It is mostly in the public domain; some portions are provided under BSD-style licenses. See the CREDITS and COPYING files in the distribution for more information. *
CVS版のビルドとインストール
1.0.29版でもいいのですが,開発者メーリングリストをみると新しい方が10.6でのバグもなくてよさそうです.そこで次に最新版(CVS版)のソースコードを取得し,これを1.0.29版を使ってビルドします.インストール先は /opt/sbcl-cvs とし,以下のコマンド列でインストールしました.ここでは SBCL_HOME の除去が必要です.
cd /opt/src cvs -d:pserver:anonymous@sbcl.cvs.sourceforge.net:/cvsroot/sbcl login cvs -z3 -d:pserver:anonymous@sbcl.cvs.sourceforge.net:/cvsroot/sbcl co -P sbcl cd sbcl export SBCL_HOME=/opt/sbcl-1.0.29/lib/sbcl sh make.sh /opt/sbcl-1.0.29/bin/sbcl (cd tests && sh run-tests.sh) (cd doc/manual && make) unset SBCL_HOME INSTALL_ROOT=/opt/sbcl-cvs sh install.sh sh clean.sh
実は run-tests.sh でいくつか失敗が報告されますが,致命的なものではありません.実際にいくつかのプロジェクトで使っていますが,いまのところ問題はないようです.
以上でインストール終了です.環境変数 SBCL_HOME を /opt/sbcl-cvs/lib/sbcl にセットし,/opt/sbcl-cvs/bin をパスに入れておきます.念のためこれで再度CVS版のソースをビルドしてみましたが,問題なくできました.1.0.29版は不要ですので消去してもかまいません.
(追記) 1.0.33版が出ました
この記事を書いている間に1.0.33版のアナウンスがありました.
基本的には現時点でのCVS版と変りません.まだMac用のバイナリは用意されていないようですが,この記事同様に1.0.29を使ってビルドすることだできます.ソースコードはこちらからダウンロードできます.
この版に対応した MacPorts のPortファイルを作るのも難しくはないでしょう.
(追記) スレッドを使うための準備
書き忘れましたが,OSX-Intel 版のSBCLでスレッドを使うためには,以下のような内容の customize-target-features.lisp というファイルを配布ディレクトリのトップに置いてからビルドします.
(lambda (features) (when (and (member :darwin features) (or (member :x86 features) (member :x86-64 features))) (pushnew :mach-exception-handler features) (pushnew :sb-thread features) (pushnew :sb-lutex features) ) features)