Building 1.8.6-p36 with Sun Studio 12 compiler

All -
I am trying to build 1.8.6-p36 (from the .tar.bz2 source) on
Solaris Developer Express using the Sun Studio 12 compiler. If I try
to configure it with “–enable-pthread” it fails to build with
errors in eval.c:

merlin:/home/…/ruby-1.8.6-p36 97> make
/opt/SUNWspro/bin/cc -g -W0,-xgnuasm -xO3 -xbuiltin=%all
-xinline=%auto -xprefetch=auto -xdepend -xtarget=pentium4
-I/usr/sfw/include -I/usr/local/include -DRUBY_EXPORT -I. -I. -c
eval.c
“eval.c”, line 4482: warning: statement not reached
“eval.c”, line 4517: warning: statement not reached
“eval.c”, line 4644: warning: statement not reached
“eval.c”, line 4702: warning: statement not reached
“eval.c”, line 5151: warning: statement not reached
“eval.c”, line 5614: warning: statement not reached
“eval.c”, line 5740: warning: statement not reached
“eval.c”, line 6251: identifier redeclared: backtrace
current : static function() returning unsigned long
previous: function(pointer to pointer to void, int)
returning int : “/usr/include/execinfo.h”, line 41
“eval.c”, line 8612: warning: loop not entered at top
“eval.c”, line 12004: warning: statement not reached
“eval.c”, line 12446: warning: statement not reached
“eval.c”, line 12818: warning: statement not reached
cc: acomp failed for eval.c
gmake: *** [eval.o] Error 2

If I configure it without “–enable-pthread”, I get quite a few
warnings, mostly of this type:

line xxxx: warning: statement not reached

and then some “ld” errors in building dl.c:

/opt/SUNWspro/bin/cc -I. -I…/… -I…/…/. -I…/…/./ext/dl
-DHAVE_DLFCN_H -DHAV
E_DLOPEN -DHAVE_DLCLOSE -DHAVE_DLSYM -DHAVE_DLERROR -I. -KPIC -g
-W0,-xgnuasm -
xO3 -xbuiltin=%all -xinline=%auto -xprefetch=auto -xdepend
-xtarget=pentium4 -I/
usr/sfw/include -I/usr/local/include -c dl.c
“cbtable.func”, line 1: warning: assignment type mismatch:
pointer to void “=” pointer to function(long, long, long, long,
long, long,
long, long, long, long, long, long, long, long, long) returning void
“cbtable.func”, line 2: warning: assignment type mismatch:
pointer to void “=” pointer to function(long, long, long, long,
long, long,
long, long, long, long, long, long, long, long, long) returning void
“cbtable.func”, line 3: warning: assignment type mismatch:
pointer to void “=” pointer to function(long, long, long, long,
long, long,
long, long, long, long, long, long, long, long, long) returning void
“cbtable.func”, line 4: warning: assignment type mismatch:
pointer to void “=” pointer to function(long, long, long, long,
long, long,
long, long, long, long, long, long, long, long, long) returning void
“cbtable.func”, line 5: warning: assignment type mismatch:
pointer to void “=” pointer to function(long, long, long, long,
long, long,
long, long, long, long, long, long, long, long, long) returning void

The build completes successfully, and “make check” gives these errors:

