2008년 1월 4일 금요일

맥에서 SBCL이 thread를 지원하도록 만들기

SBCL은 맥에서 experimental threading을 지원한다고 되어있지만, 그런 식으로 발표된지가 1년이 훨씬 넘었기 때문에 더 이상 experimental한 것이 아니라고 보는 사람들이 많다. 어쨋건, 맥에서 SBCL로 웹 프로그래밍을 해보려면 threading support는 필수적이기 때문에 SBCL을 어떤 식으로 인스톨해야 스레드를 지원하도록 만들 수 있는지 알아보도록 하겠다. 요점은 특정한 설정을 주고 소스를 직접 컴파일해야 되는데, 컴파일하려면 리습 구현이 필요하기 때문에 일단 바이너리 버전의 SBCL을 설치한 다음, 소스코드를 컴파일해서 바이너리를 만들고 그 바이너리로 인스톨하면 된다. 구체적인 설치 과정은 다음과 같다.

1. 바이너리 버전의 SBCL을 다운받아 인스톨한다.
바이너리 파일을 다운받아 압축을 푼 폴더에서 sudo sh install.sh

2. SBCL의 소스 코드를 내려받아 압축을 푼다.
예를 들어 압축을 푼 폴더가 /Users/chanwoo/Downloads/sbcl-1.0.13 라고 하자.

3. 내려받은 소스 코드 디렉토리의 최상단(/Users/chanwoo/Downloads/sbcl-1.0.13 폴더)에 customize-target-features.lisp 파일을 다음과 같은 내용으로 만들어 저장한다.

(lambda (features)
(flet ((enable (x)
(pushnew x features))
(disable (x)
(setf features (remove x features))))
;; Threading support, available only on x86/x86-64 Linux, x86 Solaris
;; and x86 Mac OS X (experimental).
(enable :sb-thread)))

4. 소스를 컴파일한다.
sudo sh make.sh

5. 기존에 설치된 SBCL을 지운다.
/usr/local/bin/sbcl 과 /usr/local/lib/sbcl 을 삭제

6. 소스 디렉토리(/Users/chanwoo/Downloads/sbcl-1.0.13)에서 바이너리 파일을 인스톨하듯이 인스톨하면 된다.
sudo sh install.sh

Hunchentoot를 돌려보면 스레드를 지원하는 것을 볼 수 있다! :)

댓글 없음: