From: k@... Date: 2017-03-13T11:51:54+00:00 Subject: [ruby-core:80131] [Ruby trunk Feature#13302] Provide a (force) --enable-openssl switch for ruby ./configure (or similar) Issue #13302 has been updated by rhenium (Kazuki Yamaguchi). We can know whether the system OpenSSL library is usable or not only after a miniruby is built, which is probably too late for such an option to be useful. However I agree there are rooms for improvement. Here is the message shown when ext/*/extconf.rb fails: ~~~ configuring openssl *** Following extensions failed to configure: ../.././ext/openssl/extconf.rb:0: Failed to configure openssl. It will not be installed. *** Fix the problems, then remove these directories and try again if you want. ~~~ This is not informative about what exactly caused the failure. Actually, everything is logged to ext/*/mkmf.log, but people would never find this without googling. Maybe a change to ext/extmk.rb something like this would make it better? ~~~ From 2048a2fcb63952201f2bab404c6d01a99159449a Mon Sep 17 00:00:00 2001 From: Kazuki Yamaguchi Date: Mon, 13 Mar 2017 20:47:19 +0900 Subject: [PATCH] ext/extmk.rb: mention ext/*/mkmf.log if configuring extensions fails --- ext/extmk.rb | 39 ++++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/ext/extmk.rb b/ext/extmk.rb index 4317a2a8a333..931242a31d5b 100755 --- a/ext/extmk.rb +++ b/ext/extmk.rb @@ -222,7 +222,6 @@ def extmake(target, basedir = 'ext', maybestatic = true) rescue SystemExit # ignore rescue => error - lineno = error.backtrace_locations[0].lineno ok = false ensure rm_f "conftest*" @@ -238,18 +237,16 @@ def extmake(target, basedir = 'ext', maybestatic = true) return true if !error and target.start_with?("-") - if parent - message = "Failed to configure #{target}. It will not be installed." - else - message = "Skipped to configure #{target}. Its parent is not configured." - end - if Logging.log_opened? - Logging::message(error.to_s) if error - Logging::message(message) + message = nil + if error + bl = error.backtrace_locations[0] + message = "#{bl.absolute_path}:#{bl.lineno}: #{error.message}" + if Logging.log_opened? + Logging::message("#{message}\n\t#{error.backtrace.join("\n\t")}\n") + end end - message = error.message if error - return parent ? [conf, lineno||0, message] : true + return [parent, message] end args = $mflags unless $destdir.to_s.empty? or $mflags.defined?("DESTDIR") @@ -560,7 +557,7 @@ def create_makefile(*args, &block) if !$nodynamic or $static result = extmake(d, ext_prefix, !@gemname) or abort extso |= $extso - fails << result unless result == true + fails << [d, result] unless result == true end end @@ -719,15 +716,19 @@ def mf.macro(name, values, max = 70) mf.puts "\n""note:\n" unless fails.empty? - mf.puts %Q<\t@echo "*** Following extensions failed to configure:"> - fails.each do |d, n, err| - d = "#{d}:#{n}:" - if err - err.scan(/.+/) do |ee| - mf.puts %Q<\t@echo "#{d} #{ee.gsub(/["`$^]/, '\\\\\\&')}"> + mf.puts %Q<\t@echo "*** Following extensions are not compiled:"> + fails.each do |ext, (parent, err)| + mf.puts %Q<\t@echo "#{ext}:"> + if parent + mf.puts %Q<\t@echo "\tCould not be configured. It will not be installed."> + if err + err&.scan(/.+/) do |ee| + mf.puts %Q<\t@echo "\t#{ee.gsub(/["`$^]/, '\\\\\\&')}"> + end end + mf.puts %Q<\t@echo "\tCheck #{ext_prefix}/#{ext}/mkmf.log for more details."> else - mf.puts %Q<\t@echo "#{d}"> + mf.puts %Q<\t@echo "\tSkipped because its parent was not configured."> end end mf.puts %Q<\t@echo "*** Fix the problems, then remove these directories and try again if you want."> -- 2.12.0.248.g76c07830f945.dirty ~~~ By the way, which directories does "*** Fix the problems, then remove these directories and try again if you want." refer to? ---------------------------------------- Feature #13302: Provide a (force) --enable-openssl switch for ruby ./configure (or similar) https://bugs.ruby-lang.org/issues/13302#change-63558 * Author: shevegen (Robert A. Heiler) * Status: Open * Priority: Normal * Assignee: * Target version: ---------------------------------------- I am currently setting up a lot of programs on a fresh installation. Ruby compiles fine but I am having some problem getting openssl to work properly. Since it is not trivial for me to find out where the problem is exactly, I would like to suggest a commandline switch option such as --enable-openssl that will only compile ruby if it can also use the openssl bindings. The ruby that is compiled without openssl is for me not very useful, largely because I can not use gem publish without openssl. If such an option would exist, it is my hope that I could use it, and then ruby would also tell me why it can not use openssl. For the record, I was using the LFS way to install openssl: http://www.linuxfromscratch.org/blfs/view/svn/postlfs/openssl.html Openssl also compiled fine. I suspect that ruby may get confused by some files by the host pclinuxos system but until I have found out where the problem is, I think it would be nice i ruby would have a corresponding switch to only compile if openssl can also be used, as otherwise this ruby variant is not very useful to me and I will waste time compiling something that I know won't be too useful. Sometimes going into ext/ can help here but ext/openssl is also not useful for me right now. -- https://bugs.ruby-lang.org/ Unsubscribe: