2015年11月

Windows 環境で Ruby (trunk) をビルドする (2015年版)

http://pgnote.net/?p=896 を参考に Windows での Ruby ビルド環境を構築してみた。

更新履歴

  • (2015/11/21) GnuWin32のsed,bisonを入れる方法から DevKit を入れる方法に変更 (thanks @naruse)

Rubyをインストール

RubyのビルドにRubyが必要なので、Windows用Rubyバイナリをインストールする。現在の最新版 2.2.3 を入れた。

「Rubyの実行ファイルへ環境変数PATHを設定する」に チェックを入れる。C:\Ruby22-x64 にインストールしたものとする。

DevKit をインストール

同じサイトから DEVELOPMENT KIT こと DevKit をダウンロードしてインストールする。 Ruby のビルドに必要な sed、bison や、いわゆる MSYS 環境や諸々がついてくる。

C:\devkit に解凍したものとする。コマンドプロンプトを起動して、

cd C:\debkit
ruby dk.rb init
# config.yml
ruby dk.rb install 

システム環境設定の詳細から C:\devkit\bin に Path を通しておく 

MS Visual Studio Express Edition 2013

2015 だとエラーが出た。まだ対応してないそうなので、2013 を入れる。

https://www.microsoft.com/ja-jp/download/details.aspx?id=44914 

コマンドプロンプトを起動して nmake まで

通常のコマンドプロンプトではなく、開発者コマンドプロンプト for VS2013 を起動する。vcvarsall.bat とやらを実行して nmake などへのパスを通すなどしてくれるらしい。

C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\Shortcuts

にあるはずだが、検索したほうが早いかもしれない。

いよいよ git clone してビルド。git は Git for Windows をインストールして Path を通すなどしておけばよい。ビルドそのものには必要ではないので割愛。

git clone -b trunk https://github.com/ruby/ruby
cd ruby
win32\configure --prefix=C:\opt\ruby-head
nmake
name install

エラーが出なければ成功。試しに logger のテストを流すにはこう

nmake test-all TESTS="test/logger/test_logdevice.rb"

その他

ただ、zlib や openssl を入れてないので、gem install すら動かせられないはず。それらについてはまた今度。

おわりに

これで動作確認できるぞ╭( ・ㅂ・)و ̑̑ 

はじめての Ruby コミット

ref. https://twitter.com/yukihiro_matz/status/666167419652714496

shyouhei さんの記事が参考になる > Rubyのパッチ袋 - 卜部昌平のあまりreblogしないtumblr

git clone -b trunk git://github.com/ruby/ruby.git
cd ruby
git svn init -s --prefix=origin/ svn+ssh://svn@ci.ruby-lang.org/ruby
git svn fetch

ただ、これだと git svn fetch に1日かかるとのことなので、hsbt さんがくれた git-svn のアーカイブの続きから行う

wget https://svn.ruby-lang.org/ruby-svn.tar.gz
tar zxvf ruby.svn.tar.gz
cd ruby.svn
git svn fetch # ここで時間がかかるかも
git svn rebase

PRとして送ってたコミットがあるので、それを cherry-pick して

git remote add origin git@github.com:ruby/ruby.git
git remote update
git cherry-pick 8bdd28f5221da3904a40270a518464fe180fd029

ChangeLog、必要があれば NEWS を変更して、git commit --amend して、コミットコメントを整えるなどして、最後に git svn dcommit する

git svn dcommit --dry-run
git svn dcommit

TIPS

  • svn に commit されると自動で github.com/ruby/ruby にも反映される(ラグはある)
  • commit コメントに [fix GH-XXXX] みたいに PR 番号を含めると PR も自動で閉じられる
  • commit コメントに [Feature #XXXX] もしくは [Bug #XXXX] みたいに bugs.ruby-lang.org のチケット番号を含めるとチケットも自動で閉じられる
  • ChangeLog、NEWS の更新を忘れずに. See https://bugs.ruby-lang.org/projects/ruby/wiki/CommitterHowtoJa 

そして、めでたく usa さんに「そのテスト Windows で通らないから」と Bug チケットを作られてしまうのであった。とほほ。
 

See also Compile ruby-head
A Ruby and Fluentd committer working at DeNA. 記事本文および記事中のコード片は引用および特記あるものを除いてすべて修正BSDライセンスとします。 #ruby #fluentd #growthforecast #haikanko #yohoushi #specinfra #serverspec #focuslight
はてぶ人気エントリー