archlinuxcn / lilac

Lilac is the build bot for archlinuxcn
GNU General Public License v3.0
113 stars 40 forks source link

自动删除 hashsum 不对的源码 #141

Closed petronny closed 2 years ago

petronny commented 4 years ago

如题, 虽然这么做不对但是有好多上游偷偷换了文件的情况。。。

感觉只要报错 log 中有 One or more files did not pass the validity check!

就可以自动运行 cleanup-package-files 了

(另一种 vcs 上游变了的情况也类似,不过报错信息忘了)

lilydjwg commented 4 years ago

你觉得这些检验和在那里是干什么的啊……如果它变了,那就打包新版本啊。 你应当尽量从上游获取校验和,而不是自己生成它们(虽然很多上游都做不到)。

petronny commented 4 years ago

不是,情况是这样。比如原来的1.0-1的PKGBUILD是对v1.0.tar.gz算的hashsum,然后正常打包了。

之后上游偷偷换了v1.0.tar.gz,然后AUR上的PKGBUILD也发现并更新了1.0-2,此时应当重新打包1.0-2

然而此时本地有v1.0.tar.gz的缓存,不会下载新版本,就会报One or more files did not pass the validity check!的错误,此时就必须手动运行 cleanup-package-files 把 v1.0.tar.gz 删了。

我是觉得最后这个手动运行 cleanup-package-files 可以自动化

lilydjwg commented 4 years ago

如果你遇到这样的无良上游,解决办法就是在文件名里带上时间戳。

lilydjwg commented 4 years ago

说起来,什么不靠谱的上游会经常这么干啊。我感觉这种包 drop 掉是更好的选择。

petronny commented 4 years ago

大家都是偶尔会这样。。。但是包多了这种情况就多了。。。

另外还有个例子是会下载一个eula.html当源码(license),然而这个网页老变

lilydjwg commented 4 years ago

另外还有个例子是会下载一个eula.html当源码(license),然而这个网页老变

那就在 pre_build 里把它删掉啦。

petronny commented 4 years ago

那个删掉是没问题。。。

但是其他总会有出问题的,另外还有 vcs 上游变了的情况,还是会遇到一些的

lilydjwg commented 4 years ago

vcs 上游变了是另一个问题。

要不你做一个函数,把对不上的删掉,但是别的文件别删。cleanup-package-files 是会把指定包的所有未跟踪文件都删掉的,而且它的设计目的就是给维护者手动调用。lilac 本来对文件有权限,不需要用它来删。

petronny commented 4 years ago

我目前打算把这个做成makepkg -od的某种改进,如果有报错的就删了,然后在后面没有--holdverarchbuild运行时下载