ruby-trunk-changes r49797 - r49811

今日は io/wait の不具合修正や Solaris 版のビルド/テストの修正などがありました。

normal: r49797 2015-03-02 06:03:22 +0900

拡張ライブラリ io/wait の IO#nread で戻り値で読んだバイト数を返す時に INT2FIX() を使わずに int をそのまま VALUE として返してしまっていた不具合を修正しています。 [ruby-core:68369] [Bug #10923]

svn: r49798 2015-03-02 06:03:34 +0900

version.h の日付更新。

nobu: r49799 2015-03-02 11:43:10 +0900

r49794 と同様 configure.in で定義している RUBY_REPLACE_TYPE() で符号の有無をチェックした時に n に unsigned 修飾子を追加するようにしています。

ngoto: r49800 2015-03-02 12:07:18 +0900

標準添付ライブラリ ftp のテストで利用するサーバ側ソケットに setsockopt で SO_OOBINLINE というオプションをつけて OOB (優先的に送信されるデータ)の受信を明示的に指定するようにしています。 Solaris でのテストの失敗を修正するためだそうです。またこの変更後に受信するパケットのかたまりかたが OS によって異なるようなので Socket#recv で取得していたところを、"\n" までまとめて受け取るように gets を呼ぶように変更しています。多分送信側でパケットの組み立てかたが異なるんですね。 [ruby-dev:48885] [Bug #10915]

nobu: r49801 2015-03-02 13:04:30 +0900

Signal.signame でシグナル番号として不正な番号が渡された時に nil を返すようにしています。これはバックポート必要かなぁと思いましたが、現状は ArgumentError で "NULL pointer given" という例外が発生するので SEGV するわけでもないので要望がなければこのままかなぁという感じですね。

nobu: r49802 2015-03-02 13:35:12 +0900

.travis.yml に configure と make reconfig の結果の config.status が異なったらエラーにするコマンドを、異なっていてもビルドは通すように(差分は表示した上で)変更しています。こんなのやってたっけ、と思って調べてみたら r42611 で入れてました。結構前ですね。

nobu: r49803 2015-03-02 14:44:59 +0900

r49794 や r49799 の続き。 configure.in で定義している RUBY_REPLACE_TYPE() で unsigned が余分につく可能性があったので追加修正しています。

nobu: r49804 2015-03-02 15:36:12 +0900

_longjmp() が利用できない場合は _setjmp() も利用できないものとして判定するのを AC_CHECK_FUNCS(_setjmp) の前にもってきています。 AC_CHECK_FUNCS() のチェックをスキップさせるためでしょうか。

nobu: r49805 2015-03-02 15:44:22 +0900

r49795 の test-all 用ユーティリティの EnvUtil.invoke_ruby の signal キーワード引数の引数のシグナル名を Signal.list を使って解決するようにして、対応するシグナルがなかったら SIGKILL を使うようにしています。 また Windows 版のときの対応は Signal.list から "TERM" を除外するようにしています。多分元々ないんでしょうけど。

nobu: r49806 2015-03-02 15:44:34 +0900

同じく EnvUtil.invoke_rubyタイムアウト時に発生させる例外クラスを指定するキーワード引数 timeout_error を追加して、これに nil を指定することでタイムアウト時にエラーにせずにシグナルで殺して終了ステータスを取得するようにしています。そして EnvUtil.assert_separately でこの機能を使ってタイムアウト時に例外で止めずに終了ステータスを返してそのチェックでエラーにさせるようにしています。

nobu: r49807 2015-03-02 15:50:28 +0900

r44689 で追加した fork 時のシグナル受信でデッドロックするケースのテスト test_deadlock_by_signal_at_forking で assert_separately を使うようになったので不要になっていた IO.popen を使った子プロセス生成をやめています。ぐっと短くなった。

nobu: r49808 2015-03-02 16:20:13 +0900

EnvUtil.invoke_ruby でシグナル送信時の rescue 節の例外クラスの指定の typo 修正。

nobu: r49809 2015-03-02 16:54:30 +0900

r49808 の再修正。 Errno::INVAL じゃなくて Errno::EINVAL

ngoto: r49810 2015-03-03 01:06:08 +0900

r49760 あたりの PRELOADENV 導入の変更で Solaris 版で --enable-shared でのビルドがエラーになっていたので、Solaris で PRELOADENV に LD_PRELOAD_{64,32} を指定するようにしています。 また 32bit 版のための LIBPATHENV の指定も追加しています。 [ruby-dev:48888] [Bug #10926]

svn: r49811 2015-03-03 01:06:20 +0900

version.h の日付更新。