summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2020-11-18 23:31:08 +0800
committerruki <[email protected]>2020-11-18 23:31:08 +0800
commit9980a379d2d79877aebaed43fbec123279e69854 (patch)
tree44557d1fac6e72c572f08bfe134c30f13747d464
parentb7aee98613d00f768010cdf95273a9bf129ad906 (diff)
improve package envs
-rw-r--r--xmake/actions/require/impl/actions/install.lua6
-rw-r--r--xmake/core/package/package.lua12
2 files changed, 16 insertions, 2 deletions
diff --git a/xmake/actions/require/impl/actions/install.lua b/xmake/actions/require/impl/actions/install.lua
index 01079bb8b..9983f9868 100644
--- a/xmake/actions/require/impl/actions/install.lua
+++ b/xmake/actions/require/impl/actions/install.lua
@@ -181,6 +181,9 @@ function main(package)
end
-- enter the package environments
+ for _, dep in ipairs(package:orderdeps()) do
+ dep:envs_enter()
+ end
package:envs_enter()
-- fetch package and force to flush the cache
@@ -202,6 +205,9 @@ function main(package)
-- leave the package environments
package:envs_leave()
+ for _, dep in irpairs(package:orderdeps()) do
+ dep:envs_leave()
+ end
-- trace
tty.erase_line_to_start().cr()
diff --git a/xmake/core/package/package.lua b/xmake/core/package/package.lua
index 627081aaa..b46077f08 100644
--- a/xmake/core/package/package.lua
+++ b/xmake/core/package/package.lua
@@ -481,8 +481,16 @@ end
-- leave the package environments
function _instance:envs_leave()
- if self._OLDENVS then
- for name, values in pairs(self._OLDENVS) do
+ 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