summaryrefslogtreecommitdiff
path: root/xmake/modules/private/action/require/impl/package.lua
diff options
context:
space:
mode:
authorruki <[email protected]>2021-03-27 00:58:49 +0800
committerruki <[email protected]>2021-03-27 00:58:49 +0800
commit313274ab5e9d3dce17460a832a966e2383f6ec4a (patch)
tree34ebb0289198911de7ec3eca2bca66ced29b13e6 /xmake/modules/private/action/require/impl/package.lua
parent55db717033eac0d71650149d9deef7744ecacd13 (diff)
add link deps
Diffstat (limited to 'xmake/modules/private/action/require/impl/package.lua')
-rw-r--r--xmake/modules/private/action/require/impl/package.lua20
1 files changed, 12 insertions, 8 deletions
diff --git a/xmake/modules/private/action/require/impl/package.lua b/xmake/modules/private/action/require/impl/package.lua
index ddfb0210e..7688fb283 100644
--- a/xmake/modules/private/action/require/impl/package.lua
+++ b/xmake/modules/private/action/require/impl/package.lua
@@ -74,7 +74,7 @@ end
-- false: only get local packages
--
--
-function _parse_require(require_str, requires_extra, parentinfo)
+function _parse_require(require_str)
-- split package and version info
local splitinfo = require_str:split('%s+')
@@ -109,11 +109,7 @@ function _parse_require(require_str, requires_extra, parentinfo)
-- get repository name, package name and package url
local pos = packageinfo:lastof('@', true)
if pos then
-
- -- get package name
packagename = packageinfo:sub(pos + 1)
-
- -- get reponame
reponame = packageinfo:sub(1, pos - 1)
else
packagename = packageinfo
@@ -122,6 +118,14 @@ function _parse_require(require_str, requires_extra, parentinfo)
-- check package name
assert(packagename, "require(\"%s\"): the package name not found!", require_str)
+ return packagename, version, reponame
+end
+
+-- load require info
+function _load_require(require_str, requires_extra, parentinfo)
+
+ -- parse require
+ local packagename, version, reponame = _parse_require(require_str)
-- get require extra
local require_extra = {}
@@ -197,12 +201,12 @@ end
--
function _sort_packagedeps(package, onlylink)
-- we must use native deps list instead of package:deps() to generate correct linkdeps
- -- TODO filter package name
local orderdeps = {}
local deps = package:get("deps")
if deps then
for _, depname in ipairs(deps) do
- local dep = package:dep(depname)
+ local packagename = _parse_require(depname)
+ local dep = package:dep(packagename)
if dep and (onlylink ~= true or dep:is_library()) then
table.join2(orderdeps, _sort_packagedeps(dep, onlylink))
table.insert(orderdeps, dep)
@@ -679,7 +683,7 @@ function load_requires(requires, requires_extra, opt)
opt = opt or {}
local requireitems = {}
for _, require_str in ipairs(requires) do
- local packagename, requireinfo = _parse_require(require_str, requires_extra, opt.parentinfo)
+ local packagename, requireinfo = _load_require(require_str, requires_extra, opt.parentinfo)
table.insert(requireitems, {name = packagename, info = requireinfo})
end
return requireitems