summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKnightJun <[email protected]>2021-01-18 10:18:58 +0800
committerKnightJun <[email protected]>2021-01-18 11:47:03 +0800
commitb2b1b52eb1286d1d7631c4e316b5785b8cf08e95 (patch)
treebec6d61a26326835c7c997dcbb216401907b39cc
parent33294c909c219aaef9227aa822b2ac756041ac28 (diff)
Avoid adding envs repeatedly
-rw-r--r--xmake/actions/run/main.lua10
1 files changed, 7 insertions, 3 deletions
diff --git a/xmake/actions/run/main.lua b/xmake/actions/run/main.lua
index 97a0bda88..88156f5b5 100644
--- a/xmake/actions/run/main.lua
+++ b/xmake/actions/run/main.lua
@@ -90,7 +90,11 @@ function _on_run_target(target)
end
-- recursively target add env
-function _add_target_pkgenvs(target, oldenvs)
+function _add_target_pkgenvs(target, oldenvs, targets_added)
+ if targets_added[target:name()] then
+ return
+ end
+ targets_added[target:name()] = true
for name, values in pairs(target:pkgenvs()) do
if not oldenvs[name] then
oldenvs[name] = os.getenv(name)
@@ -98,7 +102,7 @@ function _add_target_pkgenvs(target, oldenvs)
os.addenv(name, unpack(values))
end
for _, dep in ipairs(target:orderdeps()) do
- _add_target_pkgenvs(dep, oldenvs)
+ _add_target_pkgenvs(dep, oldenvs, targets_added)
end
end
@@ -107,7 +111,7 @@ function _run(target)
-- enter the environments of the target packages
local oldenvs = {}
- _add_target_pkgenvs(target, oldenvs)
+ _add_target_pkgenvs(target, oldenvs, {})
-- the target scripts
local scripts =