-
-
Notifications
You must be signed in to change notification settings - Fork 818
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
support custom searchname for package tarballs #1343
Comments
那还不如直接设置 filename,如果有设置,存储下来的也是这个 filename,搜索也是。。 add_urls("...", {filename = "xxx"})
add_urls("...", {filename = function (version) ... end}) |
其实之前是直接默认根据 packagename-version.extension 来拼的路径,只不过有些包 muslcc 这种,每个 url 还需要区分 arch ,所以后来重新改回了 从 url 中直接提取。。 而且自己拼的方式,很多 url 默认的filename 都会舍弃,导致search过程都要手动改名 我觉得更简单直接的方式,就是现有取 url 中 filename 的前提下,直接内部新增一个 packagename-version.extension 如果它存在,直接使用就行了,既能解决当前这个问题,也能避免改动 xmake-repo 中大量的 包定义,增加维护成本。 |
我改进过了,可以通过 xmake require --info zlib 看下 searchnames 优先找, packagename-version.extension,再从 filename(url) 找 github.com/bar/archives/v1.1.1.tar.gz -> bar-v1.1.1.tar.gz |
这里跟 github url 无关,根据 add_versions 选择的 version 。。自己内部规则拼接的,仅用于在 searchdirs 区分不同的 tar 包,避免冲突,具体名字请以 xrepo info zlib 里面的 searchnames 为准。。xmake 不会去解析 github url 实际的存储名,太耗时滞后。。 |
不需要解析github url,github里面所有repo都是这样设置的,例如 |
或者带v和不带v的版本都加到searchname里面 |
这需要特殊处理 github url,这种特定host的url的特殊处理我就不加了,这不是什么通用方案 尽管能解决的了 github url 问题,但gitlab gitee以及各种其他git url的archive url或者其他带有重定向的url,都有可能同样存在 v1.1.1.tar.gz这种无法区分包名的情况,不可能以后需要其他的url,都挨个硬编码特殊去处理 如果放到xmake-repo,维护起来也很蛋疼 所以只要知道大概规则就行了,name-version.ext 也不用每次去看 xrepo info 而且下载失败,也会自动提示 searchnames信息 |
这个先这样好了,只要能解决当前冲突问题就行了 |
你在什么场景下需要该功能?
xmake-repo中搜索本地包用的名字默认从url里面取,但github的url末尾和实际下载下来的名字并不相同。例如下载地址是github.com/foo/bar/archives/v1.1.1.tar.gz,下载的tarball名为bar-1.1.1.tar.gz,但xmake默认的搜索文件名是v1.1.1.gz,如果有两个包是同一版本这个搜索就会出问题。
描述可能的解决方案
提供一个
add_searchname
接口对每一个url手动设置searchname描述你认为的候选方案
add_urls("...", {version = function (version) ... end, searchname = function (version) ... end})
其他信息
最好可以对github做特殊适配,自动将v1.1.1.tar.gz转换成bar-1.1.1.tar.gz,不同于此规则的包再手动设置
The text was updated successfully, but these errors were encountered: