summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2025-09-20 18:28:56 +0800
committerruki <[email protected]>2025-09-20 18:28:56 +0800
commitf621c95f5994a3acaacbed96f204c285f9b7449b (patch)
tree9760babb97dcbf83c5f8728247b2283ec7fb3b7b
parentc991a3b06cc58769c1ff94a5e43637f2e95c52b9 (diff)
fix package extension
-rw-r--r--xmake/modules/private/action/require/impl/actions/download.lua17
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