summaryrefslogtreecommitdiff
path: root/xmake/actions/require/install.lua
diff options
context:
space:
mode:
authorruki <[email protected]>2019-03-17 22:46:36 +0800
committerruki <[email protected]>2019-03-17 22:46:36 +0800
commitecdb953daa77c74a7475c7486d8df6d96d0d0c4d (patch)
tree5720d5b5de715400591fc18a9417a9da2a189e28 /xmake/actions/require/install.lua
parente35215c72fa78df798a88ca1cd9bed9bb36013d5 (diff)
bind package envs to run
Diffstat (limited to 'xmake/actions/require/install.lua')
-rw-r--r--xmake/actions/require/install.lua50
1 files changed, 35 insertions, 15 deletions
diff --git a/xmake/actions/require/install.lua b/xmake/actions/require/install.lua
index df327d2ab..5e692f5de 100644
--- a/xmake/actions/require/install.lua
+++ b/xmake/actions/require/install.lua
@@ -38,18 +38,40 @@ function _register_required_package(instance, requireinfo)
if _g.optional_missing[instance:name()] then
requireinfo:enable(false)
else
- -- add this package info
+ -- clear require info first
requireinfo:clear()
- requireinfo:add(instance:fetch())
- -- add all dependent packages info
- local orderdeps = instance:orderdeps()
- if orderdeps then
- local total = #orderdeps
- for idx, _ in ipairs(orderdeps) do
- local dep = orderdeps[total + 1 - idx]
- if dep then
- requireinfo:add((dep:fetch()))
+ -- add this packages info
+ if instance:kind() == "binary" then
+ -- add path environments
+ local envs = {}
+ local installdir = instance:installdir()
+ for name, values in pairs(instance:envs()) do
+ if name == "PATH" then
+ for _, value in ipairs(values) do
+ envs[name] = envs[name] or {}
+ if path.is_absolute(value) then
+ table.insert(envs[name], value)
+ else
+ table.insert(envs[name], path.join(installdir, value))
+ end
+ end
+ else
+ envs[name] = values
+ end
+ end
+ requireinfo:add({envs = envs})
+ else
+ -- add include and links info
+ requireinfo:add(instance:fetch())
+ local orderdeps = instance:orderdeps()
+ if orderdeps then
+ local total = #orderdeps
+ for idx, _ in ipairs(orderdeps) do
+ local dep = orderdeps[total + 1 - idx]
+ if dep then
+ requireinfo:add((dep:fetch()))
+ end
end
end
end
@@ -75,11 +97,9 @@ function _register_required_packages(packages)
if not group or not registered_in_group[group] then
-- do not register binary package
- if instance:kind() ~= "binary" then
- local requireinfo = project.require(instance:alias() or instance:name())
- if requireinfo then
- _register_required_package(instance, requireinfo)
- end
+ local requireinfo = project.require(instance:alias() or instance:name())
+ if requireinfo then
+ _register_required_package(instance, requireinfo)
end
-- mark as registered in group