ruby-trunk-changes r46032 - r46038

今日はキーワード引数のためのオブジェクト変換で例外が発生した時にそのバックトレースに VM 内部で利用しているメソッドが現れてしまうという不具合の修正などがありました。

nobu: r46032 2014-05-21 11:42:33 +0900

おそらく Mac OS X 固有の問題だと思いますが Info.plist というファイル名で空のファイル(や、おそらく本来の Info.plist のフォーマットではない不正なファイルでも同様なのでしょう)が存在するとその下のディレクトリで configure が失敗するというのを対策しています。 dsymutil(1) が Info.plist を読もうとして失敗するらしくて、一時的なディレクトリを掘ってカレントディレクトリに正常な Info.plist を作成してからそのサブディレクトリでリンカを呼び出すということをしています。元のチケットでは、そもそもそんなファイル消さないとビルドできないだろ? ということで Third Party Issue としていますし、実際ここまでしなくてもいいような気はしますけど、まあこれを踏むと原因がわかりにくいというのはあるようです。憶えておこう…。 [ruby-core:62594] [Bug #9840]

svn: r46033 2014-05-21 11:42:43 +0900

version.h の日付更新。

akr: r46034 2014-05-21 12:22:18 +0900

r46017 の Socket::Option#inspect での TCP_INFO の対応で Android 版のビルドが失敗するようになっていたのを修正しています。 Android 用の標準ライブラリ Bionic では TCP_XXX のようなマクロが定義されていないそうなのですが、HAVE_CONST_XXX が定義される(extconf.rb では検出された)のに XXX が未定義というのは…あっ、マクロじゃなくて変数として定義されているということですかね。そして ext/socket/option.c では defined(TCP_XXX) で分岐しているところがあるので、マクロとして定義されている必要があるため #define TCP_XXX TCP_XXX という一見無駄な定義を追加しているようです。

nobu: r46035 2014-05-21 13:46:00 +0900

ext/extmk.rb で ext/-test- のテスト用拡張ライブラリは libruby.so をビルドしない時はビルド対象から外すようにしています(正確には "-" で始まるディレクトリの拡張ライブラリ。現状 -test- だけですが)。libruby.so のビルド有無ではなくて、拡張ライブラリを static link するかどうかの条件かもしれないです。 libruby.so がなくても拡張ライブラリ自体は共有ライブラリとしてビルドできるはずですしね。もしくは判定の間違い?

nobu: r46036 2014-05-21 15:11:22 +0900

r18554 のテストということで 2008年の変更のテスト追加です。どうやら類似の不具合があるのをみつけたみたいで、その修正とテスト追加に先立ってテストを追加したということのようです。 [ruby-dev:35820] [Bug #416]

nobu: r46037 2014-05-21 15:11:25 +0900

r46036 で追加したテストと類似の内部的なメソッドが例外のバックトレースに現れてしまうという不具合の修正です。キーワード引数絡みの内部的メソッドの追加に伴なって m_core_hash_merge_ary()、m_core_hash_from_ary()、m_core_hash_merge_kwd() などの関数も REWIND_CFP() で cfp の巻き戻しつきで呼び出すようにしています。 [ruby-dev:35820] [Bug #416]
けどこれもバックポート対象ですよねぇ、多分。

kazu: r46038 2014-05-21 20:36:15 +0900

r46034 の ChangeLog エントリの typo 修正。