Jenkins でビルドして test-all を実行するまでの手順メモ
Rubyの trunk が 2.0 になったことだし、ビルドしたくて手が震えてしまいますよね!! そんなあなたのための備忘録です。
手順
- Ruby を チェックアウトします(git か svn か使いたい方で)
- cd ruby
- /usr/local/bin/autoconf # このコマンドで configure ファイルを作る
- ./configure --prefix=$HOME/rubies/ruby_20111024 --with-openssl-dir=/opt/local --with-libyaml-dir=/opt/local
- openssl と libyaml はデフォルトでは入ってなかったので別途portsを使ってインストールを行った。そのため、インストール先を指定する必要がある
- make
- make時に "Please install yaml" のような記述があるものは、別途 ports 等でインストールする必要がある。
- make test-all
test-all で必要になって追加インストールしたもの
- ports で install しているので、configure の --with オプションで利用するパスは /opt/local になる
- sudo port install openssl
- sudo port install libyaml
jenkins でCI環境を作るときに必要なもの
実行ユーザがdaemonで、$HOMEが /var/root になっていて書き込み権限まわりでうまくいかなかった。しかたなく、HOMEの値をちょっと退避させて対応を行った。
Jenkinsでビルドするときのスクリプトはこんな感じ。
ちなみに、チェックアウト先の "ローカルモジュールディレクトリ" は ruby_src に指定してある。
ORG_HOME=${HOME} HOME=${JENKINS_HOME} DIR=`pwd` mkdir -p ruby cd ruby_src /usr/local/bin/autoconf ./configure --prefix=${DIR}/ruby --with-openssl-dir=/opt/local --with-libyaml-dir=/opt/local make make test-all HOME=${ORG_HOME}
※ pkg でインストールした最新版である 2.68 の autoconf を使うために、絶対パスで実行するように修正しました*2
ちなみに
上記の設定で Jenkins 上ではきちんとビルドできるようになったのだけど、自分のターミナルから実行すると
71) Failure: test_read_mode(TestIO_M17N) [/Users/sugamasao/rubies/ruby_src/test/ruby/test_io_m17n.rb:1552]: <"a\nb\nc\n\x{C2A2}"> expected but was <"a\nb\nc\n蔵">. 72) Failure: test_pipe(TestIO_M17N) [/Users/sugamasao/rubies/ruby_src/test/ruby/test_io_m17n.rb:707]: <nil> expected but was <#<Encoding:UTF-8>>.
こんな感じで エンコード周り(と思われる箇所)のエラーがでてしまう。
LANGの設定かなぁと思って設定しないで*3実行してみたのだけど、状態変わらず。。。どこの設定を変えればいいのか教えて下しあ!!