Common Lisp処理系のClaspは、依存ライブラリやリビジョンが色々変わって中々出来ない事が多いので、現時点でビルド可能な組み合わせについて。
ホスト計算機はUbuntu 18.04.4 x86_64 で確認を行っている。 Ubuntuのパッケージ方針がよく分からないが、18.04でも時期によってLLVMのバージョンが色々あったりするので、例えばapt install clangとやると、Claspをビルドできないclangが入る可能性がある。 改めてUbuntu 18.04のLLVM関連パッケージをみると、現在では3.9から9までそろっているのでUbuntu 18.04だけを考えればexternals claspでLLVMをビルドする必要は無いかもしれない。
testingブランチ
ブランチの扱いが時々変わるのでよく分からないところがあるが、一応安定版に相当すると思われるブランチ。
現在の最新バージョンは2019-09-29の f0cb8960867be6ed58a82066abb0da2df9da72b3
でこれはgithub上 0.4.3 のタグがついている最新安定版と思われる。
LLVM 6を必要としており、現状のroswellからインストールできるのはこのブランチを追従してることが多い。
roswellからのインストール
完全な手順を目指して、dockerのubuntu:bionicでインストールを行う。
docker pull ubuntu:bionic docker run -it --name roswell-clasp ubuntu:bionic
dockerのubuntuの中でroswellインストール。
apt update apt -y install git build-essential automake libcurl4-openssl-dev git clone -b release https://github.com/roswell/roswell.git cd roswell git checkout v20.04.14.105 sh bootstrap ./configure --prefix=$HOME/.local make make install export PATH=$HOME/.local/bin:$PATH ros setup ros run -- --version
最終的にroswellが動いて、インストールされたSBCLは2.0.4だった。
SBCL 2.0.4
Claspをインストール。まずは依存ライブラリのビルド。
apt -y install cmake python binutils-dev time ros install externals-clasp+/6.0.1
数十分待つとビルドが終わる。エラーになるようであれば、~/.roswell/lib/x86-64/linux/externals_clasp/6.0.1
の中で make
を実行してエラーに対処する。(環境合わせてこの手順通りならエラーにならないはずだが)
apt -y install libgmp-dev libgc-dev zlib1g-dev libelf-dev libncurses-dev libbsd-dev libboost-filesystem-dev libboost-date-time-dev libboost-program-options-dev libboost-iostreams-dev time ros install clasp
数十分待つとビルドが終わる。エラーになるようであれば、 ~/.roswell/src/clasp/2019-09-29
の中で ./waf configure build_dboehm
を実行してエラーに対処する。(環境合わせてこの手順通りならエラーにならないはずだが)
ros run -- --version
clasp-boehm-0.4.2-1534-gf0cb89608
普通にビルド
公式ビルド方法でもそのままビルドできる。 Build Instructions · clasp-developers/clasp Wiki · GitHub
docker run -it --name clasp-testing ubuntu:bionic
apt update apt install -y gcc g++ llvm clang-6.0 libclang-6.0-dev cmake libgc-dev libgmp-dev binutils-gold binutils-dev zlib1g-dev libncurses-dev libboost-filesystem-dev libboost-regex-dev libboost-date-time-dev libboost-program-options-dev libboost-system-dev libboost-iostreams-dev libunwind-dev liblzma-dev libelf1 libelf-dev libbsd-dev sbcl git git clone https://github.com/clasp-developers/clasp.git cd clasp git checkout f0cb8960867be6ed58a82066abb0da2df9da72b3 time ./waf configure build_dboehm
数十分待つとビルドが終わる。
build/clasp
実行するとREPLが起動する。
Starting cclasp-boehm-0.4.2-1534-gf0cb89608-cst ... loading image... Top level in: #<PROCESS TOP-LEVEL @0x7900ea9>. COMMON-LISP-USER>
devブランチ
devブランチは最新開発版で現在の dee626ca92ce5b2154c1903b17d26444a7f69de6
はLLVM 9を必要としている。
docker run -it --name clasp-dev ubuntu:bionic
apt update apt install -y git sbcl clang-9 libclang-9-dev libgmp-dev libgc-dev zlib1g-dev libelf-dev libncurses-dev libbsd-dev libboost-filesystem-dev libboost-date-time-dev libboost-program-options-dev libboost-iostreams-dev git clone https://github.com/clasp-developers/clasp.git cd clasp git checkout dee626ca92ce5b2154c1903b17d26444a7f69de6 echo BOEHM_GC_ENUMERATE_REACHABLE_OBJECTS_INNER_AVAILABLE=False > wscript.config time ./waf configure build_dboehm
数十分待つとビルドが終わる。
build/clasp
実行するとREPLが起動する。
Starting cclasp-boehm-0.4.2-2436-gdee626ca9-cst ... loading image... Top level in: #<PROCESS TOP-LEVEL @0x9adbb69 (Running)>. COMMON-LISP-USER>