diff options
| author | ruki <[email protected]> | 2026-01-10 22:05:16 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2026-01-10 22:05:16 +0800 |
| commit | 0cdef1cae501f1f023ea77fafefa1463b82590e0 (patch) | |
| tree | 2a456220a76b9676d1b4c6b6c9cea98d5e7c457c | |
| parent | 705c56d45cc92d4aeebc95964347fa548d76ba4e (diff) | |
improve to select scheme version
| -rw-r--r-- | xmake/modules/private/action/require/impl/package.lua | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/xmake/modules/private/action/require/impl/package.lua b/xmake/modules/private/action/require/impl/package.lua index 6e97a3452..8b0f5dc1b 100644 --- a/xmake/modules/private/action/require/impl/package.lua +++ b/xmake/modules/private/action/require/impl/package.lua @@ -405,8 +405,7 @@ function _select_package_version(package, requireinfo, locked_requireinfo) -- select version from schemes local version, source - local schemes = package:schemes_orderlist() - for _, scheme in ipairs(schemes) do + table.remove_if(package:schemes_orderlist(), function (i, scheme) local scheme_version, scheme_source = _select_version_from_scheme(scheme, requireinfo) if scheme_version then scheme:version_set(scheme_version, scheme_source) @@ -419,8 +418,12 @@ function _select_package_version(package, requireinfo, locked_requireinfo) version = scheme_version source = scheme_source end + else + -- remove this scheme if version is not matched + package:schemes()[scheme:name()] = nil + return true end - end + end) if not version and not package:is_thirdparty() and is_system ~= true then raise("package(%s): version(%s) not found!", package:name(), require_version) @@ -971,7 +974,6 @@ function _load_package(packagename, requireinfo, opt) -- select package version local version, source = _select_package_version(package, requireinfo, locked_requireinfo) if version then - package:version_set(version, source) package:data_set("__locked_requireinfo", locked_requireinfo) end |
