ruby-trunk-changes r55333 - r55344

今日も OpenSSL の 1.1.0 対応などがありました。

nobu: r55333 2016-06-09 13:44:32 +0900

拡張ライブラリ stringio の strio_init() で最後に return self するようにして strio_initialize() から最後に末尾呼び出しになるようにして最適化がききやすくなるようにしています。

svn: r55334 2016-06-09 13:44:33 +0900

version.h の日付更新。

rhe: r55335 2016-06-09 15:03:55 +0900

拡張ライブラリ openssl の OpenSSL 1.1.0 ビルド対応。 pkg-config でのチェックが使えない環境で libcypto or libeay32 のチェックをOpenSSL_add_all_digests というシンボルで行なっていたのを CRYPTO_malloc で行なうようにし、libssl or libssleay32 のチェックを SSL_library_init のかわりに SSL_new で行なうようにしています。[ruby-core:75225] [Feature #12324]

nobu: r55336 2016-06-09 15:31:11 +0900

win32/ifchange.bat で command.com を使う古い Windows 向けの処理を削っています。

nobu: r55337 2016-06-09 15:31:54 +0900

tool/ifchange でチェック対象のタイムスタンプファイルがサブディレクトリに置かれるもので、そのディレクトリが存在しなかったら作成するようにしています。

nobu: r55338 2016-06-09 15:32:18 +0900

rbconfig.rb を作成する時に tool/mkconfig.rb と tool/ifconfig を組み合わせて使うようにして、tool/mkconfig.rb から tool/ifconfig と重複した機能を削除しています。

nobu: r55339 2016-06-09 15:52:03 +0900

common.mk で rbconfig.rb と update-bundled_gems で ifchange を参照するところで Windows 版の場合も考慮して $(IFCHANGE) 変数の参照に変更しています。

nobu: r55340 2016-06-09 16:37:29 +0900

win32/ifchange.bat の場合標準入力から読む機能がないので一旦 rbconfig.tmp にリダイレクトしてそれを渡すように rbconfig.rb のルールを変更しています。

nobu: r55341 2016-06-09 18:12:44 +0900

Makefile に un-runnable というターゲットを追加してエラーメッセージを出力するようにしています。 common.mk で $LIBRUBY_RELATIVE を参照してて、make runnable を実行した時に configure に --enable-load-relative がついてなくて runnable ファイルを作れない時に呼び出すターゲットみたいです。 [ruby-core:75905] [Bug #12472]

rhe: r55342 2016-06-09 19:46:46 +0900

r55214 で ECDH が使えるかどうか SSL_CTX_set_ecdh_auth() という関数をみるようにしていましたが、OpenSSL では ECDH が無効化されていても SSL_CTX_set_ecdh_auth() という関数は定義されているようなので OPENSSL_NO_EC というマクロの定義の有無もみるようにしています。 また ECDH が使えない環境を考慮してテストで NotImplementedError や OpenSSL::SSL::SSLError の例外の捕捉を追加しています。

kazu: r55343 2016-06-09 21:10:50 +0900

r55337 の tool/ifchange の変更で条件文に余計なピリオドがあってビルドエラーになっていたのを修正しています。

rhe: r55344 2016-06-09 21:42:08 +0900

拡張ライブラリ openssl の ASN1 の parse の asn1integer_to_num() で ASN1_ENUMERATED という型の場合も考慮するようにしています。 これも OpenSSL 1.1.0 対応の一部みたいで、これまでは ANS1_INTEGER_to_BN() で ENUMERATED も変換できていたのがエラーになるように変わったみたいです。 [ruby-core:75225] [Feature #12324]