diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-04-20 08:13:16 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-04-20 08:13:16 +0000 |
commit | b58a30e1c14e971adba4096104274d5d692492e9 (patch) | |
tree | 335757db8e49f5003df31c2150010df3ca01d224 /ext/extmk.rb | |
parent | cafa438f800415af0f7ac7a9d5701a07e42da628 (diff) | |
download | ruby-b58a30e1c14e971adba4096104274d5d692492e9.tar.gz |
extmk.rb: fail for mandatory libraries
* ext/extmk.rb: fail if a mandatory extension library failed to
configure. [ruby-core:80759] [Feature #13302]
* template/exts.mk.tmpl: move `exit` at the end.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58412 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/extmk.rb')
-rwxr-xr-x | ext/extmk.rb | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/ext/extmk.rb b/ext/extmk.rb index 3b19b05309..9839017b45 100755 --- a/ext/extmk.rb +++ b/ext/extmk.rb @@ -473,6 +473,7 @@ default_exclude_exts = else %w'*win32*' end +mandatory_exts = {} withes, withouts = [["--with", nil], ["--without", default_exclude_exts]].collect {|w, d| if !(w = %w[-extensions -ext].collect {|o|arg_config(w+o)}).any? d ? proc {|c1| d.any?(&c1)} : proc {true} @@ -480,13 +481,15 @@ withes, withouts = [["--with", nil], ["--without", default_exclude_exts]].collec proc {true} else w = w.collect {|o| o.split(/,/)}.flatten - w.collect! {|o| o == '+' ? d : o}.flatten! if d + w.collect! {|o| o == '+' ? d : o}.flatten! proc {|c1| w.any?(&c1)} end } cond = proc {|ext, *| - cond1 = proc {|n| File.fnmatch(n, ext)} - withes.call(cond1) and !withouts.call(cond1) + withes.call(proc {|n| + !n or (mandatory_exts[ext] = true if File.fnmatch(n, ext)) + }) and + !withouts.call(proc {|n| File.fnmatch(n, ext)}) } ($extension || %w[*]).each do |e| e = e.sub(/\A(?:\.\/)+/, '') @@ -716,12 +719,14 @@ begin mf.puts "\n""note:\n" unless fails.empty? + abandon = false mf.puts %Q<\t@echo "*** Following extensions are not compiled:"> fails.each do |ext, (parent, err)| + abandon ||= mandatory_exts[ext] 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| + err and 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."> @@ -730,6 +735,9 @@ begin end end mf.puts %Q<\t@echo "*** Fix the problems, then remove these directories and try again if you want."> + if abandon + mf.puts "\t""@exit 1" + end end end end |