summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2021-07-14 00:36:00 +0800
committerruki <[email protected]>2021-07-14 00:36:00 +0800
commit73c0557310e8b60b312b37b714142583d5a8b5df (patch)
treee6b419da6d2731e42c7b87d0f7506e496679e292
parent6b8c1bc25f963d6f969b741cd424ab99e2ae7dbc (diff)
improve to select package version
-rw-r--r--xmake/modules/private/action/require/impl/package.lua12
1 files changed, 7 insertions, 5 deletions
diff --git a/xmake/modules/private/action/require/impl/package.lua b/xmake/modules/private/action/require/impl/package.lua
index 36b20d20a..844847558 100644
--- a/xmake/modules/private/action/require/impl/package.lua
+++ b/xmake/modules/private/action/require/impl/package.lua
@@ -270,12 +270,14 @@ function _select_package_version(package, requireinfo)
-- https://github.com/xmake-io/xmake/issues/1009
version = require_version
source = "versions"
- elseif #package:versions() > 0 and (require_version == "latest" or require_version:find('.', 1, true)) then -- select version?
- version, source = semver.select(require_version, package:versions())
- elseif has_giturl then -- select branch?
+ elseif #package:versions() > 0 then -- select version?
+ version, source = try { function () return semver.select(require_version, package:versions()) end }
+ end
+ if not version and has_giturl and not require_version:find('.', 1, true) then -- select branch?
version, source = require_version ~= "latest" and require_version or "master", "branches"
- else
- raise("package(%s %s): not found!", package:name(), require_version)
+ end
+ if not version then
+ raise("package(%s): version(%s) not found!", package:name(), require_version)
end
return version, source
end