diff options
Diffstat (limited to 'core/xpack.lua')
| -rw-r--r-- | core/xpack.lua | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/core/xpack.lua b/core/xpack.lua index c41220dc2..5cbff58e8 100644 --- a/core/xpack.lua +++ b/core/xpack.lua @@ -21,13 +21,37 @@ xpack("xmake") before_package(function (package) import("net.http") import("utils.archive") + import("core.base.global") local format = package:format() if package:is_plat("windows") and (format == "nsis" or format == "zip") then local winenv = path.join(os.programdir(), "winenv") if os.isdir(winenv) then package:add("installfiles", path.join(winenv, "**"), {rootdir = path.directory(winenv)}) else - -- TODO download + local arch = package:arch() + local url_7z = "https://github.com/xmake-mirror/7zip/releases/download/19.00/7z19.00-" .. arch .. ".zip" + local url_curl = "https://curl.se/windows/dl-8.2.1_11/curl-8.2.1_11-win32-mingw.zip" + local archive_7z = path.join(package:buildir(), "7z.zip") + local archive_curl = path.join(package:buildir(), "curl.zip") + local tmpdir_7z = path.join(package:buildir(), "7z") + local tmpdir_curl = path.join(package:buildir(), "curl") + local winenv_bindir = path.join(package:buildir(), "winenv", "bin") + os.mkdir(winenv_bindir) + http.download(url_7z, archive_7z, {insecure = global.get("insecure-ssl")}) + if archive.extract(archive_7z, tmpdir_7z) then + os.cp(path.join(tmpdir_7z, "*"), winenv_bindir) + else + raise("extract 7z.zip failed!") + end + http.download(url_curl, archive_curl, {insecure = global.get("insecure-ssl")}) + if archive.extract(archive_curl, tmpdir_curl) then + os.cp(path.join(tmpdir_curl, "*", "bin", "*.exe"), winenv_bindir) + os.cp(path.join(tmpdir_curl, "*", "bin", "*.crt"), winenv_bindir) + else + raise("extract curl.zip failed!") + end + winenv = path.directory(winenv_bindir) + package:add("installfiles", path.join(winenv, "**"), {rootdir = path.directory(winenv)}) end end end) |
