summaryrefslogtreecommitdiff
path: root/xmake/core/base/os.lua
diff options
context:
space:
mode:
authorruki <[email protected]>2021-05-11 00:41:32 +0800
committerruki <[email protected]>2021-05-11 10:28:37 +0800
commit0b9b15fb9cd681831d3964474f5935e4e38e0e60 (patch)
tree41e7b63ea7b72811aa38eba5937d9212eb51a52f /xmake/core/base/os.lua
parent1a1b4ddb49c43103f3c498d74dbee267a210fad7 (diff)
improve target:pkgenvs
Diffstat (limited to 'xmake/core/base/os.lua')
-rw-r--r--xmake/core/base/os.lua24
1 files changed, 14 insertions, 10 deletions
diff --git a/xmake/core/base/os.lua b/xmake/core/base/os.lua
index accc6c7dd..2182a91de 100644
--- a/xmake/core/base/os.lua
+++ b/xmake/core/base/os.lua
@@ -1012,11 +1012,11 @@ end
-- set all current environment variables
-- e.g. envs["PATH"] = "/xxx:/yyy/foo"
function os.setenvs(envs)
+ local oldenvs = os.getenvs()
if envs then
local changed = false
-- remove new added values
- local curenvs = os.getenvs()
- for name, _ in pairs(curenvs) do
+ for name, _ in pairs(oldenvs) do
if not envs[name] then
if os._setenv(name, "") then
changed = true
@@ -1025,7 +1025,7 @@ function os.setenvs(envs)
end
-- change values
for name, values in pairs(envs) do
- if curenvs[name] ~= values then
+ if oldenvs[name] ~= values then
if os._setenv(name, values) then
changed = true
end
@@ -1036,22 +1036,25 @@ function os.setenvs(envs)
os._SCHED_CHENVS(envs)
end
end
+ return oldenvs
end
-- add environment variables
-- e.g. envs["PATH"] = "/xxx:/yyy/foo"
function os.addenvs(envs)
+ local oldenvs = os.getenvs()
if envs then
- local changed = false
+ local newenvs = {}
for name, values in pairs(envs) do
- local ok
- local oldenv = os.getenv(name)
- if oldenv == "" or oldenv == nil then
- ok = os._setenv(name, values)
+ if newenvs[name] then
+ newenvs[name] = values .. path.envsep() .. newenvs[name]
else
- ok = os._setenv(name, values .. path.envsep() .. oldenv)
+ newenvs[name] = oldenvs[name]
end
- if ok then
+ end
+ local changed = false
+ for name, values in pairs(newenvs) do
+ if os._setenv(name, values) then
changed = true
end
end
@@ -1060,6 +1063,7 @@ function os.addenvs(envs)
os._SCHED_CHENVS()
end
end
+ return oldenvs
end
-- set values to environment variable