summaryrefslogtreecommitdiff
path: root/xmake/core
diff options
context:
space:
mode:
authorruki <[email protected]>2021-04-13 22:42:22 +0800
committerruki <[email protected]>2021-04-13 22:42:22 +0800
commit84b64c4ecffe6ed4a498efa8116271ecba78e52d (patch)
tree4f03fff7f04d6fd648b9bfce26348463b4bc7423 /xmake/core
parent317745583da0e5c940f6e300c5f6163eb800efbf (diff)
improve envs
Diffstat (limited to 'xmake/core')
-rw-r--r--xmake/core/base/os.lua17
-rw-r--r--xmake/core/package/package.lua28
-rw-r--r--xmake/core/sandbox/modules/os.lua1
3 files changed, 18 insertions, 28 deletions
diff --git a/xmake/core/base/os.lua b/xmake/core/base/os.lua
index f9444d4b3..44b373a66 100644
--- a/xmake/core/base/os.lua
+++ b/xmake/core/base/os.lua
@@ -998,6 +998,23 @@ function os.getenvs()
return envs
end
+-- set all current environment variables
+function os.setenvs(envs)
+ if envs then
+ -- remove new added values
+ local curenvs = os.getenvs()
+ for name, _ in pairs(curenvs) do
+ if not envs[name] then
+ os.setenv(name, nil)
+ end
+ end
+ -- change values
+ for name, values in pairs(envs) do
+ os.setenv(name, values)
+ end
+ end
+end
+
-- set values to environment variable
function os.setenv(name, ...)
local values = {...}
diff --git a/xmake/core/package/package.lua b/xmake/core/package/package.lua
index 3c2f36e75..c4db97454 100644
--- a/xmake/core/package/package.lua
+++ b/xmake/core/package/package.lua
@@ -591,18 +591,8 @@ end
-- enter the package environments
function _instance:envs_enter()
-
- -- save the old environments
- local oldenvs = self._OLDENVS
- if not oldenvs then
- oldenvs = {}
- self._OLDENVS = oldenvs
- end
-
- -- add the new environments
local installdir = self:installdir()
for name, values in pairs(self:envs()) do
- oldenvs[name] = oldenvs[name] or os.getenv(name)
if name == "PATH" or name == "LD_LIBRARY_PATH" or name == "DYLD_LIBRARY_PATH" then
for _, value in ipairs(values) do
if path.is_absolute(value) then
@@ -617,24 +607,6 @@ function _instance:envs_enter()
end
end
--- leave the package environments
-function _instance:envs_leave()
- local oldenvs = self._OLDENVS
- if oldenvs then
- -- remove new added values
- for name, _ in pairs(self:envs()) do
- if not oldenvs[name] then
- os.setenv(name, nil)
- end
- end
- -- restore old values
- for name, values in pairs(oldenvs) do
- os.setenv(name, values)
- end
- self._OLDENVS = nil
- end
-end
-
-- get the given environment variable
function _instance:getenv(name)
return self:envs()[name]
diff --git a/xmake/core/sandbox/modules/os.lua b/xmake/core/sandbox/modules/os.lua
index 2436c175c..9700aebb8 100644
--- a/xmake/core/sandbox/modules/os.lua
+++ b/xmake/core/sandbox/modules/os.lua
@@ -58,6 +58,7 @@ sandbox_os.addenv = os.addenv
sandbox_os.setenvp = os.setenvp
sandbox_os.addenvp = os.addenvp
sandbox_os.getenvs = os.getenvs
+sandbox_os.setenvs = os.setenvs
sandbox_os.pbpaste = os.pbpaste
sandbox_os.pbcopy = os.pbcopy
sandbox_os.cpuinfo = os.cpuinfo