diff options
| author | ruki <[email protected]> | 2021-05-11 00:41:32 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2021-05-11 10:28:37 +0800 |
| commit | 0b9b15fb9cd681831d3964474f5935e4e38e0e60 (patch) | |
| tree | 41e7b63ea7b72811aa38eba5937d9212eb51a52f /xmake/core/base/os.lua | |
| parent | 1a1b4ddb49c43103f3c498d74dbee267a210fad7 (diff) | |
improve target:pkgenvs
Diffstat (limited to 'xmake/core/base/os.lua')
| -rw-r--r-- | xmake/core/base/os.lua | 24 |
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 |
