ayuminのあまり更新しないBlog

筆不精なのでめったに更新しません

Rubyをビルドしてテストする

ちょっと最近おもうところがあって、rubyのtrunkをビルドしたりmake test したりしている。Ubuntu だとあんまり問題なくビルドできるんだけど、Mac OS X でビルドするのにちょっとハマったので覚書き。
まず、ruby のソースを取ってくる。svn からとってきてもいいんだけど、git つかえるなら GitHub のほうが便利とおもう。

 $ git clone git://github.com/ruby/ruby.git

必要なライブラリを入れる。

 $ sudo port -d selfupdate
 $ sudo port -d sync
 $ sudo port install readline
 $ sudo port install libyaml
 $ sudo port install openssl
 $ sudo port install gdbm

言うまでもなく rubyリポジトリはもともと svn なので、master ブランチというのはなくて trunk とか ruby_1_9_3 とか
いうブランチが取ってこれる。で、早速ビルドする。

 $ cd ruby
 $ autoconf
 $ ./configure --prefix=/Users/ayumin/tmp/ruby \
                      --enable-shared \
                      --with-readline-dir=/usr/local \
                      --with-libyaml-dir=/opt/local \
                      --with-openssl-dir=/opt/local \
                      --with-gdbm-dir=/opt/local \
                      --with-arch=x86_64
 $ make

configure のオプションは --help を指定してあげると一覧ででてくるので自分の環境にあわせて指定すること。各種ライブラリを macports で導入した場合はだいたい/opt/local の下にはいるのだけど、自分の場合 rvm で1.9.2 を入れたときに readline を /usr/local に入れたのでこのようになっている。
ちなみに全部まとめて指定する場合は --with-opt-dir=/opt/local とか書いてもいいらしい。
あと @nahi さんによると

OpenSSLは1.0.0から、64bit版OS上ではデフォルトで"lib"でなく"lib64"ディレクトリに入り、各種「まとめて指定」が効かないのでご注意。

だそうだ。
さて、無事にビルドできるとカレントディレクトリに miniruby とか ruby とかができているはず。
一旦きれいにしてからやりなおしたい時は

 $ make clean

とか

 $make realclean

しましょう。

追記

なんかいつのまにか --with-*-dir というのは指定しなくてもよくなったみたい。
こんな感じでビルドできた。

  $ autoconf
  $ ./configure --with-opt-dir=/usr/local --with-opt-dir=/opt/local --prefix=/Users/ayumin/tmp/ruby --enable-shared
  $ make
  $ make test