diff options
| author | ruki <[email protected]> | 2023-02-23 20:39:59 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2023-02-23 20:39:59 +0800 |
| commit | 0c06f2833d498f3ebcc12b2f9e398af7e497ea09 (patch) | |
| tree | 3be4213f82db83b73e783d37e5dcc73a1374975a | |
| parent | 415d9e13ad6fc1431802a00b1697b7178adedd40 (diff) | |
| parent | 19c40899499596d33b7edb8600c0fe8ddbfb43fd (diff) | |
Merge pull request #3410 from xq114/dev
match github name mangling
3 files changed, 33 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 d12010723..182765e8a 100644 --- a/xmake/modules/private/action/require/impl/actions/download.lua +++ b/xmake/modules/private/action/require/impl/actions/download.lua @@ -28,7 +28,7 @@ import("core.package.package", {alias = "core_package"}) import("lib.detect.find_file") import("lib.detect.find_directory") import("private.action.require.impl.utils.filter") -import("private.action.require.impl..utils.url_filename") +import("private.action.require.impl.utils.url_filename") import("net.http") import("net.proxy") import("devel.git") @@ -156,6 +156,13 @@ function _download(package, url, sourcedir, opt) local localfile local searchnames = {package:name() .. "-" .. package:version_str() .. archive.extension(url), packagefile} + + -- match github name mangling https://github.com/xmake-io/xmake/issues/1343 + local github_name = url_filename.github_filename(url) + if github_name then + table.insert(searchnames, github_name) + end + for _, searchname in ipairs(searchnames) do localfile = find_file(searchname, core_package.searchdirs()) if localfile then diff --git a/xmake/modules/private/action/require/impl/utils/url_filename.lua b/xmake/modules/private/action/require/impl/utils/url_filename.lua index e17e8673b..c0d472e6d 100644 --- a/xmake/modules/private/action/require/impl/utils/url_filename.lua +++ b/xmake/modules/private/action/require/impl/utils/url_filename.lua @@ -18,8 +18,25 @@ -- @file url_filename.lua -- --- get filename from url -function main(url) +-- get raw filename +function raw_filename(url) local urlpath = url:split('?', {plain = true})[1] return path.filename(urlpath) end + +-- get filename from github name mangling +function github_filename(url) + local reponame = url:match("^https://github.com/[^/]-/([^/]-)/archive/") + if reponame then + local filename = raw_filename(url) + if filename:find("^v%d") then + filename = filename:match("^v(.+)") + end + return reponame .. "-" .. filename + end +end + +-- get filename from url +function main(url) + return raw_filename(url) +end diff --git a/xmake/modules/private/action/require/info.lua b/xmake/modules/private/action/require/info.lua index 8d140a7da..42c3ad9c5 100644 --- a/xmake/modules/private/action/require/info.lua +++ b/xmake/modules/private/action/require/info.lua @@ -163,6 +163,12 @@ function main(requires_raw) searchnames:insert(instance:name() .. "-" .. instance:version_str() .. extension) end searchnames:insert(url_filename(url)) + + -- match github name mangling https://github.com/xmake-io/xmake/issues/1343 + local github_name = url_filename.github_filename(url) + if github_name then + searchnames:insert(github_name) + end end end cprint(" -> ${color.dump.string_quote}searchnames${clear}: %s", table.concat(searchnames:to_array(), ", ")) |
