lian / bitcoin-ruby

bitcoin utils and protocol in ruby.
Other
922 stars 322 forks source link

Invalid DLL file names on Windows OpenSSL 1.1.0 / 1.1.1 #302

Open quetzalcoatl opened 4 years ago

quetzalcoatl commented 4 years ago

Commit https://github.com/lian/bitcoin-ruby/commit/f9b817c946b3ef99c7652c318c155200aadc6489 handled only non-Windows part.

Currently, on Windows with newest OpenSSL, I get:

c:/rubies/Ruby26-x64/lib/ruby/gems/2.6.0/gems/ffi-1.12.2-x64-mingw32/lib/ffi/library.rb:145:in `block in ffi_lib': Could not open library 'libeay32'

Since 1.1.0 (see i.e. https://mta.openssl.org/pipermail/openssl-dev/2016-August/008351.html or issues in other projects like https://github.com/arvidn/libtorrent/issues/1931) libeay32 and sseay32 doesn't exist - it seems that OpenSSL team apparently decided to rename them to libcrypto and libssl.

I'm not sure if that are the correct names though. When I tried altering the openssl.rb to:

ffi_lib 'libcrypto', 'libssl'

then I get similar:

c:/rubies/Ruby26-x64/lib/ruby/gems/2.6.0/gems/ffi-1.12.2-x64-mingw32/lib/ffi/library.rb:145:in `block in ffi_lib': Could not open library 'libssl'

I can get it running only after changing that line to:

ffi_lib 'libcrypto-1_1-x64', 'libssl-1_1-x64'

I peeked those filenames in Ruby\bin\ruby_builtin_dlls Unfortunatelly I can't help any further, I don't know why those suffixes were added and what logic controls them.