From: siena@... (Siena. / SHINAGAWA, Norihide) Date: 2003-12-24T19:37:34+09:00 Subject: [ruby-list:38972] Re: Ruby 1.8.1 preview4 (i386-os2-emx) Siena. です。 OS/2 V4.51 (aka MCP1) 日本語版 with EMX 09d FIX04 で試しています。 これは、単純にビルドとテストをしただけの場合についての報告です。 幾つかのパッチを当てた物を使用していますが、以下の報告は共通します。 preview4 そのままでは拡張ライブラリのビルドが通らないため、 [ruby-dev:21765] を当てた上で、次のようにビルドしています。 $ tar -xzf ruby-1.8.1-preview4.tar.gz ; cd ruby-1.8.1 $ ( cd ext ; mv Setup.emx Setup.emx.org egrep -vi 'win|\' Setup.emx.org | sed 's/# *//' > Setup.emx wget http://www.yoshidam.net/uconv-0.4.11.tar.gz tar -xzf uconv-0.4.11.tar.gz echo uconv >> Setup.emx ) $ autoconf $ ./configure --prefix=$RUBYDIR --with-static-linked-ext=yes \ --disable-shared --enable-compat-win32api $ make ; make $ make test && make install && cd test ; ruby runner.rb 途中、make を 2 回動かしているのは、初回の ext/openssl の ビルド中に、エラー報告やコアダンプもなく突然終了してしまうためです。 2 回目以降は、make clean しても正常にビルドが進みます。 ext/openssl/Makefile などを見てみましたが原因は良く分かりません。 ユニットテストでは、二つ失敗します。 これらは、とりあえず、そのままで進めていただいて結構です。 もし何かお気付きの点がありましたらご指摘いただきたいと 思いますので、以下に症状を挙げておきます。 まず、ext/openssl がうまくビルドできていないためか、 次の例外が発生します。ビルドの失敗と合わせて調査中です。 ext/openssl 単体のテストコードはどこかにあるでしょうか? $ ruby runner.rb drb/test_drbssl.rb T:/lib/ruby/1.8/drb/ssl.rb:83:in `setup_certificate': undefined method `create_extension' for # (NoMethodError) from T:/lib/ruby/1.8/drb/ssl.rb:148:in `open_server' from T:/lib/ruby/1.8/drb/drb.rb:728:in `open_server' from T:/lib/ruby/1.8/drb/drb.rb:726:in `each' from T:/lib/ruby/1.8/drb/drb.rb:726:in `open_server' from T:/lib/ruby/1.8/drb/drb.rb:1228:in `initialize' from ./drb/test_drbssl.rb:27:in `new' from ./drb/test_drbssl.rb:27 from T:/lib/ruby/1.8/test/unit/collector/dir.rb:75:in `require' from T:/lib/ruby/1.8/test/unit/collector/dir.rb:75:in `collect_file' from T:/lib/ruby/1.8/test/unit/collector/dir.rb:62:in `recursive_collect' from T:/lib/ruby/1.8/test/unit/collector/dir.rb:25:in `collect' from T:/lib/ruby/1.8/test/unit/autorunner.rb:59 from T:/lib/ruby/1.8/test/unit/autorunner.rb:54:in `[]' from T:/lib/ruby/1.8/test/unit/autorunner.rb:181:in `run' from T:/lib/ruby/1.8/test/unit/autorunner.rb:13:in `run' from runner.rb:7 もう一つは、EMX での UNIXServer 使用上の制限のように思えます。 辿っていくと、ext/socket/socket.c:init_unixsock() 辺りで失敗して いそうなので、改善できないかいずれ見てみたいと思っています。 $ ruby runner.rb drb/test_drbunix.rb T:/lib/ruby/1.8/drb/unix.rb:82:in `initialize': Invalid argument - F:/tmp/druby7089.0 (Errno::EINVAL) from T:/lib/ruby/1.8/drb/unix.rb:82:in `new' from T:/lib/ruby/1.8/drb/unix.rb:82:in `temp_server' from T:/lib/ruby/1.8/drb/unix.rb:31:in `open_server' from T:/lib/ruby/1.8/drb/drb.rb:728:in `open_server' from T:/lib/ruby/1.8/drb/drb.rb:726:in `each' from T:/lib/ruby/1.8/drb/drb.rb:726:in `open_server' from T:/lib/ruby/1.8/drb/drb.rb:1228:in `initialize' from ./drb/test_drbunix.rb:11:in `new' ... 6 levels... from T:/lib/ruby/1.8/test/unit/autorunner.rb:54:in `[]' from T:/lib/ruby/1.8/test/unit/autorunner.rb:181:in `run' from T:/lib/ruby/1.8/test/unit/autorunner.rb:13:in `run' from runner.rb:7 --- Siena.