[groonga-dev,00768] Re: rroongaをWindows環境でもビルド済みgemを使わずにインストール

Back to archive index

ongaeshi ongae****@gmail*****
2012年 4月 11日 (水) 10:33:18 JST


ongaeshiです。

2012年4月10日22:16 Kouhei Sutou <kou****@clear*****>:

>> Win7(64bit) + Ruby1.8.7(ActiveScriptRuby,32bit) でも上手く動きませんでした。
>
> あぁ、ActiveScriptRubyですか。
> RubyInstallerのRuby 1.8だとWindows 7 (64bit) + Ruby 1.8.7で
> も動いたんですけどねぇ。。。
>
> ActiveScriptRubyでもMSVCRT.dllなのでMinGWでクロスコンパイル
> したやつで大丈夫なはずなんですけど。。。
>
>> OSとRubyのバージョンの組み合わせで動いたり動かなかったりするのでしょうか?
>
> うーん、ビルドの仕方的にはどれでも動くはずなんですけど。。。
> VC++ 6くらいでビルドされたRubyまでは動きますけど、それより後
> のVC++でビルドされたRubyだと動かないと思います。新しいVC++で
> ビルドされたRubyはMSVCRT.dll(たぶん
> MicroSoftVisualC++RunTimeの略)じゃなくてMSVCR80.dllとかを使っ
> ています。一方、MinGWでビルドしたやつはMSVCRT.dllを使うので、
> 競合してしまうんです。MinGWでも-lmsvcr80とかすれば
> MSVCR80.dllを使ったバイナリを作れそうな気がするんですけど、
> うまくいったことはないです。。。
>

Windowsはややこしいですね..。
※ でも諸事情で使わない訳にはいけないし、なんだかんだで好きなOSだったり・・。

私が使っていてActiveScriptRuby + rroongaが動いた記憶があるのは、
Windows+Cygwin(MinGW) でコンパイルした rroonga1.1.0 だけでした。

ActiveScriptRubyはDevKitが動かないらしいので、今私が実験している
パッチが上手くいったとしても、結局コンパイル出来ないのですが、
個人的にはActiveScriptRubyからRubyInstaller+DevKitに
環境を切り替えている最中なので、特に不便は感じていません。

> あ、ただ、今、世の中に出回っているやつでVC++でビルドされたも
> のは古いバージョンのやつがほとんどです。最新のRubyを使えるの
> は能楽堂が唯一じゃないかと思います。
>  http://www.artonx.org/data/nougakudo/
>

そうか!! 能楽堂がありましたね。
能楽堂でgroonga64bit版を含んだrroongaが作れたら一番安定するかも?

その内実験するかもしれません。

>>   $ gmilk test
>>   C:/ruby/lib/ruby/gems/1.8/gems/milkode-0.6.1/lib/milkode/findgrep/findgrep.rb:512:
>> [BUG] rb_gc_mark(): unknown data type 0x2a(0x4c782c0) corrupted object
>>   ruby 1.8.7 (2010-12-23 patchlevel 330) [i386-mswin32]
>>
>>   This application has requested the Runtime to terminate it in an unusual way.
>>   Please contact the application's support team for more information.
>
> あ、これは、基本的な機能は動くけど、GCのときにSEGVするってこ
> とですか?基本的な機能も動かない状態かと思っていました。
>

基本的な機能も動いていないつもりでしたが、
Milkode実行時のエラーなので分かりづらいですね・・。

分かりやすくするため、rroongaのチュートリアルを順番に実行するテストコードを作って、実行してみました。
https://gist.github.com/2352381

実行結果
https://gist.github.com/2328124

1. xp-32bit-ruby1.9.3.log :
  Groonga::Hash 要素へのアクセス時に'Segmentation Fault'
  https://gist.github.com/2352717#file_xp_32bit_ruby1.9.3.log

2. win7-64bit-ruby1.8.7.log :
  同じく、Groonga::Hash 要素へのアクセス時に'Segmentation Fault'
  https://gist.github.com/2352717#file_win7_32bit_ruby1.8.7.log

やはり、どちらも基本的な機能が動いていないようです。

それとは別に

1. 基本的な機能が動いているgemをインストールして
2. Milkodeで大量のレコードを登録(大体10000前後が目安)

で、'Segmentation fault'するようです。
https://gist.github.com/2352717#file_add_many_record_from_milkode.log

こちらについてはMilkodeとrroonga間で問題を切り分けられていないので、ひとまず報告まで。

>> 手元で実験しているのですが、WinXP(32bit)+Ruby1.9.3(+DevKit)の組み合わせでは上手く動きました。
>> もう少し、いくつかの環境で試してみます。
>> https://github.com/ongaeshi/rroonga/commit/0b6f07caf2435dc859b3b1c6e6a8d1d42d3446bb
>
> おぉ!うまく動いたらpushしちゃってください!
>

ありがとうございます!! いくつかの環境で動くようだったらpushしますねー。

-- 
/******************************************
 ongaeshi
 MAIL:   ongae****@gmail*****
 WEB:   http://ongaeshi.me
 Twitter: http://twitter.com/ongaeshi
 ******************************************/




groonga-dev メーリングリストの案内
Back to archive index