上一篇 Envoy bazel 学习 & 踩坑 中记录了,bazel 一个很重要的功能就是管理依赖项。我们只需要申明依赖项的来源,bazel 会自动去获取。
听上去是挺美好的,然而现实中的网络环境确实残酷的。这不,最近就踩坑了。
前两天编译 Envoy 的时候,开启了 WASM,就需要下载 v8 那个依赖项。那个依赖项死活下载不了,在开发机上,每次下载完成的长度都少一大截,通不过验证。
不过,在本地浏览器中下载的文件是正常的,就想着 hack 一下他的缓存,然而这种内部实现,是没有文档的。折腾了一番,搞定了,记录一笔的。
bazel 的依赖项缓存,是按照 sha 来的,比如如下这个例子:
1 | boringssl = dict( |
首先缓存目录是:~/.cache/bazel/_bazel_doujiang24/cache/repos/v1/content_addressable/
,其中的 doujiang24
每个环境会不一样。
然后${version}.tar.gz
文件会缓存在 sha256/$sha256/file
,$sha256
也就是上述配置中申明的。
bazel 也就是通过类似的方式来查找,校验缓存的。
1 | sha256sum sha256/e141448cf6f686b6e9695f6b6459293fd602c8d51efe118a83106752cf7e1280/file |
需要 hack 的时候,通过写入对应的 file
文件即可。