You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Bazel中为rules_foreign_cc实现封闭性autotools构建遇阻

问题:rules_foreign_cc构建autotools封闭环境时runfiles路径失效

背景

  • 目标是为基于autotools的项目搭建rules_foreign_cc封闭构建环境,目前foreign_cc原生不支持autotools的封闭构建
  • 使用rules_perl包装autotools的Shell/Perl脚本,为foreign_cc定义配套工具链
  • rules_perl会将Perl脚本封装在一个小型Shell脚本中,该脚本依赖相对路径查找runfiles来配置Perl环境并调用目标脚本

核心问题

foreign_cc的configure_make规则会创建目录,将工具链命令(即rules_perl封装后的Shell脚本)的软链接放入该目录并添加至PATH,但通过软链接调用脚本时,脚本无法通过相对路径找到对应的runfiles,导致执行失败。

已尝试的方案及问题

  1. 临时方案:解析软链接获取实际路径
    考虑在封装的Shell脚本中解析软链接得到脚本实际路径,以此定位runfiles,但希望借助Bazel的依赖追踪能力实现更规范的解决方案。

  2. 修改foreign_cc代码枚举runfiles
    尝试通过工具目标的default_runfiles属性枚举runfiles,但未生效,推测tool.target.default_runfiles.files.to_list()返回空列表。原因在于foreign_cc并非通过Bazel创建软链接,而是自行生成脚本创建,且该脚本未处理runfiles的软链接逻辑。

更新发现与下一步计划

  • 验证结论:Bazel中使用工具链的规则无法直接访问工具链自身的runfiles
  • 计划方案:在工具链规则中扩展所有runfiles路径,将其保存至工具链提供者中,后续尝试实现该方案

内容的提问来源于stack exchange,提问作者Mike

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 17:22:38