diff options
| author | ruki <[email protected]> | 2024-11-29 23:52:51 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2024-11-29 23:52:51 +0800 |
| commit | 42098468650fba086e24acb137fa1edce4c4d0ee (patch) | |
| tree | 3de4624a583b1725573bf05522d4431fefb2dfcb /xmake/modules | |
| parent | 78f2f9b858a5acede19b35608a193364bda1f738 (diff) | |
check configs conflict
Diffstat (limited to 'xmake/modules')
| -rw-r--r-- | xmake/modules/private/action/require/impl/package.lua | 28 |
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 |
