diff options
| author | ruki <[email protected]> | 2021-08-19 00:43:52 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2021-08-19 00:43:52 +0800 |
| commit | e830cca00c1d3a2761eb725003823d8660acafc8 (patch) | |
| tree | 1d90a67e1aae19dfdc0febf51aabebdcf7b5d7e7 | |
| parent | c3b21f59947f34aa38881f621d21fd76fef5f008 (diff) | |
check lockrequire version
5 files changed, 45 insertions, 53 deletions
diff --git a/tests/projects/package/toolchain_muslcc/xmake-requires.lock b/tests/projects/package/toolchain_muslcc/xmake-requires.lock index 5aa0c0e2e..0c232a5a7 100644 --- a/tests/projects/package/toolchain_muslcc/xmake-requires.lock +++ b/tests/projects/package/toolchain_muslcc/xmake-requires.lock @@ -5,15 +5,13 @@ deps = { "m4#f9faf630133045aab06d08087de4bc33" }, - is_built = true, - kind = "binary", 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", - "http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz#954bd69b391edc12d6a4a51a2dd1476543da5c6bbf05a95b59dc0dd6fd4c2969", - "git://git.sv.gnu.org/autoconf#2.69" + "git://git.sv.gnu.org/autoconf#2.69", + "http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz#954bd69b391edc12d6a4a51a2dd1476543da5c6bbf05a95b59dc0dd6fd4c2969" }, version = "2.69" }, @@ -23,8 +21,6 @@ deps = { "autoconf#f9faf630133045aab06d08087de4bc33" }, - is_built = true, - kind = "binary", name = "automake", plat = "macosx", repo = "https://gitee.com/tboox/xmake-repo.git#e87effa464611cecf28dfced70cbe491a08fe99d", @@ -37,8 +33,6 @@ ["cmake#f9faf630133045aab06d08087de4bc33"] = { arch = "x86_64", buildhash = "a6d18f8c0bf347d980f8bb762583c91a", - is_built = true, - kind = "binary", name = "cmake", plat = "macosx", repo = "https://gitee.com/tboox/xmake-repo.git#e87effa464611cecf28dfced70cbe491a08fe99d", @@ -54,7 +48,6 @@ deps = { "autoconf#f9faf630133045aab06d08087de4bc33" }, - is_built = true, name = "gmp", plat = "macosx", repo = "https://gitee.com/tboox/xmake-repo.git#e87effa464611cecf28dfced70cbe491a08fe99d", @@ -70,7 +63,6 @@ "autoconf#f9faf630133045aab06d08087de4bc33", "gmp#f9faf630133045aab06d08087de4bc33" }, - is_built = true, name = "libisl", plat = "macosx", repo = "https://gitee.com/tboox/xmake-repo.git#e87effa464611cecf28dfced70cbe491a08fe99d", @@ -85,7 +77,6 @@ deps = { "cmake#f9faf630133045aab06d08087de4bc33" }, - is_built = true, name = "libogg", plat = "cross", repo = "https://gitee.com/tboox/xmake-repo.git#e87effa464611cecf28dfced70cbe491a08fe99d", @@ -104,7 +95,6 @@ "libtool#f9faf630133045aab06d08087de4bc33", "pkg-config#f9faf630133045aab06d08087de4bc33" }, - is_built = true, name = "libplist", plat = "cross", repo = "https://gitee.com/tboox/xmake-repo.git#e87effa464611cecf28dfced70cbe491a08fe99d", @@ -120,8 +110,6 @@ deps = { "autoconf#f9faf630133045aab06d08087de4bc33" }, - is_built = true, - kind = "binary", name = "libtool", plat = "macosx", repo = "https://gitee.com/tboox/xmake-repo.git#e87effa464611cecf28dfced70cbe491a08fe99d", @@ -135,8 +123,6 @@ ["m4#f9faf630133045aab06d08087de4bc33"] = { arch = "x86_64", buildhash = "fd0e83e5759b442a970327ebb1c89793", - is_built = true, - kind = "binary", name = "m4", plat = "macosx", repo = "https://gitee.com/tboox/xmake-repo.git#e87effa464611cecf28dfced70cbe491a08fe99d", @@ -152,8 +138,6 @@ deps = { "libisl 0.22#3dd996fa365042e39791030c4e1cad52" }, - is_built = true, - kind = "toolchain", name = "muslcc", plat = "macosx", repo = "https://gitee.com/tboox/xmake-repo.git#e87effa464611cecf28dfced70cbe491a08fe99d", @@ -165,8 +149,6 @@ ["pkg-config#f9faf630133045aab06d08087de4bc33"] = { arch = "x86_64", buildhash = "84fd7f9b9f7a47709512cfc85cd9e5f7", - is_built = true, - kind = "binary", name = "pkg-config", plat = "macosx", repo = "https://gitee.com/tboox/xmake-repo.git#e87effa464611cecf28dfced70cbe491a08fe99d", @@ -176,10 +158,10 @@ }, version = "0.29.2" }, + version = "1.0", ["zlib#30fe400ff5234914998bd7d8c177621c"] = { arch = "arm", buildhash = "be90a245b8bb48e6b08a1a15bdcad467", - is_built = true, name = "zlib", plat = "cross", repo = "https://gitee.com/tboox/xmake-repo.git#e87effa464611cecf28dfced70cbe491a08fe99d", diff --git a/xmake/core/project/project.lua b/xmake/core/project/project.lua index e2d7f996a..91982e64a 100644 --- a/xmake/core/project/project.lua +++ b/xmake/core/project/project.lua @@ -1028,6 +1028,11 @@ function project.requireslock() return path.join(project.directory(), "xmake-requires.lock") end +-- get the format version of requires lockfile +function project.requireslock_version() + return "1.0" +end + -- get the given rule function project.rule(name) return project.rules()[name] diff --git a/xmake/core/sandbox/modules/import/core/project/project.lua b/xmake/core/sandbox/modules/import/core/project/project.lua index 696bd0d91..34b5fa7ac 100644 --- a/xmake/core/sandbox/modules/import/core/project/project.lua +++ b/xmake/core/sandbox/modules/import/core/project/project.lua @@ -36,38 +36,39 @@ local package = require("package/package") local import = require("sandbox/modules/import") -- export some readonly interfaces -sandbox_core_project.get = project.get -sandbox_core_project.extraconf = project.extraconf -sandbox_core_project.rule = project.rule -sandbox_core_project.rules = project.rules -sandbox_core_project.toolchain = project.toolchain -sandbox_core_project.toolchains = project.toolchains -sandbox_core_project.target = project.target -sandbox_core_project.targets = project.targets -sandbox_core_project.ordertargets = project.ordertargets -sandbox_core_project.option = project.option -sandbox_core_project.options = project.options -sandbox_core_project.rootfile = project.rootfile -sandbox_core_project.allfiles = project.allfiles -sandbox_core_project.rcfiles = project.rcfiles -sandbox_core_project.directory = project.directory -sandbox_core_project.name = project.name -sandbox_core_project.modes = project.modes -sandbox_core_project.default_arch = project.default_arch -sandbox_core_project.allowed_modes = project.allowed_modes -sandbox_core_project.allowed_plats = project.allowed_plats -sandbox_core_project.allowed_archs = project.allowed_archs -sandbox_core_project.mtimes = project.mtimes -sandbox_core_project.version = project.version -sandbox_core_project.required_package = project.required_package -sandbox_core_project.required_packages = project.required_packages -sandbox_core_project.requires_str = project.requires_str -sandbox_core_project.requireconfs_str = project.requireconfs_str -sandbox_core_project.requireslock = project.requireslock -sandbox_core_project.policy = project.policy -sandbox_core_project.tmpdir = project.tmpdir -sandbox_core_project.tmpfile = project.tmpfile -sandbox_core_project.is_loaded = project.is_loaded +sandbox_core_project.get = project.get +sandbox_core_project.extraconf = project.extraconf +sandbox_core_project.rule = project.rule +sandbox_core_project.rules = project.rules +sandbox_core_project.toolchain = project.toolchain +sandbox_core_project.toolchains = project.toolchains +sandbox_core_project.target = project.target +sandbox_core_project.targets = project.targets +sandbox_core_project.ordertargets = project.ordertargets +sandbox_core_project.option = project.option +sandbox_core_project.options = project.options +sandbox_core_project.rootfile = project.rootfile +sandbox_core_project.allfiles = project.allfiles +sandbox_core_project.rcfiles = project.rcfiles +sandbox_core_project.directory = project.directory +sandbox_core_project.name = project.name +sandbox_core_project.modes = project.modes +sandbox_core_project.default_arch = project.default_arch +sandbox_core_project.allowed_modes = project.allowed_modes +sandbox_core_project.allowed_plats = project.allowed_plats +sandbox_core_project.allowed_archs = project.allowed_archs +sandbox_core_project.mtimes = project.mtimes +sandbox_core_project.version = project.version +sandbox_core_project.required_package = project.required_package +sandbox_core_project.required_packages = project.required_packages +sandbox_core_project.requires_str = project.requires_str +sandbox_core_project.requireconfs_str = project.requireconfs_str +sandbox_core_project.requireslock = project.requireslock +sandbox_core_project.requireslock_version = project.requireslock_version +sandbox_core_project.policy = project.policy +sandbox_core_project.tmpdir = project.tmpdir +sandbox_core_project.tmpfile = project.tmpfile +sandbox_core_project.is_loaded = project.is_loaded -- check project options function sandbox_core_project.check() diff --git a/xmake/modules/private/action/require/impl/lock_packages.lua b/xmake/modules/private/action/require/impl/lock_packages.lua index a5e971b60..a02a65470 100644 --- a/xmake/modules/private/action/require/impl/lock_packages.lua +++ b/xmake/modules/private/action/require/impl/lock_packages.lua @@ -76,6 +76,7 @@ end function main(packages) if project.policy("package.requires_lock") then local results = {} + results.version = project.requireslock_version() for _, instance in ipairs(packages) do local packagelock_key = _get_packagelock_key(instance) results[packagelock_key] = _lock_package(instance) diff --git a/xmake/modules/private/action/require/impl/package.lua b/xmake/modules/private/action/require/impl/package.lua index 148758c59..3d9145477 100644 --- a/xmake/modules/private/action/require/impl/package.lua +++ b/xmake/modules/private/action/require/impl/package.lua @@ -684,6 +684,9 @@ function _load_package(packagename, requireinfo, opt) 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 |
