何するか悩んだらとりあえず make test-all しておくらしい。
drb, rinda, soap4r, webrick が全滅。 エラーを見ると、iconv か getaddrinfo を使うものがすべて失敗していた。 逆に言うとそれ以外はすべて成功しているわけで、 思ったよりちゃんと動くという印象を受けた。 もうちょっと詰めていけば問題なく使えそうだ。
とりあえず getaddrinfo のほうを見てみよう。
~/c/bin $ ruby -v getaddrinfo.rb localhost ruby 1.9.0 (2005-02-14) [rs6000-aix5.1.0.0] AF_INET 127.0.0.1 0 IP ~/c/bin $ ruby -v getaddrinfo.rb rs7012 ruby 1.9.0 (2005-02-14) [rs6000-aix5.1.0.0] AF_INET 192.168.1.43 0 IP
ええ? 何これ。 Linux だとこんな感じになるんだけどな。
~/c/bin % ruby -v getaddrinfo.rb localhost ruby 1.9.0 (2005-02-23) [i686-linux] AF_INET 127.0.0.1 STREAM TCP AF_INET 127.0.0.1 DGRAM UDP AF_INET 127.0.0.1 RAW IP
getnameinfo はさらに酷くて、何も通らない。
~/c/bin $ ruby -v getnameinfo.rb 127.0.0.1 ruby 1.9.0 (2005-02-14) [rs6000-aix5.1.0.0] ./getnameinfo.rb:12:in `getnameinfo': getnameinfo: Host not found (SocketError) from ./getnameinfo.rb:12:in `getnameinfo' from ./getnameinfo.rb:7:in `main' from ./getnameinfo.rb:15 ~/c/bin $ ruby -v getnameinfo.rb 192.168.1.43 ruby 1.9.0 (2005-02-14) [rs6000-aix5.1.0.0] getnameinfo.rb:12:in `getnameinfo': getnameinfo: Host not found (SocketError) from getnameinfo.rb:12:in `getnameinfo' from getnameinfo.rb:7:in `main' from getnameinfo.rb:15
何がどうなってるんだ。
いろいろ試した結果、IPv6 関係がダメダメなことがわかった。 --disable-ipv6 --with-lookup-order-hack=INET でようやく成功。
~ $ iconv -f us-ascii -t us-ascii iconv: 0791-004 コンバータがオープンできません ~ $ iconv -f US-ASCII -t US-ASCII iconv: 0791-004 コンバータがオープンできません ~ $ iconv -f ISO-8859 -t ISO-8859 iconv: 0791-004 コンバータがオープンできません ~ $ iconv -f ISO8859 -t ISO8859 iconv: 0791-004 コンバータがオープンできません ~ $ iconv -f ISO8859-1 -t ISO8859-1 ^C ~ $ iconv -f UTF-8 -t UTF-8 ^C ~ $ iconv -f eucJP -t eucJP iconv: 0791-004 コンバータがオープンできません
ついに eucJP もないプラットフォームを見付けてしまったか……。 でも ISO8859-1 とか UTF-8 はあるらしいことがわかる。
一覧が欲しいなあ。コンバータはどこにあるんだろ。 さんざん探した挙句、/usr/lib/nls/loc/iconv で発見した。
$ command ls /usr/lib/nls/loc/iconv | ruby -e 'ARGF.each{|s| puts s.strip.split("_") }' | sort -u 64 ASCII-GR CNS11643.1986-1 CNS11643.1986-2 Conv GB18030 GBK IBM-1027 IBM-1046 IBM-1124 IBM-1129 IBM-1252 IBM-290 IBM-300 IBM-850 IBM-856 IBM-921 IBM-922 IBM-930 IBM-930-DOS IBM-932 IBM-939 IBM-939-DOS IBM-943 IBM-eucCN IBM-eucJP IBM-eucKR IBM-eucTW IBM-sbdTW IBM-udcJP IBM-udcJP-GL IBM-udcJP-GR IBM-udcTW ISCII.1991 ISO8859-1 ISO8859-1-GL ISO8859-1-GR ISO8859-15 ISO8859-15-GL ISO8859-15-GR ISO8859-2 ISO8859-2-GL ISO8859-2-GR ISO8859-3 ISO8859-3-GL ISO8859-3-GR ISO8859-4 ISO8859-4-GL ISO8859-4-GR ISO8859-5 ISO8859-5-GL ISO8859-5-GR ISO8859-6 ISO8859-6-GL ISO8859-6-GR ISO8859-7 ISO8859-7-GL ISO8859-7-GR ISO8859-8 ISO8859-8-GL ISO8859-8-GR ISO8859-9 ISO8859-9-GL ISO8859-9-GR JISX0201.1976-0 JISX0201.1976-GL JISX0201.1976-GR JISX0208.1978-GL JISX0208.1978-GR JISX0208.1983-0 JISX0208.1983-GL JISX0208.1983-GR KSC5601.1987-0 TIS-620 UCS UCS-2 UTF-8 Universal big5 ct fold7 fold8 uucode
EUC-JP は IBM-eucJP らしい。こんなの予想できるかっ。 で IBM-932 が shift_jis (というか CP932) のようだ。 とりあえず、エンコーディング名の差を吸収するラッパーをインストールしておく。
これでかなり通るようになったけど、 まだいくつか失敗する。まず drb で一つ。
~/src/ruby $ ruby test/runner.rb test/drb Loaded suite drb Started ...............................E................................................... Finished in 32.556596 seconds. 1) Error: test_10_yield_undumped(TestDRbCore): NoMethodError: undefined method `unpack' for -279519369:Fixnum (druby://rs7012:32900) /usr/local/pkg/ruby/lib/ruby/1.9/drb/drb.rb:569:in `load' (druby://rs7012:32900) /usr/local/pkg/ruby/lib/ruby/1.9/drb/drb.rb:602:in `recv_request' (druby://rs7012:32900) /usr/local/pkg/ruby/lib/ruby/1.9/drb/drb.rb:899:in `recv_request' (druby://rs7012:32900) /usr/local/pkg/ruby/lib/ruby/1.9/drb/drb.rb:1495:in `init_with_client' (druby://rs7012:32900) /usr/local/pkg/ruby/lib/ruby/1.9/drb/drb.rb:1507:in `setup_message' (druby://rs7012:32900) /usr/local/pkg/ruby/lib/ruby/1.9/drb/drb.rb:1459:in `perform' (druby://rs7012:32900) /usr/local/pkg/ruby/lib/ruby/1.9/drb/drb.rb:1554:in `main_loop' (druby://rs7012:32900) /usr/local/pkg/ruby/lib/ruby/1.9/drb/drb.rb:1550:in `loop' (druby://rs7012:32900) /usr/local/pkg/ruby/lib/ruby/1.9/drb/drb.rb:1550:in `main_loop' (druby://rs7012:32900) /usr/local/pkg/ruby/lib/ruby/1.9/drb/drb.rb:1546 (druby://rs7012:32900) /usr/local/pkg/ruby/lib/ruby/1.9/drb/drb.rb:1546 (druby://localhost:32973) /usr/local/pkg/ruby/lib/ruby/1.9/drb/invokemethod.rb:10:in `block_yield' (druby://localhost:32973) /usr/local/pkg/ruby/lib/ruby/1.9/drb/invokemethod.rb:17:in `perform_with_block' (druby://localhost:32973) /usr/local/pkg/ruby/lib/ruby/1.9/drb/invokemethod.rb:14:in `each' /home/aamine/src/ruby/test/drb/drbtest.rb:234:in `test_10_yield_undumped' 83 tests, 401 assertions, 0 failures, 1 errors
soap でも一つ。
~/src/ruby $ ruby test/runner.rb test/soap Loaded suite soap Started ......................................................E.................................................................. Finished in 83.757822 seconds. 1) Error: test_success_mu(SOAP::Header::TestAuthHeader): XSD::NS::FormatError: Unknown namespace qualifier: env /usr/local/pkg/ruby/lib/ruby/1.9/xsd/ns.rb:115:in `parse_local' /usr/local/pkg/ruby/lib/ruby/1.9/soap/encodingstyle/soapHandler.rb:543:in `decode_attrs' /usr/local/pkg/ruby/lib/ruby/1.9/soap/encodingstyle/soapHandler.rb:505:in `each' /usr/local/pkg/ruby/lib/ruby/1.9/soap/encodingstyle/soapHandler.rb:505:in `decode_attrs' /usr/local/pkg/ruby/lib/ruby/1.9/soap/encodingstyle/soapHandler.rb:162:in `decode_tag' /usr/local/pkg/ruby/lib/ruby/1.9/soap/parser.rb:180:in `decode_tag' /usr/local/pkg/ruby/lib/ruby/1.9/soap/parser.rb:128:in `start_element' /usr/local/pkg/ruby/lib/ruby/1.9/xsd/xmlparser/parser.rb:67:in `start_element' /usr/local/pkg/ruby/lib/ruby/1.9/xsd/xmlparser/rexmlparser.rb:34:in `tag_start' /usr/local/pkg/ruby/lib/ruby/1.9/rexml/parsers/streamparser.rb:24:in `parse' /usr/local/pkg/ruby/lib/ruby/1.9/rexml/document.rb:171:in `parse_stream' /usr/local/pkg/ruby/lib/ruby/1.9/xsd/xmlparser/rexmlparser.rb:27:in `do_parse' /usr/local/pkg/ruby/lib/ruby/1.9/soap/parser.rb:90:in `parse' /usr/local/pkg/ruby/lib/ruby/1.9/soap/processor.rb:39:in `unmarshal' /usr/local/pkg/ruby/lib/ruby/1.9/soap/rpc/router.rb:156:in `unmarshal' /usr/local/pkg/ruby/lib/ruby/1.9/soap/rpc/router.rb:76:in `route' /usr/local/pkg/ruby/lib/ruby/1.9/soap/rpc/soaplet.rb:108:in `do_POST' /usr/local/pkg/ruby/lib/ruby/1.9/soap/rpc/soaplet.rb:103:in `with_headerhandler' /usr/local/pkg/ruby/lib/ruby/1.9/soap/rpc/soaplet.rb:103:in `do_POST' /usr/local/pkg/ruby/lib/ruby/1.9/webrick/httpservlet/abstract.rb:35:in `__send__' /usr/local/pkg/ruby/lib/ruby/1.9/webrick/httpservlet/abstract.rb:35:in `service' /usr/local/pkg/ruby/lib/ruby/1.9/webrick/httpserver.rb:108:in `service' /usr/local/pkg/ruby/lib/ruby/1.9/webrick/httpserver.rb:69:in `run' /usr/local/pkg/ruby/lib/ruby/1.9/webrick/server.rb:158:in `start_thread' /usr/local/pkg/ruby/lib/ruby/1.9/webrick/server.rb:147 /usr/local/pkg/ruby/lib/ruby/1.9/webrick/server.rb:147 /usr/local/pkg/ruby/lib/ruby/1.9/soap/rpc/proxy.rb:137:in `call' /usr/local/pkg/ruby/lib/ruby/1.9/soap/rpc/driver.rb:275:in `call' /usr/local/pkg/ruby/lib/ruby/1.9/soap/rpc/driver.rb:302:in `deposit' /usr/local/pkg/ruby/lib/ruby/1.9/soap/rpc/driver.rb:297:in `deposit' ./test/soap/header/test_authheader.rb:228:in `do_transaction_check' ./test/soap/header/test_authheader.rb:205:in `test_success_mu' 121 tests, 1172 assertions, 0 failures, 1 errors
こんなエラーは見たことがないな。 インタプリタ内で何か変なことが起きてそうな感じだ。 嫌すぎ。
(20:46)
Copyright (c) 2002-2007 青木峰郎 / Minero Aoki. All rights reserved.