(s) Ruby 185 incompatibility/issues with openssl

hi,

i’d originally posted this @:

http://trac.macosforge.org/projects/macports/ticket/4103

on review, it’s not clear 2 me if/how that project’s fixes get back into
main trunk dev.

soooo, reposting here.

as of 23 Sep 06,

building, ruby 1.8.5 “out-of-the-box” on osx 10.4.7 w/ external instance
of
openssl
0.9.8c,

though ‘make’ is successful, ‘make install’ dies (still?) @:


install -c -p -m 0644 ruby.1 /usr/local/man/man1/ruby.1
./miniruby ./ext/extmk.rb --dest-dir="" --make=“make” --mflags=""
–make-flags="" --extout=".ext" --extension --extstatic – install
cp -r ./.ext/. /usr/local/ruby/lib/ruby/1.8
Generating RDoc documentation
./miniruby ./runruby.rb --extout=.ext – “./bin/rdoc” --all --ri --op
“/usr/local/ruby/share/ri/1.8/system” “.”
dyld: NSLinkModule() error
dyld: Symbol not found: _ENGINE_load_aep
Referenced from: /usr/ports/ruby-1.8.5/.ext/powerpc-darwin8.7.0
/openssl.bundle
Expected in: flat namespace

per earlier post, noting in:

/usr/ports/ruby-1.8.5/ext/openssl/ossl_engine.c

the current check (@ ~ line#64) for:

#ifndef OPENSSL_NO_STATIC_ENGINE

and, hence, adding to CPPFLAGS:

-DOPENSSL_NO_STATIC_ENGINE

and, after ‘make’, despite:

setenv LDFLAGS "-L/usr/local/lib -lreadline -L/usr/local/ssl/lib 

-lssl
-lcrypto"
setenv CPPGLAGS “-I/usr/local/include -I/usr/local/ssl/include
-DOPENSSL_NO_STATIC_ENGINE”

this is still required to pick up external openssl:

/usr/ports/ruby-1.8.5/ext/openssl/Makefile
==========================================
@82
---    LIBS = $(LIBRUBYARG_SHARED) -lssl -lcrypto  -lpthread -ldl

-lcrypt -lobjc
+++ LIBS = $(LIBRUBYARG_SHARED) -lpthread -ldl -lcrypt -lobjc
-L/usr/local/ssl/lib -lssl -lcrypto
==========================================

then, a subsequent:

% cd /usr/ports/ruby-1.8.5/ext/openssl
% make clean
% make
% cd /usr/ports/ruby-1.8.5
% rm -rf /usr/local/ruby
% make install

finishes successfully:

...
Generating RI...

Files:   494
Classes: 1369
Modules: 721
Methods: 7750
Elapsed: 758.811s
%

and checking:

% rehash
% which ruby
    /usr/local/ruby/bin/ruby
% ruby --version
    ruby 1.8.5 (2006-08-25) [powerpc-darwin8.7.0]

% otool -L 

/usr/local/ruby/lib/ruby/1.8/powerpc-darwin8.7.0/openssl.bundle

    /usr/local/ruby/lib/libruby.dylib (compatibility version 1.8.0,

current version 1.8.5)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current
version 88.1.6)
/usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current
version 227.0.0)
/usr/local/ssl/lib/libssl.0.9.8.dylib (compatibility version
0.9.8,
current version 0.9.8)
/usr/local/ssl/lib/libcrypto.0.9.8.dylib (compatibility version
0.9.8, current version 0.9.8)
/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current
version 1.0.0)

% otool -L /usr/local/ruby/bin/ruby
    /usr/local/lib/libreadline.5.1.dylib (compatibility version 

5.0.0,
current version 5.1.0)
/usr/local/ssl/lib/libssl.0.9.8.dylib (compatibility version
0.9.8,
current version 0.9.8)
/usr/local/ssl/lib/libcrypto.0.9.8.dylib (compatibility version
0.9.8, current version 0.9.8)
/usr/local/ruby/lib/libruby.dylib (compatibility version 1.8.0,
current version 1.8.5)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current
version 88.1.6)
/usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current
version 227.0.0)
/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current
version 1.0.0)

all, now, looks OK.

richard