diff options
| author | ruki <[email protected]> | 2020-11-18 23:31:08 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2020-11-18 23:31:08 +0800 |
| commit | 9980a379d2d79877aebaed43fbec123279e69854 (patch) | |
| tree | 44557d1fac6e72c572f08bfe134c30f13747d464 | |
| parent | b7aee98613d00f768010cdf95273a9bf129ad906 (diff) | |
improve package envs
| -rw-r--r-- | xmake/actions/require/impl/actions/install.lua | 6 | ||||
| -rw-r--r-- | xmake/core/package/package.lua | 12 |
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 |