Finished in 95.708688 seconds.

  1. Error:
    test_AES(OpenSSL::TestCipher):
    RuntimeError: unsupported cipher algorithm (AES-256-ECB)
    /home/markea/src/ruby-1.8.6/.ext/common/openssl/cipher.rb:38:in
    initialize' /home/markea/src/ruby-1.8.6/.ext/common/openssl/cipher.rb:38:ininitialize’
    ./test/openssl/test_cipher.rb:81:in new' ./test/openssl/test_cipher.rb:81:intest_AES’
    ./test/openssl/test_cipher.rb:80:in each' ./test/openssl/test_cipher.rb:80:intest_AES’

  2. Error:
    test_eof_0(OpenSSL::TestEOF1):
    OpenSSL::SSL::SSLError: cipher or hash unavailable
    ./test/openssl/test_pair.rb:32:in connect' ./test/openssl/test_pair.rb:32:inclient’
    ./test/openssl/test_pair.rb:45:in ssl_pair' ./test/openssl/test_pair.rb:65:inopen_file’
    /home/markea/src/ruby-1.8.6/test/ruby/ut_eof.rb:5:in `test_eof_0’

  3. Error:
    test_eof_1(OpenSSL::TestEOF1):
    OpenSSL::SSL::SSLError: cipher or hash unavailable
    ./test/openssl/test_pair.rb:32:in connect' ./test/openssl/test_pair.rb:32:inclient’
    ./test/openssl/test_pair.rb:45:in ssl_pair' ./test/openssl/test_pair.rb:65:inopen_file’
    /home/markea/src/ruby-1.8.6/test/ruby/ut_eof.rb:40:in
    `test_eof_1’

  4. Error:
    test_eof_2(OpenSSL::TestEOF1):
    OpenSSL::SSL::SSLError: cipher or hash unavailable
    ./test/openssl/test_pair.rb:32:in connect' ./test/openssl/test_pair.rb:32:inclient’
    ./test/openssl/test_pair.rb:45:in ssl_pair' ./test/openssl/test_pair.rb:65:inopen_file’
    /home/markea/src/ruby-1.8.6/test/ruby/ut_eof.rb:87:in
    `test_eof_2’

  5. Error:
    test_eof_3(OpenSSL::TestEOF1):
    OpenSSL::SSL::SSLError: cipher or hash unavailable
    ./test/openssl/test_pair.rb:32:in connect' ./test/openssl/test_pair.rb:32:inclient’
    ./test/openssl/test_pair.rb:45:in ssl_pair' ./test/openssl/test_pair.rb:65:inopen_file’
    /home/markea/src/ruby-1.8.6/test/ruby/ut_eof.rb:94:in
    `test_eof_3’

  6. Error:
    test_eof_0(OpenSSL::TestEOF2):
    OpenSSL::SSL::SSLError: cipher or hash unavailable
    ./test/openssl/test_pair.rb:32:in connect' ./test/openssl/test_pair.rb:32:inclient’
    ./test/openssl/test_pair.rb:45:in ssl_pair' ./test/openssl/test_pair.rb:76:inopen_file’
    /home/markea/src/ruby-1.8.6/test/ruby/ut_eof.rb:5:in `test_eof_0’

  7. Error:
    test_eof_1(OpenSSL::TestEOF2):
    OpenSSL::SSL::SSLError: cipher or hash unavailable
    ./test/openssl/test_pair.rb:32:in connect' ./test/openssl/test_pair.rb:32:inclient’
    ./test/openssl/test_pair.rb:45:in ssl_pair' ./test/openssl/test_pair.rb:76:inopen_file’
    /home/markea/src/ruby-1.8.6/test/ruby/ut_eof.rb:40:in
    `test_eof_1’

  8. Error:
    test_eof_2(OpenSSL::TestEOF2):
    OpenSSL::SSL::SSLError: cipher or hash unavailable
    ./test/openssl/test_pair.rb:32:in connect' ./test/openssl/test_pair.rb:32:inclient’
    ./test/openssl/test_pair.rb:45:in ssl_pair' ./test/openssl/test_pair.rb:76:inopen_file’
    /home/markea/src/ruby-1.8.6/test/ruby/ut_eof.rb:87:in
    `test_eof_2’

  9. Error:
    test_eof_3(OpenSSL::TestEOF2):
    OpenSSL::SSL::SSLError: cipher or hash unavailable
    ./test/openssl/test_pair.rb:32:in connect' ./test/openssl/test_pair.rb:32:inclient’
    ./test/openssl/test_pair.rb:45:in ssl_pair' ./test/openssl/test_pair.rb:76:inopen_file’
    /home/markea/src/ruby-1.8.6/test/ruby/ut_eof.rb:94:in
    `test_eof_3’

  10. Error:
    test_getc(OpenSSL::TestPair):
    OpenSSL::SSL::SSLError: cipher or hash unavailable
    ./test/openssl/test_pair.rb:32:in connect' ./test/openssl/test_pair.rb:32:inclient’
    ./test/openssl/test_pair.rb:45:in ssl_pair' ./test/openssl/test_pair.rb:86:intest_getc’

  11. Error:
    test_puts_empty(OpenSSL::TestPair):
    OpenSSL::SSL::SSLError: cipher or hash unavailable
    ./test/openssl/test_pair.rb:32:in connect' ./test/openssl/test_pair.rb:32:inclient’
    ./test/openssl/test_pair.rb:45:in ssl_pair' ./test/openssl/test_pair.rb:135:intest_puts_empty’

  12. Error:
    test_puts_meta(OpenSSL::TestPair):
    OpenSSL::SSL::SSLError: cipher or hash unavailable
    ./test/openssl/test_pair.rb:32:in connect' ./test/openssl/test_pair.rb:32:inclient’
    ./test/openssl/test_pair.rb:45:in ssl_pair' ./test/openssl/test_pair.rb:121:intest_puts_meta’

  13. Error:
    test_readall(OpenSSL::TestPair):
    OpenSSL::SSL::SSLError: cipher or hash unavailable
    ./test/openssl/test_pair.rb:32:in connect' ./test/openssl/test_pair.rb:32:inclient’
    ./test/openssl/test_pair.rb:45:in ssl_pair' ./test/openssl/test_pair.rb:107:intest_readall’

  14. Error:
    test_readline(OpenSSL::TestPair):
    OpenSSL::SSL::SSLError: cipher or hash unavailable
    ./test/openssl/test_pair.rb:32:in connect' ./test/openssl/test_pair.rb:32:inclient’
    ./test/openssl/test_pair.rb:45:in ssl_pair' ./test/openssl/test_pair.rb:114:intest_readline’

  15. Error:
    test_readpartial(OpenSSL::TestPair):
    OpenSSL::SSL::SSLError: cipher or hash unavailable
    ./test/openssl/test_pair.rb:32:in connect' ./test/openssl/test_pair.rb:32:inclient’
    ./test/openssl/test_pair.rb:45:in ssl_pair' ./test/openssl/test_pair.rb:93:intest_readpartial’

  16. Failure:
    test_cgi(TestWEBrickCGI)
    [./test/webrick/test_cgi.rb:27:in test_cgi' /home/markea/src/ruby-1.8.6/lib/net/http.rb:1050:inrequest’
    /home/markea/src/ruby-1.8.6/lib/net/http.rb:2133:in
    reading_body' /home/markea/src/ruby-1.8.6/lib/net/http.rb:1049:inrequest’
    /home/markea/src/ruby-1.8.6/lib/net/http.rb:1034:in request' /home/markea/src/ruby-1.8.6/lib/net/http.rb:543:instart’
    /home/markea/src/ruby-1.8.6/lib/net/http.rb:1032:in request' ./test/webrick/test_cgi.rb:27:intest_cgi’
    ./test/webrick/utils.rb:26:in call' ./test/webrick/utils.rb:26:instart_server’
    ./test/webrick/utils.rb:34:in start_httpserver' ./test/webrick/test_cgi.rb:24:intest_cgi’]:
    <"/webrick.cgi"> expected but was
    <"\n\n

In ternal Server Error\n \n

Internal Server Error

\n Premature end of script headers: /home/markea/src/ruby-1.8.6/test/webrick/ webrick.cgi\n
\n \n WEBrick/1.3.1 (Ruby/1.8.6/2007-03-13) OpenSSL/0.9.8a at\n 127.0.0.1:63178\n \n \n\n"> .

1611 tests, 16442 assertions, 1 failures, 15 errors
gmake: *** [test-all] Error 1

It does seem to work (I can run both ruby and irb, and existing
Rails apps seem to work fine) but I’d really like to understand why
I get so many errors.

Any hints/help would be appreciated.

Mark Almeida

Hi,

At Fri, 15 Jun 2007 02:30:08 +0900,
[email protected] wrote in [ruby-talk:255631]:

“eval.c”, line 6251: identifier redeclared: backtrace
current : static function() returning unsigned long
previous: function(pointer to pointer to void, int)
returning int : “/usr/include/execinfo.h”, line 41

There are also {get,set,make}_backtrace functions, they have no
problem?

“eval.c”, line 8612: warning: loop not entered at top

“cbtable.func”, line 1: warning: assignment type mismatch:
pointer to void “=” pointer to function(long, long, long, long,
long, long,
long, long, long, long, long, long, long, long, long) returning void

Can’t you show the head of cbtable.func file?

The build completes successfully, and “make check” gives these errors:

I know little about OpenSSL.