From ecd598a3de7ffa62373446e0bc237c846f3a1bca Mon Sep 17 00:00:00 2001 From: KnightJun Date: Fri, 15 Jan 2021 11:47:09 +0800 Subject: Recursively add target dependency env --- xmake/actions/run/main.lua | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/xmake/actions/run/main.lua b/xmake/actions/run/main.lua index a9a838651..872d5d7ea 100644 --- a/xmake/actions/run/main.lua +++ b/xmake/actions/run/main.lua @@ -89,6 +89,16 @@ function _on_run_target(target) _do_run_target(target) end +-- recursively target add env +function _add_target_pkgenvs(target) + for name, values in pairs(target:pkgenvs()) do + os.addenv(name, unpack(values)) + end + for _, dep in ipairs(target:orderdeps()) do + _add_target_pkgenvs(dep) + end +end + -- run the given target function _run(target) @@ -96,8 +106,8 @@ function _run(target) local oldenvs = {} for name, values in pairs(target:pkgenvs()) do oldenvs[name] = os.getenv(name) - os.addenv(name, unpack(values)) end + _add_target_pkgenvs(target) -- the target scripts local scripts = -- cgit v1.3.1 From 33294c909c219aaef9227aa822b2ac756041ac28 Mon Sep 17 00:00:00 2001 From: KnightJun Date: Mon, 18 Jan 2021 09:25:51 +0800 Subject: Avoid breaking the original envs --- xmake/actions/run/main.lua | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/xmake/actions/run/main.lua b/xmake/actions/run/main.lua index 872d5d7ea..97a0bda88 100644 --- a/xmake/actions/run/main.lua +++ b/xmake/actions/run/main.lua @@ -90,12 +90,15 @@ function _on_run_target(target) end -- recursively target add env -function _add_target_pkgenvs(target) +function _add_target_pkgenvs(target, oldenvs) for name, values in pairs(target:pkgenvs()) do + if not oldenvs[name] then + oldenvs[name] = os.getenv(name) + end os.addenv(name, unpack(values)) end for _, dep in ipairs(target:orderdeps()) do - _add_target_pkgenvs(dep) + _add_target_pkgenvs(dep, oldenvs) end end @@ -104,10 +107,7 @@ function _run(target) -- enter the environments of the target packages local oldenvs = {} - for name, values in pairs(target:pkgenvs()) do - oldenvs[name] = os.getenv(name) - end - _add_target_pkgenvs(target) + _add_target_pkgenvs(target, oldenvs) -- the target scripts local scripts = -- cgit v1.3.1 From b2b1b52eb1286d1d7631c4e316b5785b8cf08e95 Mon Sep 17 00:00:00 2001 From: KnightJun Date: Mon, 18 Jan 2021 10:18:58 +0800 Subject: Avoid adding envs repeatedly --- xmake/actions/run/main.lua | 10 +++++++--- 1 file 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 = -- cgit v1.3.1