summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2018-09-04 16:22:40 +0900
committerGitHub <[email protected]>2018-09-04 16:22:40 +0900
commit28c50b3e90e1ad75dfdd2bdaf0562e1e816ed977 (patch)
tree7ad9ab4b2fe7e8de288df040915815c4eaf5f4ff
parent02adae167f2d538ef7d1f513e9ea0c07c0d6c73f (diff)
parent901dccb2df17cd6ebd5b9e5c7ef2734af54f0588 (diff)
downloadmruby-28c50b3e90e1ad75dfdd2bdaf0562e1e816ed977.tar.gz
mruby-28c50b3e90e1ad75dfdd2bdaf0562e1e816ed977.zip
Merge pull request #4101 from take-cheeze/fix_4085
Avoid root fiber initialization for CRuby.
-rwxr-xr-xminirake20
1 files changed, 14 insertions, 6 deletions
diff --git a/minirake b/minirake
index ad8276a6d..86c42c999 100755
--- a/minirake
+++ b/minirake
@@ -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