diff options
| author | ruki <[email protected]> | 2026-01-06 23:19:53 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2026-01-09 17:59:04 +0800 |
| commit | 7e580d700a0872dd557ade75acd4d9cd625a78a8 (patch) | |
| tree | b4ba9a71c73827c6ceac4eec4828b0428fad767f | |
| parent | 8a1ef48e80ebd9248e1be0cf3eb6d9780dcd4855 (diff) | |
update scheme test
| -rw-r--r-- | tests/projects/package/schemes/xmake.lua | 142 |
1 files changed, 83 insertions, 59 deletions
diff --git a/tests/projects/package/schemes/xmake.lua b/tests/projects/package/schemes/xmake.lua index 5cda14ea3..7022523fc 100644 --- a/tests/projects/package/schemes/xmake.lua +++ b/tests/projects/package/schemes/xmake.lua @@ -5,76 +5,100 @@ package("cmake") set_homepage("https://cmake.org") set_description("A cross-platform family of tools designed to build, test and package software") - local is_precompiled = true - if is_host("macosx") then - add_urls("https://cmake.org/files/v$(version).tar.gz", {version = function (version) - return table.concat(table.slice((version):split('%.'), 1, 2), '.') .. "/cmake-" .. version .. (version:ge("3.20") and "-macos-universal" or "-Darwin-x86_64") - end}) - add_urls("https://github.com/Kitware/CMake/releases/download/v$(version).tar.gz", {version = function (version) - return version .. "/cmake-" .. version .. (version:ge("3.20") and "-macos-universal" or "-Darwin-x86_64") - end}) - add_versions("4.2.1", "0bb18f295e52d7e9309980e361e79e76a1d8da67a1587255cbe3696ea998f597") - elseif is_host("linux") then - if os.arch():find("arm64.*") then - add_urls("https://cmake.org/files/v$(version)-aarch64.tar.gz", {version = function (version) - return table.concat(table.slice((version):split('%.'), 1, 2), '.') .. "/cmake-" .. version .. (version:ge("3.20") and "-linux" or "-Linux") - end}) - add_urls("https://github.com/Kitware/CMake/releases/download/v$(version)-aarch64.tar.gz", {version = function (version) - return version .. "/cmake-" .. version .. (version:ge("3.20") and "-linux" or "-Linux") - end}) - add_versions("4.2.1", "3e178207a2c42af4cd4883127f8800b6faf99f3f5187dccc68bfb2cc7808f5f7") - else - add_urls("https://cmake.org/files/v$(version)-x86_64.tar.gz", {version = function (version) - return table.concat(table.slice((version):split('%.'), 1, 2), '.') .. "/cmake-" .. version .. (version:ge("3.20") and "-linux" or "-Linux") - end}) - add_urls("https://github.com/Kitware/CMake/releases/download/v$(version)-x86_64.tar.gz", {version = function (version) - return version .. "/cmake-" .. version .. (version:ge("3.20") and "-linux" or "-Linux") - end}) - add_versions("4.2.1", "c059bff1e97a2b6b5b0c0872263627486345ad0ed083298cb21cff2eda883980") + local function add_binary_urls(package, scheme_name) + local scheme = package + if scheme_name then + scheme = package:scheme(scheme_name) end - elseif is_host("windows") then - if os.arch() == "x64" then - add_urls("https://cmake.org/files/v$(version).zip", {excludes = {"*/doc/*"}, version = function (version) - return table.concat(table.slice((version):split('%.'), 1, 2), '.') .. "/cmake-" .. version .. (version:ge("3.20") and "-windows-x86_64" or "-win64-x64") - end}) - add_urls("https://github.com/Kitware/CMake/releases/download/v$(version).zip", {excludes = {"*/doc/*"}, version = function (version) - return version .. "/cmake-" .. version .. (version:ge("3.20") and "-windows-x86_64" or "-win64-x64") - end}) - add_versions("4.2.1", "dfc2b2afac257555e3b9ce375b12b2883964283a366c17fec96cf4d17e4f1677") - elseif os.arch() == "x86" then - add_urls("https://cmake.org/files/v$(version).zip", {excludes = {"*/doc/*"}, version = function (version) - return table.concat(table.slice((version):split('%.'), 1, 2), '.') .. "/cmake-" .. version .. (version:ge("3.20") and "-windows-i386" or "-win32-x86") - end}) - add_urls("https://github.com/Kitware/CMake/releases/download/v$(version).zip", {excludes = {"*/doc/*"}, version = function (version) - return version .. "/cmake-" .. version .. (version:ge("3.20") and "-windows-i386" or "-win32-x86") + if is_host("macosx") then + scheme:add("urls", "https://cmake.org/files/v$(version).tar.gz", {version = function (version) + return table.concat(table.slice((version):split('%.'), 1, 2), '.') .. "/cmake-" .. version .. (version:ge("3.20") and "-macos-universal" or "-Darwin-x86_64") end}) - add_versions("4.2.1", "696129556482da90293f9d64c1fa68dbe06b0ede80331d7da9aaa03aada6aecf") - elseif os.arch() == "arm64" then - add_urls("https://cmake.org/files/v$(version).zip", {excludes = {"*/doc/*"}, version = function (version) - return table.concat(table.slice((version):split('%.'), 1, 2), '.') .. "/cmake-" .. version .. "-windows-arm64" + scheme:add("urls", "https://github.com/Kitware/CMake/releases/download/v$(version).tar.gz", {version = function (version) + return version .. "/cmake-" .. version .. (version:ge("3.20") and "-macos-universal" or "-Darwin-x86_64") end}) - add_urls("https://github.com/Kitware/CMake/releases/download/v$(version).zip", {excludes = {"*/doc/*"}, version = function (version) - return version .. "/cmake-" .. version .. "-windows-arm64" - end}) - add_versions("4.2.1", "96b097ca3a019cd62839d4805958ad0163dd1adedcfbe578730d57c098aaf667") + scheme:add("versions", "4.2.1", "0bb18f295e52d7e9309980e361e79e76a1d8da67a1587255cbe3696ea998f597") + return true + elseif is_host("linux") then + if os.arch():find("arm64.*") then + scheme:add("urls", "https://cmake.org/files/v$(version)-aarch64.tar.gz", {version = function (version) + return table.concat(table.slice((version):split('%.'), 1, 2), '.') .. "/cmake-" .. version .. (version:ge("3.20") and "-linux" or "-Linux") + end}) + scheme:add("urls", "https://github.com/Kitware/CMake/releases/download/v$(version)-aarch64.tar.gz", {version = function (version) + return version .. "/cmake-" .. version .. (version:ge("3.20") and "-linux" or "-Linux") + end}) + scheme:add("versions", "4.2.1", "3e178207a2c42af4cd4883127f8800b6faf99f3f5187dccc68bfb2cc7808f5f7") + else + scheme:add("urls", "https://cmake.org/files/v$(version)-x86_64.tar.gz", {version = function (version) + return table.concat(table.slice((version):split('%.'), 1, 2), '.') .. "/cmake-" .. version .. (version:ge("3.20") and "-linux" or "-Linux") + end}) + scheme:add("urls", "https://github.com/Kitware/CMake/releases/download/v$(version)-x86_64.tar.gz", {version = function (version) + return version .. "/cmake-" .. version .. (version:ge("3.20") and "-linux" or "-Linux") + end}) + scheme:add("versions", "4.2.1", "c059bff1e97a2b6b5b0c0872263627486345ad0ed083298cb21cff2eda883980") + end + return true + elseif is_host("windows") then + if os.arch() == "x64" then + scheme:add("urls", "https://cmake.org/files/v$(version).zip", {excludes = {"*/doc/*"}, version = function (version) + return table.concat(table.slice((version):split('%.'), 1, 2), '.') .. "/cmake-" .. version .. (version:ge("3.20") and "-windows-x86_64" or "-win64-x64") + end}) + scheme:add("urls", "https://github.com/Kitware/CMake/releases/download/v$(version).zip", {excludes = {"*/doc/*"}, version = function (version) + return version .. "/cmake-" .. version .. (version:ge("3.20") and "-windows-x86_64" or "-win64-x64") + end}) + scheme:add("versions", "4.2.1", "dfc2b2afac257555e3b9ce375b12b2883964283a366c17fec96cf4d17e4f1677") + elseif os.arch() == "x86" then + scheme:add("urls", "https://cmake.org/files/v$(version).zip", {excludes = {"*/doc/*"}, version = function (version) + return table.concat(table.slice((version):split('%.'), 1, 2), '.') .. "/cmake-" .. version .. (version:ge("3.20") and "-windows-i386" or "-win32-x86") + end}) + scheme:add("urls", "https://github.com/Kitware/CMake/releases/download/v$(version).zip", {excludes = {"*/doc/*"}, version = function (version) + return version .. "/cmake-" .. version .. (version:ge("3.20") and "-windows-i386" or "-win32-x86") + end}) + scheme:add("versions", "4.2.1", "696129556482da90293f9d64c1fa68dbe06b0ede80331d7da9aaa03aada6aecf") + elseif os.arch() == "arm64" then + scheme:add("urls", "https://cmake.org/files/v$(version).zip", {excludes = {"*/doc/*"}, version = function (version) + return table.concat(table.slice((version):split('%.'), 1, 2), '.') .. "/cmake-" .. version .. "-windows-arm64" + end}) + scheme:add("urls", "https://github.com/Kitware/CMake/releases/download/v$(version).zip", {excludes = {"*/doc/*"}, version = function (version) + return version .. "/cmake-" .. version .. "-windows-arm64" + end}) + scheme:add("versions", "4.2.1", "96b097ca3a019cd62839d4805958ad0163dd1adedcfbe578730d57c098aaf667") + end + return true end - else - add_urls("https://github.com/Kitware/CMake/releases/download/v$(version)/cmake-$(version).tar.gz") - add_versions("4.2.1", "414aacfac54ba0e78e64a018720b64ed6bfca14b587047b8b3489f407a14a070") - is_precompiled = false end - if is_precompiled then - add_schemes("source") - on_scheme("source", function (package, scheme) - scheme:add("urls", "https://github.com/Kitware/CMake/releases/download/v$(version)/cmake-$(version).tar.gz") - scheme:add("versions", "4.2.1", "414aacfac54ba0e78e64a018720b64ed6bfca14b587047b8b3489f407a14a070") + local function add_source_urls(package, scheme_name) + local scheme = package + if scheme_name then + scheme = package:scheme(scheme_name) + end + scheme:add("urls", "https://github.com/Kitware/CMake/releases/download/v$(version)/cmake-$(version).tar.gz") + scheme:add("versions", "4.2.1", "414aacfac54ba0e78e64a018720b64ed6bfca14b587047b8b3489f407a14a070") + end + + if add_schemes then + add_schemes("binary", "source") + on_source(function (package) + add_binary_urls(package, "binary") + add_source_urls(package, "source") + end) + else + -- for compatibility with older xmake versions + on_source(function (package) + if add_binary_urls(package) then + package:data_set("scheme", "binary") + else + add_source_urls(package) + package:data_set("scheme", "source") + end end) end on_install("@linux", "@windows", "@msys", "@cygwin", "@macosx", function (package) local scheme = package:current_scheme() - if scheme:is_default() then + local scheme_name = scheme and scheme:name() or package:data("scheme") + if scheme_name and scheme_name == "binary" then raise("trigger failure when installing binaries, then we will fallback to install it from source tarball.") else import("core.base.option") |
