きりかノート 3冊め

おあそびプログラミング

RubyCocoa 最近のコミット 2013-10-07

git svn dcommit忘れてたのでまとめて。

  • String#readでarrayを期待してるところでString#readlinesを使うように (r2428)

ぶっちゃけruby-2.0で試してたらエラーになったので直した。テストなんかでrequire_relativeに直す必要があるところもあるんだけど、そっちはどう対処するか決められなかったので保留。

  • configのオプション--ruby-archheader-dirを追加 (r2429)

ruby.hの場所を指示する--ruby-header-dirが既にあるんだけど、config.hの場所を指定するオプションを追加。これも2.0対応の準備ではあるんだけと、次の作業とも関係して今回コミットした。
(10/8 追記)ちょっと説明を加えると、ruby-1.8系ではruby.hとconfig.hは同じ場所に配置されるが、1.9以降ではそうではない。

  • SDKを指示(configで--sdkroot指定)したとき、拡張ライブラリのext/rubycocoaのextconf.rbにちゃんと処理させる (r2430)

extconf.rbでmkmf.rbをrequireしたときに、mkmfの中でruby.hとconfig.hの存在を確認してるんだけど、SDKを使うときにそこがうまく指示されてなかったので

   mkmf.rb can't find header files for ruby

というエラーが出てしまうケースがある。その対応。コンパイル自体は-isysrootをCFLAGSに設定していたので問題はないものの、指定したSDKコンパイルを実行する環境で同じ場所にruby.hとconfig.hを置いてないと上記のエラーになってしまう。

変更内容としては

  • require 'mkmf'する前に、グローバル変数$top_srcdir(ruby.h)と$topdir(config.h)を設定してやる
  • configで設定された--sdkroot, --ruby-header-dir, --ruby-archheader-dirをextconf.rbに渡す
  • Mac OS X 10.8以降は--sdkrootの利用をデフォルトに

といったもの。最後はなくてもいいんだけど、確認ついでにそうすることにした。