diff options
| author | ruki <[email protected]> | 2025-09-20 18:28:56 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2025-09-20 18:28:56 +0800 |
| commit | f621c95f5994a3acaacbed96f204c285f9b7449b (patch) | |
| tree | 9760babb97dcbf83c5f8728247b2283ec7fb3b7b | |
| parent | c991a3b06cc58769c1ff94a5e43637f2e95c52b9 (diff) | |
fix package extension
| -rw-r--r-- | xmake/modules/private/action/require/impl/actions/download.lua | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/xmake/modules/private/action/require/impl/actions/download.lua b/xmake/modules/private/action/require/impl/actions/download.lua index 979c17971..56d529fa5 100644 --- a/xmake/modules/private/action/require/impl/actions/download.lua +++ b/xmake/modules/private/action/require/impl/actions/download.lua @@ -34,6 +34,16 @@ import("net.proxy") import("devel.git") import("utils.archive") +-- get url extension +function _url_extension(url) + local extension = archive.extension(url) + if extension == "" then + -- maybe non-archive file, e.g. .exe, .sh, .. + extension = path.extension(url) + end + return extension +end + -- checkout codes from git function _checkout(package, url, sourcedir, opt) opt = opt or {} @@ -153,7 +163,7 @@ function _download(package, url, sourcedir, opt) if not packagefile then packagefile = url_filename(url) if not os.isfile(packagefile) then -- we need to be compatible with the old file names - packagefile = package:name() .. "-" .. package:version_str() .. archive.extension(packagefile) + packagefile = package:name() .. "-" .. package:version_str() .. _url_extension(packagefile) end end @@ -181,7 +191,7 @@ function _download(package, url, sourcedir, opt) os.cp(url, packagefile) else local localfile - local searchnames = {package:name() .. "-" .. package:version_str() .. archive.extension(url), + local searchnames = {package:name() .. "-" .. package:version_str() .. _url_extension(url), packagefile} -- match github name mangling https://github.com/xmake-io/xmake/issues/1343 @@ -267,6 +277,7 @@ function _download(package, url, sourcedir, opt) raise(errors or string.format("cannot extract %s, maybe missing extractor or invalid package file!", packagefile)) else -- if it is not archive file, we only need to create empty source directory and use package:originfile() + -- e.g. .exe, .sh os.tryrm(sourcedir) os.mkdir(sourcedir) end @@ -424,7 +435,7 @@ function main(package, opt) searchnames:insert(package:name() .. archive.extension(url_failed)) searchnames:insert(path.basename(url_filename(url_failed))) else - local extension = archive.extension(url_failed) + local extension = _url_extension(url_failed) if extension then searchnames:insert(package:name() .. "-" .. package:version_str() .. extension) end |
