Bazel远程缓存异常:--define/--action_env为何仍获取错误构建产物?
Bazel远程缓存与构建配置匹配问题
核心预期验证
使用--define和--action_env参数为Bazel指定不同构建配置时,是否应当实现:参数相同时复用远程缓存产物,参数变更时触发重新构建,从而避免复用不匹配的缓存产物?
当前问题详情
远程缓存被基于不兼容glibc版本构建的产物污染,使用该远程缓存构建时出现以下链接错误:
... bazel-out/k8-opt-exec-2B5CBBC6/bin/external/bzlws/generators/cpp/cpp: /lib64/libc.so.6: version `GLIBC_2.34' not found (required by bazel-out/k8-opt-exec-2B5CBBC6/bin/external/bzlws/generators/cpp/cpp)
- 不使用远程缓存,或在与缓存产物glibc版本匹配的系统上构建时,无此错误,可确定问题源于缓存。
- 已通过
--execution_log_json_file确认--action_env参数已生效,修改该参数会延长构建时间,但仍然出现上述链接错误。
待解答疑问
- 是否存在
--action_env触发了构建,但链接阶段仍从缓存中获取依赖于glibc的产物的情况? - Bazel的缓存匹配逻辑具体是怎样的?哪些因素会影响缓存键的生成?
内容的提问来源于stack exchange,提问作者frans
相关产品推荐
相关产品推荐

