C

Ruby-1.8.7_p160 openssl編 その4

前回すったもんだしたopensslだが、気を取り直して本家から最新のソースコードをダウンロードしてビルドするとあっさりと何もなかったように終わった。openssl-0.9.8k.tar.gz/ openssl Source, Tarballs ビルドが成功した理由はちゃんとあった。以下のように…

Ruby-1.8.7_p160 openssl編 その3

test_ssl.rb中のtest_client_authが失敗する件だが、自宅環境で拡張ライブラリィを作り直してテストして見るとエラーが消えてしまった。仕事場の環境でエラーが出た時のログを見ると 3) Failure: test_client_auth(OpenSSL::TestSSL) [./openssl/test_ssl.rb…

Ruby-1.8.7_p160 openssl編 その2

前回すったもんだしたopensslだが、気を取り直して本家から最新のソースコードをダウンロードしてビルドするとあっさりと何もなかったように終わった。openssl-0.9.8k.tar.gz/ openssl Source, Tarballsなのでこれを使って拡張ライブラリィを作る。 E:\ruby-…

Ruby-1.8.7_p160 openssl編

さて、続いてはopensslだ。まずは失敗したテスト結果を見てみよう。 3) Failure: test_client_auth(OpenSSL::TestSSL) [./openssl/test_ssl.rb:216:in `test_client_auth' ./openssl/test_ssl.rb:129:in `call' ./openssl/test_ssl.rb:129:in `start_server'…

Ruby-1.8.7_p160 iconv編 (3 failures, 1 errors)

最初はテストは省いてどんどんビルドして行こうと考えていたのだが、忘れてしまうのがおちなので、修正が必要な所は最初に対応することにした。dbm, gdbmのエラーを除去した後にrunner.rbを実行すると、以下のように失敗3、エラー1となった。 1) Failure: te…

2 failure test_gdbm.rb on Ruby-1.8.7_p160

test_dbm.rbのテストはALL GREENになったが、今度は同gdbm.dllを使用するtest_gdbm.rbのテストが通らないのが気になる所だ。 E:\ruby-1.8.7-p160\test\gdbm>ruby test_gdbm.rb Loaded suite test_gdbm Started .....................F...F................. …

ランタイムとDLL境界

Rubyを経由してgdbm.dllをデバッグした当初にちょっとはまったことがあった。Rubyの拡張ライブラリィである、dbm.soとgdbm.soは両方ともgdbm.dllの実装を利用するために動的にリンクするように作られているのだが、Visual Studioを使用してデバッグ用のgdbm.…

All Green! (DBMError: dbm_store failed in ruby1.8.7_p160 その5)

link関数を呼んでいる以上、コピーではなくやはりリンクを使うべきだろうということで、CopyFileの代わりにWindows 2000以降実装されたCreateHardLinkで試してみることにした。CreateHardLinkのマクロはCopyFile同様にVC++に付属しているWinBase.h(%VSINSTAL…

リンクとコピー (DBMError: dbm_store failed in ruby1.8.7_p160 その4)

長らく私を悩ませているRuby-DBMがまともに動かない件だが、件のgdbm.dllをデバッグすることでようやく原因が判明したかもしれない。そもそもgdbmはdbmの実装を包含しており、殆どのdbm_〜関数はgdbm_〜関数を内部で呼び出すことになるが、レガシDBMの仕様を…

Rubyの拡張ライブラリィとDBM(GDBM)をデバッグする

Ruby-DBMのテストが通らない原因をいろいろと調べていたのだが、DBMインタフェースの実装として使用しているGDBM(GNU DBM)に問題がある可能性が非常に高くなったので、こいつのデバッグをしてみることにした。Windows用のGDBMの実装は通常にビルドした場合、…

DBMError: dbm_store failed (ruby1.8.7_p160)その3位

いろいろ弄るも上手く動かない。 dbm.c より static VALUE fdbm_store(obj, keystr, valstr) VALUE obj, keystr, valstr; { datum key, val; struct dbmdata *dbmp; DBM *dbm; fdbm_modify(obj); keystr = rb_obj_as_string(keystr); valstr = rb_obj_as_str…

DBMError: dbm_store failed (ruby1.8.7_p160)

何度か試していると成功するパターンがあることが解ったので、IRBで実行して見た。 一発目のファイル(DB)オープン(作成)直後のストアが問題ぽい。二度目以降は何度でもストアに成功している。

DBMError: dbm_store failed (ruby1.8.7_p160)

基本的な拡張ライブラリィのビルドが上手くいったので、Railsを動かす前に(いったいどれだけ時間がかかっているんだろ)一通りテストを通しておこうとソースに付属してきたrunner.rbを実行してみたが、エラーががんがん出る。いい機会なのでエラーを潰しなが…

本当は解決済みだった(LNK2019: 未解決の外部シンボル)

trace_nums.cだが、取りあえずコンパイルを通すことだけは出来た。変更点は以下の通り(trace_nums.c.diff) 42,43c42,43 ruby_eval_tree_begin; ruby_in_eval; - > extern NODE *ruby_eval_tree_begin; > ちょっと冷静になればruby_eval_tree_beginとruby_in_…

RubyMineで動かしてみる

trace_nums.cのビルドが成功したので、linecacheのgemを作る。 E:\ruby_build_image\linecache-0.43>rake win32_gem (in E:/ruby_build_image/linecache-0.43) e:/ruby/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake/gempackagetask.rb:13:Warning: Gem::mana…

error LNK2019: 未解決の外部シンボル

linecacheがビルドできない原因だが、未だによく分っていない。 : trace_nums.obj : error LNK2019: 未解決の外部シンボル _ruby_eval_tree_begin が関数 _lnums_for_str で参照されました。 trace_nums.obj : error LNK2019: 未解決の外部シンボル _ruby_in…