From: ngotogenome@... Date: 2015-11-21T14:49:41+00:00 Subject: [ruby-dev:49377] [Ruby trunk - Bug #11728] [Open] TestSocket#test_timestamp failure on Solaris 10 with -D_XOPEN_SOURCE=500 Issue #11728 has been reported by Naohisa Goto. ---------------------------------------- Bug #11728: TestSocket#test_timestamp failure on Solaris 10 with -D_XOPEN_SOURCE=500 https://bugs.ruby-lang.org/issues/11728 * Author: Naohisa Goto * Status: Open * Priority: Normal * Assignee: * ruby -v: ruby 2.3.0dev (2015-11-20) [sparc64-solaris2.10] * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN ---------------------------------------- Solaris 10 にて、CFLAGSに -D_XOPEN_SOURCE=500 を追加して、SUSv2準拠にてコンパイルした場合、make test-all にて以下のエラーが発生します。 ~~~ Finished tests in 1518.357144s, 10.4659 tests/s, 1475.1002 assertions/s. 1) Error: TestSocket#test_timestamp: SocketError: unknown socket level option name: TIMESTAMP /XXXXX-52685/test/socket/test_socket.rb:461:in `setsockopt' /XXXXX-52685/test/socket/test_socket.rb:461:in `block (2 levels) in test_timestamp' /XXXXX-52685/.ext/common/socket.rb:190:in `bind' /XXXXX-52685/test/socket/test_socket.rb:460:in `block in test_timestamp' /XXXXX-52685/.ext/common/socket.rb:190:in `bind' /XXXXX-52685/test/socket/test_socket.rb:459:in `test_timestamp' 15891 tests, 2239729 assertions, 0 failures, 1 errors, 49 skips ruby -v: ruby 2.3.0dev (2015-11-20) [sparc64-solaris2.10] make: *** [yes-test-all] Error 1 ~~~ `-D_XOPEN_SOURCE=500` つまり `#define _XOPEN_SOURCE 500` にすると、 Solaris でも Socket::AncillaryData が使えるようになるのですが、 SO_TIMESTAMP は Solaris 10 には存在しないため、エラーになったようです。 (SO_TIMESTAMP は Solaris 11 から追加されたようです。) (参考: `_XOPEN_SOURCE` の値と準拠する標準に関しては https://docs.oracle.com/cd/E36784_01/html/E36883/xpg4-5.html などを参照。 なお、Rubyでは `__EXTENSIONS__` がconfigureにて自動的に付加され、使用する標準と衝突しない新旧の追加機能は使える設定になっています。) -- https://bugs.ruby-lang.org/