diff options
| author | ruki <[email protected]> | 2022-10-23 22:25:05 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2022-10-23 22:25:05 +0800 |
| commit | 43e5110ea78813523d86bebcb43787e528538b94 (patch) | |
| tree | 8b50966b173a14238dfae05860769f34b2273178 | |
| parent | 605b8e3e0bc87dc70c6baa209ddd32fa05f65657 (diff) | |
improve searchnames #2958
| -rw-r--r-- | xmake/modules/private/action/require/impl/actions/download.lua | 21 | ||||
| -rw-r--r-- | xmake/modules/private/action/require/info.lua | 13 |
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(), ", ")) |
