summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2024-11-29 23:52:51 +0800
committerruki <[email protected]>2024-11-29 23:52:51 +0800
commit42098468650fba086e24acb137fa1edce4c4d0ee (patch)
tree3de4624a583b1725573bf05522d4431fefb2dfcb
parent78f2f9b858a5acede19b35608a193364bda1f738 (diff)
check configs conflict
-rw-r--r--xmake/modules/private/action/require/impl/package.lua28
1 files changed, 25 insertions, 3 deletions
diff --git a/xmake/modules/private/action/require/impl/package.lua b/xmake/modules/private/action/require/impl/package.lua
index b3cc69e87..2ba278f37 100644
--- a/xmake/modules/private/action/require/impl/package.lua
+++ b/xmake/modules/private/action/require/impl/package.lua
@@ -1213,7 +1213,7 @@ end
-- check and resolve package conflicts
function _check_and_resolve_package_depconflicts_impl(package, name, deps)
- -- compute versions intersection
+ -- check version compatibility
local versions
for _, dep in ipairs(deps) do
local compatinfo = _get_package_compatinfo(dep)
@@ -1233,13 +1233,35 @@ function _check_and_resolve_package_depconflicts_impl(package, name, deps)
if not versions or versions:empty() then
print("package(%s): add_deps(%s, ...)", package:name(), name)
for idx, dep in ipairs(deps) do
- local key = _get_packagekey(dep:name(), dep:requireinfo())
cprint(" ${color.warning}->${clear} %s %s ${dim}%s",
dep:displayname(), dep:version_str() or "", get_configs_str(dep))
end
raise("package(%s): conflict version dependencies!", name)
+ else
+ -- TODO switch to compatible version
+ end
+
+ -- check configs compatibility
+ local prevkey
+ local configs_conflict = false
+ for _, dep in ipairs(deps) do
+ local key = _get_packagekey(dep:name(), dep:requireinfo())
+ if prevkey then
+ if prevkey ~= key then
+ configs_conflict = true
+ end
+ else
+ prevkey = key
+ end
+ end
+ if configs_conflict then
+ print("package(%s): add_deps(%s, ...)", package:name(), name)
+ for idx, dep in ipairs(deps) do
+ cprint(" ${color.warning}->${clear} %s %s ${dim}%s",
+ dep:displayname(), dep:version_str() or "", get_configs_str(dep))
+ end
+ raise("package(%s): conflict configs dependencies!", name)
end
- print(name, versions)
end
-- check and resolve dependencies conflicts