summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2022-10-23 22:25:05 +0800
committerruki <[email protected]>2022-10-23 22:25:05 +0800
commit43e5110ea78813523d86bebcb43787e528538b94 (patch)
tree8b50966b173a14238dfae05860769f34b2273178
parent605b8e3e0bc87dc70c6baa209ddd32fa05f65657 (diff)
improve searchnames #2958
-rw-r--r--xmake/modules/private/action/require/impl/actions/download.lua21
-rw-r--r--xmake/modules/private/action/require/info.lua13
2 files changed, 28 insertions, 6 deletions
diff --git a/xmake/modules/private/action/require/impl/actions/download.lua b/xmake/modules/private/action/require/impl/actions/download.lua
index a70b712fc..8eca9c973 100644
--- a/xmake/modules/private/action/require/impl/actions/download.lua
+++ b/xmake/modules/private/action/require/impl/actions/download.lua
@@ -55,7 +55,15 @@ function _checkout(package, url, sourcedir, url_alias)
end
-- we can use local package from the search directories directly if network is too slow
- local localdir = find_directory(package:name() .. archive.extension(url), core_package.searchdirs())
+ local localdir
+ local searchnames = {package:name() .. archive.extension(url),
+ path.basename(url_filename(url))}
+ for _, searchname in ipairs(searchnames) do
+ localdir = find_directory(searchname, core_package.searchdirs())
+ if localdir then
+ break
+ end
+ end
if localdir and os.isdir(path.join(localdir, ".git")) then
git.clean({repodir = localdir, force = true, all = true})
git.reset({repodir = localdir, hard = true})
@@ -308,7 +316,16 @@ function main(package)
local searchnames = hashset.new()
for _, url_failed in ipairs(urls_failed) do
cprint(" ${yellow}- %s", url_failed)
- searchnames:insert(url_filename(url_failed))
+ if git.checkurl(url_failed) then
+ searchnames:insert(package:name() .. archive.extension(url_failed))
+ searchnames:insert(path.basename(url_filename(url_failed)))
+ else
+ local extension = archive.extension(url_failed)
+ if extension then
+ searchnames:insert(package:name() .. "-" .. package:version_str() .. extension)
+ end
+ searchnames:insert(url_filename(url_failed))
+ end
end
cprint("to the local search directories: ${bright}%s", table.concat(table.wrap(core_package.searchdirs()), path.envsep()))
cprint(" ${bright}- %s", table.concat(searchnames:to_array(), ", "))
diff --git a/xmake/modules/private/action/require/info.lua b/xmake/modules/private/action/require/info.lua
index 270316ac9..8d140a7da 100644
--- a/xmake/modules/private/action/require/info.lua
+++ b/xmake/modules/private/action/require/info.lua
@@ -154,11 +154,16 @@ function main(requires_raw)
local searchnames = hashset.new()
for _, url in ipairs(instance:urls()) do
url = filter.handle(url, instance)
- local extension = archive.extension(url)
- if extension then
- searchnames:insert(instance:name() .. "-" .. instance:version_str() .. extension)
+ if git.checkurl(url) then
+ searchnames:insert(instance:name() .. archive.extension(url))
+ searchnames:insert(path.basename(url_filename(url)))
+ else
+ local extension = archive.extension(url)
+ if extension then
+ searchnames:insert(instance:name() .. "-" .. instance:version_str() .. extension)
+ end
+ searchnames:insert(url_filename(url))
end
- searchnames:insert(url_filename(url))
end
cprint(" -> ${color.dump.string_quote}searchnames${clear}: %s", table.concat(searchnames:to_array(), ", "))