diff options
author | Jun Aruga <jaruga@redhat.com> | 2023-05-03 20:48:34 +0200 |
---|---|---|
committer | Jun Aruga <jaruga@redhat.com> | 2023-07-25 16:47:33 +0200 |
commit | ca54087462b5bc48046974d40dc7cdf50da9619c (patch) | |
tree | 08c550363040fc7d9327233a335c9eeb3a86bbad /ext/openssl | |
parent | ee03210d39c5f037f8aacdbf5f02da69c05664dd (diff) | |
download | ruby-openssl-ca54087462b5bc48046974d40dc7cdf50da9619c.tar.gz |
Raise an error when the specified OpenSSL library directory doesn't exist.
OpenSSL built from the source creates the library directory to the
`/path/to/openssl_dir/lib64` as a default.
In the case, the `bundle exec rake compile -- --with-openssl-dir=<openssl_dir>`
cannot compile with the lib64 directory, and may compile with system OpenSSL's
libraries unintentionally. This commit is to check this case to avoid linking
with an unintentional library directory.
Diffstat (limited to 'ext/openssl')
-rw-r--r-- | ext/openssl/extconf.rb | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/ext/openssl/extconf.rb b/ext/openssl/extconf.rb index 368145d2..4bcf7b9c 100644 --- a/ext/openssl/extconf.rb +++ b/ext/openssl/extconf.rb @@ -13,12 +13,32 @@ require "mkmf" +ssl_dirs = nil if defined?(::TruffleRuby) # Always respect the openssl prefix chosen by truffle/openssl-prefix require 'truffle/openssl-prefix' - dir_config_given = dir_config("openssl", ENV["OPENSSL_PREFIX"]).any? + ssl_dirs = dir_config("openssl", ENV["OPENSSL_PREFIX"]) else - dir_config_given = dir_config("openssl").any? + ssl_dirs = dir_config("openssl") +end +dir_config_given = ssl_dirs.any? + +_, ssl_ldir = ssl_dirs +if ssl_ldir&.split(File::PATH_SEPARATOR)&.none? { |dir| File.directory?(dir) } + # According to the `mkmf.rb#dir_config`, the `--with-openssl-dir=<dir>` uses + # the value of the `File.basename(RbConfig::MAKEFILE_CONFIG["libdir"])` as a + # loaded library directory name. + ruby_ldir_name = File.basename(RbConfig::MAKEFILE_CONFIG["libdir"]) + + raise "OpenSSL library directory could not be found in '#{ssl_ldir}'. " \ + "You might want to fix this error in one of the following ways.\n" \ + " * Recompile OpenSSL by configuring it with --libdir=#{ruby_ldir_name} " \ + " to specify the OpenSSL library directory.\n" \ + " * Recompile Ruby by configuring it with --libdir=<dir> to specify the " \ + "Ruby library directory.\n" \ + " * Compile this openssl gem with --with-openssl-include=<dir> and " \ + "--with-openssl-lib=<dir> options to specify the OpenSSL include and " \ + "library directories." end dir_config("kerberos") |