From 4e14e4eca4c713eb0fd1d0f52c2f7e6f411b2f92 Mon Sep 17 00:00:00 2001 From: ruki Date: Tue, 17 Aug 2021 23:54:26 +0800 Subject: get locked requires --- .../private/action/require/impl/install_packages.lua | 4 +++- xmake/modules/private/action/require/impl/package.lua | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) 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. -- cgit v1.3.1