diff options
| author | ruki <[email protected]> | 2020-12-31 00:38:15 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2020-12-31 00:38:15 +0800 |
| commit | 107a8a57ce7d8b5dfb17d2ea6da7cb0d643157ec (patch) | |
| tree | e7c7d0e41336e261980ab27322034ce9d483dc20 | |
| parent | 944565c7161a1c834461e3cdbb2f23a72d5884b9 (diff) | |
improve to load packages
| -rw-r--r-- | xmake/actions/require/impl/package.lua | 11 |
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 |
