好き勝手に・げーあにん?

ファミコンと同い年の社会人ヌルオタの日記

Windowsでも自分でRubyをビルドしたい人が対象と聞いて

RubyKaigiでの野良ビルダー養成講座、資料公開しないのかなーと思っていたら、こんな展開になっていたのねー。すごい気になっていたので迷わず購入。

先週末ぐらいから実際に動かしつつ、ぼちぼちやっていた。懇切丁寧に書かれて、ほとんど詰まったところはなかった。……けど、設定をミスっていたり、余計なことをやろうとしてあわあわしてしまったり、テストが通らなかったりしているのでメモ。


readlineのダウンロード先として紹介されていたところが404になっていていて、早々にふて寝。

復活していたので再開。

特に詰まることもなく、安定版(1.9.2-p0)のRuby本体のビルドが完了。

test-all の win32ole のとこで1個失敗。ぐぐったら、すぐに原因が出てきた*1のでパッチあてて、失敗なしに。スキップ30個ぐらいあったが、特に気にせずスルー*2

RubyのプログラムがVC++ブレークポイントで止められるようになっているところで、妙に感動。

更に読み進めていったら、gemをつくるところで、no such file to load -- zlib

.h も .lib も zlib*.dll ちゃんとあるよな……と思いつついろいろ確認 → 環境変数 LIB がちゃんと通ってなかったという超凡ミス/(^o^)\ナンテコッタイ

どこからやり直したらよかったのか、よくわからん……と思いつつ、distclean-ext して nmake。

PATH にある Program Files\GnuWin32\bin の bison.exe か m4.exe を使う際の "Program Files"の空白がお気に召さないらしきエラー。最初は出てなかったのに、なんで今……と思いつつ、bisonのSetup.exeを、元から本の方でオススメされていた Users\なまえ 以下の方を指定してやりなおし。make 通った。

test-all の途中で無限ループっぽいハング。CPU使用率100%のまま帰ってこない。IMAPTest#test_imaps_post_connection_check で帰らぬ人となっている模様。とりあえず、後回しにして、gem をつくるところに戻る。

本の内容は一通り終了。わーい。

さて、IMAPTest#test_imaps_post_connection_checkどうしよう。

とりあえず、trunkでも落としてみようかな。なおってるかもしれないし(問題先送り体質)。

trunkのtestは通って。test-all。8380 tests, 1875137 assertions, 0 failures, 3 errors, 53 skips。エラーだけ抜粋。

 14) Error:
test_install_domain_both(TestGemDependencyInstaller):
Errno::EEXIST: File exists - C:/Users/tagaura/AppData/Local/Temp/test_rubygems_57
84/gems
    D:/Users/tagaura/src/ruby-trunk/test/rubygems/test_gem_dependency_installer.r
b:11:in `setup'
    ./test/runner.rb:19:in `<main>'

 15) Error:
test_install_ignore_dependencies(TestGemDependencyInstaller):
Errno::EEXIST: File exists - C:/Users/tagaura/AppData/Local/Temp/test_rubygems_57
84/gems
    D:/Users/tagaura/src/ruby-trunk/test/rubygems/test_gem_dependency_installer.r
b:11:in `setup'
    ./test/runner.rb:19:in `<main>'

 16) Error:
test_gather_dependencies_platform_alternate(TestGemDependencyInstaller):
Errno::EEXIST: File exists - C:/Users/tagaura/AppData/Local/Temp/test_rubygems_57
84/gems
    D:/Users/tagaura/src/ruby-trunk/test/rubygems/test_gem_dependency_installer.r
b:11:in `setup'
    ./test/runner.rb:19:in `<main>'

って、test-allで帰らぬ人になってたのが再現しないじゃないか。なおってるなおってる(見なかったふり)。

時間切れ

*1:Heroku | No such app

*2:こういうところで、ちゃんとログを取ってないと、あとで痛い目見るんだよなぁ……。もう1回やれば同じ結果が出るだろう……という油断