[前][次][番号順一覧][スレッド一覧]

ruby-changes:46291

From: rhe <ko1@a...>
Date: Wed, 19 Apr 2017 23:05:32 +0900 (JST)
Subject: [ruby-changes:46291] rhe:r58404 (trunk): extmk.rb: improve message printed when configuring extensions fails

rhe	2017-04-19 23:05:26 +0900 (Wed, 19 Apr 2017)

  New Revision: 58404

  https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=58404

  Log:
    extmk.rb: improve message printed when configuring extensions fails
    
    Point to the mkmf.log if configuring an extension fails so that people
    can find and fix the culprit easily.  [ruby-core:80131] [Feature #13302]

  Modified files:
    trunk/ext/extmk.rb
Index: ext/extmk.rb
===================================================================
--- ext/extmk.rb	(revision 58403)
+++ ext/extmk.rb	(revision 58404)
@@ -222,7 +222,6 @@ def extmake(target, basedir = 'ext', may https://github.com/ruby/ruby/blob/trunk/ext/extmk.rb#L222
       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', may https://github.com/ruby/ruby/blob/trunk/ext/extmk.rb#L237
 
       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
+        loc = error.backtrace_locations[0]
+        message = "#{loc.absolute_path}:#{loc.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 @@ exts.each do |d| https://github.com/ruby/ruby/blob/trunk/ext/extmk.rb#L557
   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,17 @@ begin https://github.com/ruby/ruby/blob/trunk/ext/extmk.rb#L716
 
     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.">
+          err&.scan(/.+/) do |ee|
+            mf.puts %Q<\t@echo "\t#{ee.gsub(/["`$^]/, '\\\\\\&')}">
           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.">

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]