diff options
| -rw-r--r-- | xmake/core/base/scheduler.lua | 2 | ||||
| -rw-r--r-- | xmake/modules/private/async/runjobs.lua | 13 |
2 files changed, 14 insertions, 1 deletions
diff --git a/xmake/core/base/scheduler.lua b/xmake/core/base/scheduler.lua index c33b5c7f0..1165538d7 100644 --- a/xmake/core/base/scheduler.lua +++ b/xmake/core/base/scheduler.lua @@ -273,7 +273,7 @@ function scheduler:_co_curenvs_update(envs) -- get running coroutine local running = self:co_running() - if not running or not running:is_isolated() then + if not running then return end diff --git a/xmake/modules/private/async/runjobs.lua b/xmake/modules/private/async/runjobs.lua index 6a2964a90..7ff3b5090 100644 --- a/xmake/modules/private/async/runjobs.lua +++ b/xmake/modules/private/async/runjobs.lua @@ -73,6 +73,14 @@ function main(name, jobs, opt) progress_helper = progress.new(nil, opt) end + -- isolate environments + local is_isolated = false + local co_running = scheduler.co_running() + if co_running and opt.isolate then + is_isolated = co_running:is_isolated() + co_running:isolate(true) + end + -- run timer local stop = false local running_jobs_indices = {} @@ -235,6 +243,11 @@ function main(name, jobs, opt) -- wait all jobs exited scheduler.co_group_wait(group_name) + -- restore isolated environments + if co_running and opt.isolate then + co_running:isolate(is_isolated) + end + -- stop timer stop = true |
