summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2021-08-19 00:43:52 +0800
committerruki <[email protected]>2021-08-19 00:43:52 +0800
commite830cca00c1d3a2761eb725003823d8660acafc8 (patch)
tree1d90a67e1aae19dfdc0febf51aabebdcf7b5d7e7
parentc3b21f59947f34aa38881f621d21fd76fef5f008 (diff)
check lockrequire version
-rw-r--r--tests/projects/package/toolchain_muslcc/xmake-requires.lock24
-rw-r--r--xmake/core/project/project.lua5
-rw-r--r--xmake/core/sandbox/modules/import/core/project/project.lua65
-rw-r--r--xmake/modules/private/action/require/impl/lock_packages.lua1
-rw-r--r--xmake/modules/private/action/require/impl/package.lua3
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