diff options
| author | ruki <[email protected]> | 2021-08-19 00:53:05 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2021-08-19 00:53:05 +0800 |
| commit | 7d85d8190b2e650ad02552c4935092a6d732206d (patch) | |
| tree | 1efc3ffbba2cd9270808c4526d85389541aae488 /xmake/modules/private | |
| parent | e830cca00c1d3a2761eb725003823d8660acafc8 (diff) | |
improve requirekey
Diffstat (limited to 'xmake/modules/private')
| -rw-r--r-- | xmake/modules/private/action/require/impl/lock_packages.lua | 25 | ||||
| -rw-r--r-- | xmake/modules/private/action/require/impl/package.lua | 25 |
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 |
