ruby-trunk-changes r33873 - r33889

今日は最近のビルドの変更に(たぶん)関連して Windows でのビルドエラーの対処やコード整理、Windows での File.chmod の不具合修正などがありました。

usa:r33873 2011-11-28 09:33:18 +0900

Windows で File.chmod に非ASCII文字を含む文字列を渡すと文字コードの変換が間違っていて文字化けしたファイルパスを操作しようとしてエラーになっていた不具合を修正。 [ruby-dev:44898] [Bug#5671]

svn:r33874 2011-11-28 09:33:22 +0900

version.h の日付更新。

usa:r33875 2011-11-28 10:23:49 +0900

configure で FILE 構造体のメンバを調査していたのを win32/win32.c で利用していた件は win32/win32.c で FILE_COUNT, FILE_READPTR を定義するようにして configure での調査は不要にしているようです。 [ruby-core:41313] [Bug #5674]

nobu:r33876 2011-11-28 10:36:09 +0900

Windows 版で socket 関連や getcwd() などの関数を Windows 版のエミュレートしている関数に define するマクロの定義を ruby/win32.h から ruby/subst.h に移動しています。 mingw で拡張ライブラリ socket のビルドエラーになるのを修正するための変更のようです。 [ruby-core:41314] [Bug #5675]

usa:r33877 2011-11-28 11:00:53 +0900

r33876 で Windows プラットフォームを判定するのに __WIN32__ を使っていたのを _WIN32 に修正。

usa:r33878 2011-11-28 11:47:51 +0900

r33826 で IO#fsync() が fsync(2) を実行中に GVL を解放するようにしたのに追随して、Windows 版の IO#flush で fsync() を呼ぶ時も GVL を解放するようにしています。

nobu:r33879 2011-11-28 12:15:31 +0900

win32/mkexports.rb で export するシンボルを決めるために ruby/win32.h でマクロで代替関数に置き換えているのを追随していたところを ruby/subst.h も読むようにしています。 r33876 への追随ですね。

usa:r33880 2011-11-28 12:29:56 +0900

win32/mkexports.rb でおそらく過去の API のバイナリ互換性のため(?)に ruby_sysinit に alias していた NtInitialize というシンボルの登録をやめています。

usa:r33881 2011-11-28 12:33:10 +0900

win32/win32.c から未使用になっていた GetCurrentThreadHandle() という関数を削除。 ChangeLog には include/ruby/win32.h からも削除と書かれてますがまだ残っていますね。

usa:r33882 2011-11-28 12:38:52 +0900

gc.c の GC パラメータの初期値を格納する変数を static にしています。

usa:r33883 2011-11-28 12:49:00 +0900

さらに parse.y で debug 用関数を static に宣言するようにしています。

nobu:r33884 2011-11-28 12:57:31 +0900

fwrite() の返り値を捨てた時の警告除去で変数に受けるようにしたのですが、変数の型を fwrite() の戻り値に合わせて ssize_t にしています。と、ChangeLog に書いてあるのですが、fwrite() の戻り値は size_t のような。

usa:r33885 2011-11-28 22:28:26 +0900

rake の Windows 環境用のテストで "C:/a/b/c" という固定のパスを利用していて、テスト後にゴミが残ってしまっていたそうで、カレンドディレクトリ(一時ディレクトリ)を利用するように書き替えています。
ちなみにこれをみて Windows 版であるパスの drive letter (コロンも含んだ部分)を得るには File.dirname を繰り返し呼んで変化しなくなったら完了、というイディオムがあるんだなぁと知りました。

yugui:r33886 2011-11-29 00:14:14 +0900

make install などで man page をインストールする際に --mantype=$(MANTYPE) を渡している時と渡してない時があって、Solaris など mantype を指定する必要がある時にうまく変換されなかったので、INSTRUBY 自体に常に --mantype=$(MANTYPE) オプションを付けるようにしています。 [ruby-core:40844] [Bug 5598]

svn:r33887 2011-11-29 00:14:17 +0900

version.h の日付更新。

nagachika:r33889 2011-11-29 02:44:25 +0900

r33891 で削除忘れの include/ruby/win32.h から GetCurrentThreadHandle の宣言を削除しています。