summaryrefslogtreecommitdiff
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
parente830cca00c1d3a2761eb725003823d8660acafc8 (diff)
improve requirekey
-rw-r--r--tests/projects/package/multiconfig/xmake-requires.lock40
-rw-r--r--tests/projects/package/toolchain_muslcc/xmake-requires.lock96
-rw-r--r--xmake/modules/private/action/require/impl/lock_packages.lua25
-rw-r--r--xmake/modules/private/action/require/impl/package.lua25
4 files changed, 33 insertions, 153 deletions
diff --git a/tests/projects/package/multiconfig/xmake-requires.lock b/tests/projects/package/multiconfig/xmake-requires.lock
index 78e911112..8e4e4127c 100644
--- a/tests/projects/package/multiconfig/xmake-requires.lock
+++ b/tests/projects/package/multiconfig/xmake-requires.lock
@@ -1,53 +1,27 @@
{
- ["zlib#fd74da7781d54dddb234cfb6eae7be34"] = {
+ version = "1.0",
+ ["zlib#ddbdd8b8f76d455a8c0ef45fffe37160"] = {
arch = "x86_64",
buildhash = "b76a297309d14c09b42cfe3927260a51",
- configs = {
- debug = false,
- pic = true,
- shared = false
- },
- is_built = true,
name = "zlib",
plat = "macosx",
- repo = "https://gitee.com/tboox/xmake-repo.git#327b5dd6a61e5345c3e10d758e342a73a8e6c54e",
- urls = {
- "https://github.com/madler/zlib/archive/v1.2.11.tar.gz#629380c90a77b964d896ed37163f5c3a34f6e6d897311f1df2a7016355c45eff"
- },
+ repo = "https://gitee.com/tboox/xmake-repo.git#e87effa464611cecf28dfced70cbe491a08fe99d",
version = "1.2.11"
},
- ["zlib~debug#29572d10f2b44d76ad238aa6d9d886f0"] = {
+ ["zlib~debug#d72a8a937b694e449bce540c8eb65a8a"] = {
arch = "x86_64",
buildhash = "e6a6fa6a86ad4fc7ae3c2cf7c60cc084",
- configs = {
- debug = true,
- pic = true,
- shared = false
- },
- is_built = true,
name = "zlib",
plat = "macosx",
- repo = "https://gitee.com/tboox/xmake-repo.git#327b5dd6a61e5345c3e10d758e342a73a8e6c54e",
- urls = {
- "https://github.com/madler/zlib/archive/v1.2.11.tar.gz#629380c90a77b964d896ed37163f5c3a34f6e6d897311f1df2a7016355c45eff"
- },
+ repo = "https://gitee.com/tboox/xmake-repo.git#e87effa464611cecf28dfced70cbe491a08fe99d",
version = "1.2.11"
},
- ["zlib~shared#0aa7e77905524be8bf354384c68bdde7"] = {
+ ["zlib~shared#b286744a1898416faad2e5cab0104b2f"] = {
arch = "x86_64",
buildhash = "8e5b898b0f344715bac89cc6a1577506",
- configs = {
- debug = false,
- pic = true,
- shared = true
- },
- is_built = true,
name = "zlib",
plat = "macosx",
- repo = "https://gitee.com/tboox/xmake-repo.git#327b5dd6a61e5345c3e10d758e342a73a8e6c54e",
- urls = {
- "https://github.com/madler/zlib/archive/v1.2.11.tar.gz#629380c90a77b964d896ed37163f5c3a34f6e6d897311f1df2a7016355c45eff"
- },
+ repo = "https://gitee.com/tboox/xmake-repo.git#e87effa464611cecf28dfced70cbe491a08fe99d",
version = "1.2.11"
}
} \ No newline at end of file
diff --git a/tests/projects/package/toolchain_muslcc/xmake-requires.lock b/tests/projects/package/toolchain_muslcc/xmake-requires.lock
index 0c232a5a7..fb9cfad02 100644
--- a/tests/projects/package/toolchain_muslcc/xmake-requires.lock
+++ b/tests/projects/package/toolchain_muslcc/xmake-requires.lock
@@ -1,173 +1,99 @@
{
- ["autoconf#f9faf630133045aab06d08087de4bc33"] = {
+ ["autoconf#ddbdd8b8f76d455a8c0ef45fffe37160"] = {
arch = "x86_64",
buildhash = "01974c48f52d4d658f58852351743754",
- deps = {
- "m4#f9faf630133045aab06d08087de4bc33"
- },
name = "autoconf",
plat = "macosx",
repo = "https://gitee.com/tboox/xmake-repo.git#e87effa464611cecf28dfced70cbe491a08fe99d",
- urls = {
- "https://mirrors.ustc.edu.cn/gnu/autoconf/autoconf-2.69.tar.gz#954bd69b391edc12d6a4a51a2dd1476543da5c6bbf05a95b59dc0dd6fd4c2969",
- "git://git.sv.gnu.org/autoconf#2.69",
- "http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz#954bd69b391edc12d6a4a51a2dd1476543da5c6bbf05a95b59dc0dd6fd4c2969"
- },
version = "2.69"
},
- ["automake#f9faf630133045aab06d08087de4bc33"] = {
+ ["automake#ddbdd8b8f76d455a8c0ef45fffe37160"] = {
arch = "x86_64",
buildhash = "7a090c93706241f983f0d821a162e8a5",
- deps = {
- "autoconf#f9faf630133045aab06d08087de4bc33"
- },
name = "automake",
plat = "macosx",
repo = "https://gitee.com/tboox/xmake-repo.git#e87effa464611cecf28dfced70cbe491a08fe99d",
- urls = {
- "https://mirrors.ustc.edu.cn/gnu/automake/automake-1.16.1.tar.gz#608a97523f97db32f1f5d5615c98ca69326ced2054c9f82e65bade7fc4c9dea8",
- "http://ftp.gnu.org/gnu/automake/automake-1.16.1.tar.gz#608a97523f97db32f1f5d5615c98ca69326ced2054c9f82e65bade7fc4c9dea8"
- },
version = "1.16.1"
},
- ["cmake#f9faf630133045aab06d08087de4bc33"] = {
+ ["cmake#ddbdd8b8f76d455a8c0ef45fffe37160"] = {
arch = "x86_64",
buildhash = "a6d18f8c0bf347d980f8bb762583c91a",
name = "cmake",
plat = "macosx",
repo = "https://gitee.com/tboox/xmake-repo.git#e87effa464611cecf28dfced70cbe491a08fe99d",
- urls = {
- "https://github.com/Kitware/CMake/releases/download/v3.21.0/cmake-3.21.0-macos-universal.tar.gz#c1c6f19dfc9c658a48b5aed22806595b2337bb3aedb71ab826552f74f568719f",
- "https://cmake.org/files/v3.21/cmake-3.21.0-macos-universal-Darwin-x86_64.tar.gz#c1c6f19dfc9c658a48b5aed22806595b2337bb3aedb71ab826552f74f568719f"
- },
version = "3.21.0"
},
- ["gmp#f9faf630133045aab06d08087de4bc33"] = {
+ ["gmp#ddbdd8b8f76d455a8c0ef45fffe37160"] = {
arch = "x86_64",
buildhash = "7dd9c224447e46698ac73d29f58b1d73",
- deps = {
- "autoconf#f9faf630133045aab06d08087de4bc33"
- },
name = "gmp",
plat = "macosx",
repo = "https://gitee.com/tboox/xmake-repo.git#e87effa464611cecf28dfced70cbe491a08fe99d",
- urls = {
- "https://gmplib.org/download/gmp/gmp-6.2.1.tar.xz#fd4829912cddd12f84181c3451cc752be224643e87fac497b69edddadc49b4f2"
- },
version = "6.2.1"
},
["libisl 0.22#3dd996fa365042e39791030c4e1cad52"] = {
arch = "x86_64",
buildhash = "f649e1fb365e442e8f79f372fd91483b",
- deps = {
- "autoconf#f9faf630133045aab06d08087de4bc33",
- "gmp#f9faf630133045aab06d08087de4bc33"
- },
name = "libisl",
plat = "macosx",
repo = "https://gitee.com/tboox/xmake-repo.git#e87effa464611cecf28dfced70cbe491a08fe99d",
- urls = {
- "http://isl.gforge.inria.fr/isl-0.22.tar.xz#6c8bc56c477affecba9c59e2c9f026967ac8bad01b51bdd07916db40a517b9fa"
- },
version = "0.22"
},
- ["libogg#30fe400ff5234914998bd7d8c177621c"] = {
+ ["libogg#ddbdd8b8f76d455a8c0ef45fffe37160"] = {
arch = "arm",
buildhash = "d894fc29f2fb4c45a0f48bc2c6ece273",
- deps = {
- "cmake#f9faf630133045aab06d08087de4bc33"
- },
name = "libogg",
plat = "cross",
repo = "https://gitee.com/tboox/xmake-repo.git#e87effa464611cecf28dfced70cbe491a08fe99d",
- urls = {
- "https://gitlab.xiph.org/xiph/ogg/-/archive/v1.3.4/ogg-v1.3.4.tar.gz#62cc64b9fd3cf57bde3a9033e94534ba34313d2bb9698029f623121a4e47bb9b",
- "https://gitlab.xiph.org/xiph/ogg.git#v1.3.4"
- },
version = "v1.3.4"
},
- ["libplist#30fe400ff5234914998bd7d8c177621c"] = {
+ ["libplist#ddbdd8b8f76d455a8c0ef45fffe37160"] = {
arch = "arm",
buildhash = "0c01b22920be4876b1de74629194eb8f",
- deps = {
- "autoconf#f9faf630133045aab06d08087de4bc33",
- "automake#f9faf630133045aab06d08087de4bc33",
- "libtool#f9faf630133045aab06d08087de4bc33",
- "pkg-config#f9faf630133045aab06d08087de4bc33"
- },
name = "libplist",
plat = "cross",
repo = "https://gitee.com/tboox/xmake-repo.git#e87effa464611cecf28dfced70cbe491a08fe99d",
- urls = {
- "https://github.com/libimobiledevice/libplist/archive/2.2.0.tar.gz#7e654bdd5d8b96f03240227ed09057377f06ebad08e1c37d0cfa2abe6ba0cee2",
- "https://github.com/libimobiledevice/libplist.git#2.2.0"
- },
version = "2.2.0"
},
- ["libtool#f9faf630133045aab06d08087de4bc33"] = {
+ ["libtool#ddbdd8b8f76d455a8c0ef45fffe37160"] = {
arch = "x86_64",
buildhash = "64584ec84a4743ecb740b598b263ffa6",
- deps = {
- "autoconf#f9faf630133045aab06d08087de4bc33"
- },
name = "libtool",
plat = "macosx",
repo = "https://gitee.com/tboox/xmake-repo.git#e87effa464611cecf28dfced70cbe491a08fe99d",
- urls = {
- "https://mirrors.ustc.edu.cn/gnu/libtool/libtool-2.4.6.tar.gz#e3bd4d5d3d025a36c21dd6af7ea818a2afcd4dfc1ea5a17b39d7854bcd0c06e3",
- "git://git.savannah.gnu.org/libtool.git#2.4.6",
- "http://ftpmirror.gnu.org/libtool/libtool-2.4.6.tar.gz#e3bd4d5d3d025a36c21dd6af7ea818a2afcd4dfc1ea5a17b39d7854bcd0c06e3"
- },
version = "2.4.6"
},
- ["m4#f9faf630133045aab06d08087de4bc33"] = {
+ ["m4#ddbdd8b8f76d455a8c0ef45fffe37160"] = {
arch = "x86_64",
buildhash = "fd0e83e5759b442a970327ebb1c89793",
name = "m4",
plat = "macosx",
repo = "https://gitee.com/tboox/xmake-repo.git#e87effa464611cecf28dfced70cbe491a08fe99d",
- urls = {
- "https://ftp.gnu.org/gnu/m4/m4-1.4.19.tar.xz#63aede5c6d33b6d9b13511cd0be2cac046f2e70fd0a07aa9573a04a82783af96",
- "https://ftpmirror.gnu.org/m4/m4-1.4.19.tar.xz#63aede5c6d33b6d9b13511cd0be2cac046f2e70fd0a07aa9573a04a82783af96"
- },
version = "1.4.19"
},
- ["muslcc#f9faf630133045aab06d08087de4bc33"] = {
+ ["muslcc#ddbdd8b8f76d455a8c0ef45fffe37160"] = {
arch = "x86_64",
buildhash = "11062c09ebeb484594488ad73ddbcd1f",
- deps = {
- "libisl 0.22#3dd996fa365042e39791030c4e1cad52"
- },
name = "muslcc",
plat = "macosx",
repo = "https://gitee.com/tboox/xmake-repo.git#e87effa464611cecf28dfced70cbe491a08fe99d",
- urls = {
- "https://github.com/xmake-mirror/musl.cc/releases/download/20210202/arm-linux-musleabi-cross.mac.tgz#a177df3f847181c0c7f2b34b9bd7725b4c556c11a347aa0ae36e09ebf23fb480"
- },
version = "20210202"
},
- ["pkg-config#f9faf630133045aab06d08087de4bc33"] = {
+ ["pkg-config#ddbdd8b8f76d455a8c0ef45fffe37160"] = {
arch = "x86_64",
buildhash = "84fd7f9b9f7a47709512cfc85cd9e5f7",
name = "pkg-config",
plat = "macosx",
repo = "https://gitee.com/tboox/xmake-repo.git#e87effa464611cecf28dfced70cbe491a08fe99d",
- urls = {
- "https://pkgconfig.freedesktop.org/releases/pkg-config-0.29.2.tar.gz#6fc69c01688c9458a57eb9a1664c9aba372ccda420a02bf4429fe610e7e7d591",
- "http://fco.it.distfiles.macports.org/mirrors/macports-distfiles/pkgconfig/pkg-config-0.29.2.tar.gz#6fc69c01688c9458a57eb9a1664c9aba372ccda420a02bf4429fe610e7e7d591"
- },
version = "0.29.2"
},
version = "1.0",
- ["zlib#30fe400ff5234914998bd7d8c177621c"] = {
+ ["zlib#ddbdd8b8f76d455a8c0ef45fffe37160"] = {
arch = "arm",
buildhash = "be90a245b8bb48e6b08a1a15bdcad467",
name = "zlib",
plat = "cross",
repo = "https://gitee.com/tboox/xmake-repo.git#e87effa464611cecf28dfced70cbe491a08fe99d",
- urls = {
- "https://github.com/madler/zlib/archive/v1.2.11.tar.gz#629380c90a77b964d896ed37163f5c3a34f6e6d897311f1df2a7016355c45eff"
- },
version = "1.2.11"
}
} \ No newline at end of file
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