summaryrefslogtreecommitdiff
path: root/xmake/modules
diff options
context:
space:
mode:
authorruki <[email protected]>2021-08-19 00:53:05 +0800
committerruki <[email protected]>2021-08-19 00:53:05 +0800
commit7d85d8190b2e650ad02552c4935092a6d732206d (patch)
tree1efc3ffbba2cd9270808c4526d85389541aae488 /xmake/modules
parente830cca00c1d3a2761eb725003823d8660acafc8 (diff)
improve requirekey
Diffstat (limited to 'xmake/modules')
-rw-r--r--xmake/modules/private/action/require/impl/lock_packages.lua25
-rw-r--r--xmake/modules/private/action/require/impl/package.lua25
2 files changed, 15 insertions, 35 deletions
diff --git a/xmake/modules/private/action/require/impl/lock_packages.lua b/xmake/modules/private/action/require/impl/lock_packages.lua
index a02a65470..52141d7db 100644
--- a/xmake/modules/private/action/require/impl/lock_packages.lua
+++ b/xmake/modules/private/action/require/impl/lock_packages.lua
@@ -27,12 +27,8 @@ import("private.action.require.impl.utils.requirekey")
-- get locked package key
function _get_packagelock_key(instance)
- local plat = config.plat() or os.subhost()
- local arch = config.arch() or os.subarch()
local requireinfo = instance:requireinfo()
- local requirestr = requireinfo.originstr
- local key = requirekey(requireinfo, {hash = true, plat = plat, arch = arch})
- return string.format("%s#%s", requirestr, key)
+ return requireinfo and requireinfo.requirekey
end
-- lock package
@@ -50,25 +46,6 @@ function _lock_package(instance)
local lastcommit = git.lastcommit({repodir = repo:directory()})
result.repo = repo:url() .. "#" .. lastcommit
end
- for _, url in ipairs(instance:urls()) do
- result.urls = result.urls or {}
- local url_alias = instance:url_alias(url)
- url = filter.handle(url, instance)
- if git.asgiturl(url) then
- local revision = instance:revision(url_alias) or instance:tag() or instance:version_str()
- url = url .. "#" .. revision
- else
- local sourcehash = instance:sourcehash(url_alias)
- if sourcehash then
- url = url .. "#" .. sourcehash
- end
- end
- table.insert(result.urls, url)
- end
- for _, dep in ipairs(instance:plaindeps()) do
- result.deps = result.deps or {}
- table.insert(result.deps, _get_packagelock_key(dep))
- end
return result
end
diff --git a/xmake/modules/private/action/require/impl/package.lua b/xmake/modules/private/action/require/impl/package.lua
index 3d9145477..ade76e9d9 100644
--- a/xmake/modules/private/action/require/impl/package.lua
+++ b/xmake/modules/private/action/require/impl/package.lua
@@ -219,7 +219,7 @@ function _get_locked_requires(requirekey)
_memcache():set("requireslock", requireslock or false)
end
if requireslock then
- return requireslock[requirekey]
+ return requireslock[requirekey], requireslock.version
end
end
@@ -638,6 +638,19 @@ function _load_package(packagename, requireinfo, opt)
requireinfo.label = splitinfo[2]
end
+ -- sve requirekey
+ local requirekey = _get_packagelock_key(requireinfo)
+ requireinfo.requirekey = requirekey
+
+ -- get locked requireinfo
+ local locked_requireinfo, requireslock_version
+ if _has_locked_requires() then
+ locked_requireinfo, requireslock_version = _get_locked_requires(requirekey)
+ if requireslock_version and semver.compare(project.requireslock_version(), requireslock_version) < 0 then
+ locked_requireinfo = nil
+ end
+ end
+
-- load package from project first
local package
if os.isfile(os.projectfile()) then
@@ -679,16 +692,6 @@ function _load_package(packagename, requireinfo, opt)
-- finish requireinfo
_finish_requireinfo(requireinfo, package)
- -- get locked requireinfo
- local locked_requireinfo
- if _has_locked_requires() then
- local requirekey = _get_packagelock_key(requireinfo)
- locked_requireinfo = _get_locked_requires(requirekey)
- if semver.compare(project.requireslock_version(), locked_requireinfo.version) < 0 then
- locked_requireinfo = nil
- end
- end
-
-- select package version
local version, source = _select_package_version(package, requireinfo, locked_requireinfo)
if version then