ScientificLinux,CentOS 6にSBCL。そしてcl-openGL | たけおか ぼちぼち日記

たけおか ぼちぼち日記

思いついたらメモ


まず、Scientific Linux , CentOS 6 にSBCL(Steel Bank Common Lisp)を入れる。
そして、Scientific Linux下のSBCLで cl-opengl を使えるようにする。
(CentOS 6のマシンには、OpenGLをサポートするカードが入っていないので、試せないだけ)
たけおか ぼちぼち日記-gear OpenGL in SBCL

ubuntuでもいける。
ubuntuでは、sbclは、/usr/bin/sbcl, /usr/lib/sbcl/ にあり。




Scientific Linux , CentOS 6 にSBCL(Steel Bank Common Lisp)を入れる。

http://www.sbcl.org/platform-table.html より、
sbcl-1.0.56-x86-64-linux-binary.tar.bz2 を得る。

% tar xvjf sbcl-1.0.56-x86-64-linux-binary.tar.bz2

として、展開。

% cd sbcl-1.0.56-x86-64-linux-binary
% su
# INSTALL_ROOT=/usr/local sh install.sh
とする。

sbclコマンドは、
/usr/local/bin/sbcl
関連ファイルは
/usr/local/lib/sbcl/
に入る。

これで、sbclが普通に使える。




Scientific Linuxの SBCLで OpenGLを使う。
(Scientific Linuxには、nVidiaのカードが刺さっている)


なんと リリカルLispがMacOSでやっていた
ありがたく、そのまま真似た。

Common Lisp用 OpenGL I/Fは、cl-opengl が普通のようだ。
http://www.cliki.net/cl-opengl

https://github.com/3b/cl-opengl
から、
3b-cl-opengl-25f2f60.tar.gz をダウンロード


root になり、/usr/local/lib/sbcl/site にて

[root@hinano site]# cd /usr/local/lib/sbcl/site
[root@hinano site]# tar xvzf ~take/3b-cl-opengl-25f2f60.tar.gz
3b-cl-opengl-25f2f60/
3b-cl-opengl-25f2f60/COPYING
:
3b-cl-opengl-25f2f60/tools/generate-funcs.lisp
[root@hinano site]# ls
3b-cl-opengl-25f2f60
[root@hinano site]# cd ../site-systems/
[root@hinano site-systems]# pwd
/usr/local/lib/sbcl/site-systems
[root@hinano site-systems]# ln -s ../site/3b-cl-opengl-25f2f60/*.asd .
[root@hinano site-systems]# sbcl
# sbcl
This is SBCL 1.0.56, an implementation of ANSI Common Lisp.
More information about SBCL is available at .
:
* (require 'asdf-install)

("ASDF-INSTALL" "SB-POSIX" "SB-BSD-SOCKETS" "SB-GROVEL" "ASDF")
* (asdf-install:install :cffi)
Install where?
1) System-wide install:
System in /usr/local/lib/sbcl/site-systems/
Files in /usr/local/lib/sbcl/site/
2) Personal installation:
System in /root/.sbcl/systems/
Files in /root/.sbcl/site/
-->


ここで、全システムのみんなに使わせたいので、「1」(return)を入力。





--> 1
Downloading 210232 bytes from http://common-lisp.net/project/cffi/releases/cffi_latest.tar.gz ...

debugger invoked on a ASDF-INSTALL::KEY-NOT-FOUND in thread
#:
No key found for key id 0xC8025B93BBA2B4A4. Try some command like
gpg --recv-keys 0xC8025B93BBA2B4A4

Type HELP for debugger help, or (SB-EXT:QUIT) to exit from SBCL.

restarts (invokable by number or by possibly-abbreviated name):
0: [SKIP-GPG-CHECK] Don't check GPG signature for this package
1: [ABORT ] Exit debugger, returning to top level.

(ASDF-INSTALL::VERIFY-GPG-SIGNATURE/STRING
"-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)

iQEcBAABAgAGBQJPnv22AAoJEMgCW5O7orSkJxsH+wanzKOXUkGAwigFfCYVMRCR
Zuk2XeMPITeRJwgpqgCZtsm58pAYoTA7k4iKNo7c5sqb+9MokLFhRmqHD+7rKZw0
d7IW8Pb8r4wo36nML4FEXIv9ijHw5IeXSJdC6++7tjQ1J0jopaTUpK9qzffAv1md
0hjFxraC7X30anDws9unEz8EuxxzuLlSDZV968jgJzJrlYNcIszfvjlppVrQgfcS
8pLd2E2zg7J+bHaBSiaTQBmBXtqHRSHeunBhISBjvXsbHvUWznYoLC7mRRhCTsOY
PYaLjUIEyIHQlzWLCuyLbZXy0qHAb0n6rOIXsTkeGNs7vsKUsmi3MHRrPdozWUY=
=aoYI
-----END PGP SIGNATURE-----
"
#P"/usr/local/lib/sbcl/site-systems/CFFI.asdf-install-tmp")
0]


