From d5c8868346b49e2b2228cb8733398d88f744985b Mon Sep 17 00:00:00 2001 From: Kouhei Sutou Date: Fri, 17 May 2019 17:59:24 +0900 Subject: Add support for CC="gcc --option ..." again If $rake_root_fiber is used, sh runs command in another Fiber. If command is ran in another Fiber, "rescue RuntimEerror" can't rescue exception for system(...) failure. How to reproduce: $ CC="gcc -std=gnu99" ./minirake (in /home/kou/work/ruby/mruby.kou) CC mrbgems/mruby-compiler/core/codegen.c -> build/test/mrbgems/mruby-compiler/core/codegen.o sh: 1: gcc -std=gnu99: not found rake aborted! Command Failed: ["gcc -std=gnu99" -g -std=gnu99 ...] --- lib/mruby/build/command.rb | 3 +++ 1 file changed, 3 insertions(+) (limited to 'lib') diff --git a/lib/mruby/build/command.rb b/lib/mruby/build/command.rb index 0f18e0e62..0fa4746da 100644 --- a/lib/mruby/build/command.rb +++ b/lib/mruby/build/command.rb @@ -30,10 +30,13 @@ module MRuby def _run(options, params={}) return sh command + ' ' + ( options % params ) if NotFoundCommands.key? @command begin + fiber, $rake_root_fiber = $rake_root_fiber, nil sh build.filename(command) + ' ' + ( options % params ) rescue RuntimeError NotFoundCommands[@command] = true _run options, params + ensure + $rake_root_fiber = fiber end end end -- cgit v1.2.3