summaryrefslogtreecommitdiff
path: root/xmake
diff options
context:
space:
mode:
authorruki <[email protected]>2020-12-31 00:38:15 +0800
committerruki <[email protected]>2020-12-31 00:38:15 +0800
commit107a8a57ce7d8b5dfb17d2ea6da7cb0d643157ec (patch)
treee7c7d0e41336e261980ab27322034ce9d483dc20 /xmake
parent944565c7161a1c834461e3cdbb2f23a72d5884b9 (diff)
improve to load packages
Diffstat (limited to 'xmake')
-rw-r--r--xmake/actions/require/impl/package.lua11
1 files changed, 6 insertions, 5 deletions
diff --git a/xmake/actions/require/impl/package.lua b/xmake/actions/require/impl/package.lua
index a63c948dc..116600bf9 100644
--- a/xmake/actions/require/impl/package.lua
+++ b/xmake/actions/require/impl/package.lua
@@ -330,9 +330,9 @@ end
function _load_package(packagename, requireinfo, opt)
-- attempt to get it from cache first
- opt = opt or {}
+ local key = opt.rootkey .. "." .. packagename
local packages = _memcache():get("packages") or {}
- local package = packages[packagename]
+ local package = packages[key]
if package then
-- satisfy required version?
@@ -386,7 +386,7 @@ function _load_package(packagename, requireinfo, opt)
package:envs_load()
-- save this package package to cache
- packages[packagename] = package
+ packages[key] = package
_memcache():set("packages", packages)
return package
end
@@ -404,7 +404,8 @@ function _load_packages(requires, opt)
for _, requireinfo in ipairs(load_requires(requires, opt.requires_extra, opt.parentinfo)) do
-- load package
- local package = _load_package(requireinfo.name, requireinfo.info, opt)
+ local rootkey = opt.rootkey or requireinfo.name
+ local package = _load_package(requireinfo.name, requireinfo.info, table.join(opt, {rootkey = rootkey}))
-- maybe package not found and optional
if package then
@@ -432,7 +433,7 @@ function _load_packages(requires, opt)
-- load dependent packages and do not load system packages for package/deps()
local packagedeps = {}
- for _, dep in ipairs(_load_packages(deps, {requires_extra = extraconfs, parentinfo = requireinfo.info, nodeps = opt.nodeps, system = false})) do
+ for _, dep in ipairs(_load_packages(deps, {rootkey = rootkey, requires_extra = extraconfs, parentinfo = requireinfo.info, nodeps = opt.nodeps, system = false})) do
dep:parents_add(package)
table.insert(packages, dep)
packagedeps[dep:name()] = dep