-
-
Notifications
You must be signed in to change notification settings - Fork 808
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
package不定义版本(add_versions) #930
Comments
加version的目的就是为了 通过 checksum 确保下载的完整性,可靠性。 去掉这些 就会存在很多的不可靠因素在里面,安全性也没法得到保证,包源可以被随意篡改。 暂时不会考虑去掉,不过目前是支持通过set_urls 为git url,然后在 add_requires("zlib master")里面通过指定分支的方式来拉取最新commit,这种是可以没有versions的 如果你非要去掉,可以有git branch/tags的方式来动态拉取,跳过校验 由于git下载失败和完整性 由git会保证,所以目前开放了这种模式,但是git源自身的可靠性只能自己保证了 而对于tar包 目前不考虑去除version shasum校验 |
嗯,有checksum肯定是安全的。 不过我们是内网环境,可以保障包的可靠性。 如果通过add_require的config启用呢?比如add_require("zlib", {unsafe=true}) |
这倒也不用 只需要repo里面不设置 versions 那么这个package就是不安全的包,包的安全可靠性由 repo的拥有者维护,像 xmake-repo官方仓库 提交的包 肯定是有 versions 所以是安全可靠的 如果是自建仓库 那就自己决定是否要完全可靠好了,我可以考虑搞成没 versions的包直接尝试下载安装 不过这样还是有一些限制的,比如版本语义的匹配就不行了 >= 1.0 这种,只能对写死固定版本的生效 另外对于tar是否下载成功,只能依赖curl wget的ret code,如果真的中途断掉,尤其是走了http chunked这种情况,不到下载完不知道实际大小的 ,不确定curl是否会正常报错 那就只能当正常下载好了 多少会存在解压安装失败的问题 |
这个我支持了,不过多少还是会有些局限的,因为没有了版本列表和checksum,所以下载后的包 是无法确认完整性的,缓存会失效。每次安装都需要重新下载一遍。 xmake update -s dev |
👍有用! |
我dev加了个参数,可以让用户忽略版本列表和sha校验,这样可以指定任意版本安装,即使包定义版本列表中没有这个版本 add_requires("curl 7.67.0", {verify = false}) 详情见: |
你在什么场景下需要该功能?
add_versions在某些情况会是累赘:
我的场景下如下:我们给公司搭二进制仓库,作模块的复用;为保证软件构建的可复现,我们会在add_requires的时候指到固定版本号。
我们期望的是一个模块通过持续集成发布后,就可以告知别人可用,但实际不是,因为还需要更新repo去新增版本,还需要通知用户repo -u下。
描述可能的解决方案
是否可以考虑这样的规则:是否定义add_versions是可选的
The text was updated successfully, but these errors were encountered: