diff options
| author | ruki <[email protected]> | 2022-09-07 22:40:02 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2022-09-07 22:40:02 +0800 |
| commit | a1ebebeee928b74508a4bfbd3edb993eb39fc0c2 (patch) | |
| tree | 723c5e3702c2a3428d90d0279f38b9f453931e2a /xmake/core/package/package.lua | |
| parent | f16528f0e60e1823fc1aa093e5cd38f8e3406ac9 (diff) | |
improve package envs
Diffstat (limited to 'xmake/core/package/package.lua')
| -rw-r--r-- | xmake/core/package/package.lua | 52 |
1 files changed, 31 insertions, 21 deletions
diff --git a/xmake/core/package/package.lua b/xmake/core/package/package.lua index 5ec14ff0b..dab537c63 100644 --- a/xmake/core/package/package.lua +++ b/xmake/core/package/package.lua @@ -295,7 +295,7 @@ function _instance:artifacts_set(artifacts_info) end end if manifest.envs then - local envs = self:envs() + local envs = self:_rawenvs() for k, v in pairs(manifest.envs) do envs[k] = v end @@ -756,7 +756,7 @@ function _instance:manifest_save() manifest.arch = self:arch() manifest.mode = self:mode() manifest.configs = self:configs() - manifest.envs = self:envs() + manifest.envs = self:_rawenvs() -- save enabled library deps if self:librarydeps() then @@ -821,9 +821,9 @@ function _instance:manifest_save() end end --- get the exported environments -function _instance:envs() - local envs = self._ENVS +-- get the raw environments +function _instance:_rawenvs() + local envs = self._RAWENVS if not envs then envs = {} if self:is_binary() or self:is_plat("windows", "mingw") then -- bin/*.dll for windows @@ -836,7 +836,27 @@ function _instance:envs() envs.DYLD_LIBRARY_PATH = {"lib"} end end - self._ENVS = envs + self._RAWENVS = envs + end + return envs +end + +-- get the exported environments +function _instance:envs() + local envs = {} + for name, values in pairs(instance:_rawenvs()) do + if name == "PATH" or name == "LD_LIBRARY_PATH" or name == "DYLD_LIBRARY_PATH" then + local newvalues = {} + for _, value in ipairs(values) do + if path.is_absolute(value) then + table.insert(newvalues, value) + else + table.insert(newvalues, path.join(self:installdir(), value)) + end + end + values = newvalues + end + envs[name] = values end return envs end @@ -845,7 +865,7 @@ end function _instance:envs_load() local manifest = self:manifest_load() if manifest then - local envs = self:envs() + local envs = self:_rawenvs() for name, values in pairs(manifest.envs) do envs[name] = values end @@ -856,33 +876,23 @@ end function _instance:envs_enter() local installdir = self:installdir({readonly = true}) for name, values in pairs(self:envs()) do - 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 - os.addenv(name, value) - else - os.addenv(name, path.join(installdir, value)) - end - end - else - os.addenv(name, table.unpack(table.wrap(values))) - end + os.addenv(name, table.unpack(table.wrap(values))) end end -- get the given environment variable function _instance:getenv(name) - return self:envs()[name] + return self:_rawenvs()[name] end -- set the given environment variable function _instance:setenv(name, ...) - self:envs()[name] = {...} + self:_rawenvs()[name] = {...} end -- add the given environment variable function _instance:addenv(name, ...) - self:envs()[name] = table.join(self:envs()[name] or {}, ...) + self:_rawenvs()[name] = table.join(self:_rawenvs()[name] or {}, ...) end -- get the given build environment variable |
