diff options
| -rw-r--r-- | xmake/modules/private/action/require/impl/install_packages.lua | 2 | ||||
| -rw-r--r-- | xmake/modules/private/action/require/impl/package.lua | 22 |
2 files changed, 17 insertions, 7 deletions
diff --git a/xmake/modules/private/action/require/impl/install_packages.lua b/xmake/modules/private/action/require/impl/install_packages.lua index b69d8531d..c2e7f61d7 100644 --- a/xmake/modules/private/action/require/impl/install_packages.lua +++ b/xmake/modules/private/action/require/impl/install_packages.lua @@ -393,7 +393,7 @@ function _install_packages(packages_install, packages_download, installdeps) local dep_not_found = nil for _, dep in pairs(installdeps[tostring(pkg)]) do local installed = packages_installed[tostring(dep)] - if installed == false or (installed == nil and not dep:exists() and not dep:is_optional()) then + if installed == false or (installed == nil and package.should_install(dep) and not dep:is_optional()) then ready = false dep_not_found = dep break diff --git a/xmake/modules/private/action/require/impl/package.lua b/xmake/modules/private/action/require/impl/package.lua index 5c644be1c..66b26a602 100644 --- a/xmake/modules/private/action/require/impl/package.lua +++ b/xmake/modules/private/action/require/impl/package.lua @@ -942,13 +942,8 @@ function _must_depend_on(package, dep) end end --- the cache directory -function cachedir() - return path.join(global.directory(), "cache", "packages") -end - -- this package should be install? -function should_install(package) +function _should_install(package) if package:is_template() or package:exists() then return false end @@ -987,6 +982,21 @@ function should_install(package) end end +-- the cache directory +function cachedir() + return path.join(global.directory(), "cache", "packages") +end + +-- this package should be install? +function should_install(package) + local result = _memcache():get2("should_install", tostring(package)) + if result == nil then + result = _should_install(package) or false + _memcache():set2("should_install", tostring(package), result) + end + return result +end + -- get package configs string function get_configs_str(package) local configs = {} |
