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.