ダウンロードしたファイルのPGP電子署名が正しいか確認できない。
どうするか聞いている。
電子署名チェックはスキップして欲しいので、「0」を選ぶ。
このあとも、パッケージごとに毎回同じことになるが、電子署名チェックは、全部、スキップで良し。


0] 0
Installing /usr/local/lib/sbcl/site-systems/CFFI.asdf-install-tmp in /usr/local/lib/sbcl/site/,/usr/local/lib/sbcl/site-systems/
cffi_0.10.7.1/
cffi_0.10.7.1/HEADER
:
cffi_0.10.7.1/grovel/common.h

debugger invoked on a ASDF:MISSING-COMPONENT in thread
#:
Component "cffi-examples" not found

Type HELP for debugger help, or (SB-EXT:QUIT) to exit from SBCL.

restarts (invokable by number or by possibly-abbreviated name):
0: [REINITIALIZE-SOURCE-REGISTRY-AND-RETRY] Retry finding system
cffi-examples after
reinitializing the
source-registry.
1: [RETRY ] Retry installation
2: [ABORT ] Exit debugger, returning to top
level.

((LAMBDA () :IN ASDF:FIND-SYSTEM))
0] 0



「"cffi-examples"コンポーネントが無い」と言っている。
「0: [REINITIALIZE-SOURCE-REGISTRY-AND-RETRY] Retry finding system...」を選ぶと、うまく行ったので、
まぁ、それでいいでしょう。

このあとも、babelを入れたら、「"babel-streams" not found」とか色々言われるが、
上記のように適当に進める。

結局、
cffi
babel_0.3.0
trivial-gray-streams
alexandria
trivial-features
rt
metabang-bind
lift
stefil
が入った様子。


さて、
以上がすべて終わったら、
root権限のまま、
最初のcl-openglの例題のロードを行う。

例題のロード時に、コンパイルして
/usr/local/lib/sbcl/site/3b-cl-opengl-25f2f60/
にバイナリを置こうとする。
そのバイナリを書くために、root権限が必要。

例題は、個人のホームディレクトリに置いて、それをasdfに教えた方がいいのかも。

ともあれ、

*(require 'asdf)
*(asdf:oos 'asdf:load-op :cl-glut-examples)

とする。
(asdf:oos 'asdf:load-op :cl-glut-examples)の一回目の実行では、コンパイルも起きる。
ここで、一度 sbcl を終わる。

rootでは、Xサーバへ接続する権利が無いかも知れない。
(私は、gnome-terminal内のshellで、su したので、Xサーバは、自分(個人)の権限でないと接続できない)

自分のshellで、sbclを起動。

take@hinano% sbcl
*(require 'asdf)
*(asdf:oos 'asdf:load-op :cl-glut-examples)
*(cl-glut-examples:gears)

とする。
すると、窓が出て、ギアが回る。
たけおか ぼちぼち日記-gear OpenGL in SBCL

そして
19796 frames in 5.0 seconds = 3959.200 FPS
19487 frames in 5.0 seconds = 3897.400 FPS
19780 frames in 5.0 seconds = 3956.000 FPS
という表示がLispの方に出る。
ギアはかなり速く回っているが、これって速いのか???
Nvidiaの Geforce GTS 450だが…

--- 今回のシステム
Scientific Linux
% uname -a
Linux hinano 2.6.32-220.13.1.el6.x86_64 #1 SMP Tue Apr 17 15:16:22 CDT 2012 x86_64 x86_64 x86_64 GNU/Linux

NVIDIA-Linux-x86_64-290.10

ハードウェア: Geforce GTS 450

--
Ubuntu
% uname -a
Linux gyopo 3.0.0-19-generic #33-Ubuntu SMP Thu Apr 19 19:05:14 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux

ハードウェア: Thinkpad X220 , HD3000
--
ubuntu の HD3000 で、GLXが動いていない人は、
[SOLVED] No 3D with Intel HD P3000 (Xeon Variant of i7)
を真似るといい。
上から引用

$ sudo update-alternatives --config x86_64-linux-gnu_gl_conf
$ sudo apt-get install --reinstall libgl1-mesa-dri libgl1-mesa-glx
$ sudo ldconfig

これをやって、Xサーバを再起動すると、GLXが使えるようになった。