diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2018-09-04 16:22:40 +0900 |
|---|---|---|
| committer | GitHub <[email protected]> | 2018-09-04 16:22:40 +0900 |
| commit | 28c50b3e90e1ad75dfdd2bdaf0562e1e816ed977 (patch) | |
| tree | 7ad9ab4b2fe7e8de288df040915815c4eaf5f4ff | |
| parent | 02adae167f2d538ef7d1f513e9ea0c07c0d6c73f (diff) | |
| parent | 901dccb2df17cd6ebd5b9e5c7ef2734af54f0588 (diff) | |
| download | mruby-28c50b3e90e1ad75dfdd2bdaf0562e1e816ed977.tar.gz mruby-28c50b3e90e1ad75dfdd2bdaf0562e1e816ed977.zip | |
Merge pull request #4101 from take-cheeze/fix_4085
Avoid root fiber initialization for CRuby.
| -rwxr-xr-x | minirake | 20 |
1 files changed, 14 insertions, 6 deletions
@@ -6,12 +6,10 @@ require 'getoptlong' require 'fileutils' -require 'fiber' $rake_fiber_table = {} $rake_jobs = 1 $rake_failed = [] -$rake_root_fiber = Fiber.current class String def ext(newext='') @@ -111,9 +109,13 @@ module MiniRake if needed? @running = true - return Fiber.new do + if $rake_root_fiber + return Fiber.new do + self.execute + $rake_root_fiber.transfer + end + else self.execute - $rake_root_fiber.transfer end end @@ -308,7 +310,7 @@ module MiniRake def sh(cmd) puts cmd if $verbose - if $rake_jobs == 1 || Fiber.current == $rake_root_fiber + if !$rake_root_fiber || Fiber.current == $rake_root_fiber system(cmd) or fail "Command Failed: [#{cmd}]" return end @@ -480,6 +482,12 @@ class RakeApp # Run the +rake+ application. def run handle_options + + if $rake_root_fiber + require 'fiber' + $rake_root_fiber = Fiber.current + end + begin here = Dir.pwd while ! have_rakefile @@ -590,7 +598,7 @@ class RakeApp wait_process(count + 1) if !$rake_fiber_table.empty? && exited.empty? end - end +end if __FILE__ == $0 then RakeApp.new.run |
