summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--xmake/modules/private/action/require/impl/install_packages.lua4
-rw-r--r--xmake/modules/private/action/require/impl/package.lua19
2 files changed, 22 insertions, 1 deletions
diff --git a/xmake/modules/private/action/require/impl/install_packages.lua b/xmake/modules/private/action/require/impl/install_packages.lua
index 79fb71c3f..75ca4414e 100644
--- a/xmake/modules/private/action/require/impl/install_packages.lua
+++ b/xmake/modules/private/action/require/impl/install_packages.lua
@@ -603,7 +603,9 @@ function main(requires, opt)
register_packages(packages)
-- lock packages
- lock_packages(packages)
+ if #packages_install > 0 then
+ lock_packages(packages)
+ end
return packages
end
diff --git a/xmake/modules/private/action/require/impl/package.lua b/xmake/modules/private/action/require/impl/package.lua
index d94629ce8..ed0429984 100644
--- a/xmake/modules/private/action/require/impl/package.lua
+++ b/xmake/modules/private/action/require/impl/package.lua
@@ -201,6 +201,25 @@ function _load_package_from_repository(packagename, reponame)
end
end
+-- has locked requires?
+function _has_locked_requires()
+ return project.policy("package.requires_lock") and os.isfile(project.requireslock())
+end
+
+-- get locked requires
+function _get_locked_requires(requirekey)
+ local requireslock = _memcache():get("requireslock")
+ if requireslock == nil then
+ if _has_locked_requires() then
+ requireslock = io.load(project.requireslock())
+ end
+ _memcache():set("requireslock", requireslock or false)
+ end
+ if requireslock then
+ return requireslock[requirekey]
+ end
+end
+
-- sort package deps
--
-- e.g.