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

Bazel中CMake无法下载依赖,手动执行正常的问题求助

排查Bazel构建时CMake无法下载onnxruntime的问题

核心排查方向

1. Bazel沙箱网络限制

Bazel默认启用沙箱机制,会隔离构建过程的网络访问,这是最可能的原因——手动执行命令在宿主环境不受沙箱限制,所以能成功下载。

  • 临时验证:执行构建时禁用沙箱:
    bazel build --no-sandbox //your:target
    
    如果下载成功,说明沙箱是问题根源。
  • 解决方案:
    • 放宽沙箱网络限制:在项目根目录的.bazelrc中添加:
      build --sandbox_network=allow
      
      注意:此设置会允许所有构建动作访问网络,需权衡安全性。
    • 预先下载依赖包:通过Bazel的http_archive在WORKSPACE中拉取onnxruntime v1.16.2,再让CMake使用本地文件。示例:
      在WORKSPACE中添加:
      http_archive(
          name = "onnxruntime",
          urls = ["https://path/to/onnxruntime-v1.16.2.tgz"],
          sha256 = "对应的哈希值",
          build_file = "@//:onnxruntime.BUILD",
      )
      
      然后在cmake_external规则中通过CMAKE_ARGS指定本地路径:
      cmake_external(
          name = "onnxruntime_extensions",
          ...
          cmake_args = [
              "-DONNXRUNTIME_DOWNLOAD_URL=file://$(location @onnxruntime//:package)",
              ...
          ],
          deps = ["@onnxruntime//:package"],
      )
      

2. 环境变量差异

宿主环境的代理、SSL证书配置未传递到Bazel构建环境:

  • 验证:对比手动执行CMake时的环境变量和Bazel构建时的环境变量。可通过--verbose_failures查看Bazel中CMake的执行环境:
    bazel build --verbose_failures //your:target
    
  • 解决方案:在构建时传递必要的环境变量,比如代理:
    bazel build --action_env=HTTP_PROXY=$HTTP_PROXY --action_env=HTTPS_PROXY=$HTTPS_PROXY //your:target
    
    或在.bazelrc中持久化配置:
    build --action_env=HTTP_PROXY
    build --action_env=HTTPS_PROXY
    

3. MacOS系统权限限制

Bazel可能未被授予网络访问权限:

  • 打开系统设置 > 隐私与安全性 > 网络访问,检查Bazel是否在允许列表中,若未添加则手动勾选。

4. rules_foreign_cc配置问题

  • 检查cmake_external规则是否意外设置了禁用下载的参数(如disable_downloads = True),确保没有限制CMake的下载行为。
  • 确认rules_foreign_cc依赖的CMake版本确实为3.26.4,可通过bazel query @rules_foreign_cc_dependencies//:cmake验证版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 14:02:22