Apollo项目Bazel依赖缓存目录配置指南
【免费下载链接】apollo An open autonomous driving platform 项目地址: https://gitcode.com/gh_mirrors/apo/apollo
前言
在Apollo自动驾驶平台开发过程中,Bazel作为核心构建工具发挥着重要作用。然而在实际开发中,特别是在网络受限的环境中,Bazel隐式依赖项的获取往往会成为阻碍开发效率的关键问题。本文将详细介绍如何为Apollo项目准备Bazel依赖缓存目录,帮助开发者解决网络依赖问题。
Bazel依赖缓存目录的作用
Bazel构建系统在首次运行时需要从网络获取多种隐式依赖项,这些依赖包括但不限于:
- 各种工具链文件
- 协议缓冲区编译器
- 测试框架依赖
- 其他构建必需组件
在封闭开发环境或网络不稳定的情况下,这些依赖的获取可能导致构建失败或耗时过长。通过预先准备依赖缓存目录,我们可以:
- 避免每次构建时的网络请求
- 确保开发环境的一致性
- 提高构建过程的可靠性
- 显著减少构建时间
准备工作
在开始配置前,请确保:
- 已正确安装并配置Apollo开发环境
- 已启动Apollo开发容器
- 确认当前用户对目标目录有读写权限
使用预构建的依赖包
Apollo项目为常用的Bazel版本提供了预构建的依赖包,这是最简便的配置方法。
步骤1:确定Bazel版本
在Apollo容器中执行以下命令查看当前Bazel版本:
bazel version
示例输出:
Build label: 3.5.0
Build target: bazel-out/aarch64-opt/bin/src/main/java/com/google/devtools/build/lib/bazel/BazelServer_deploy.jar
Build time: Wed Sep 2 21:11:43 2020 (1599081103)
记录输出的"Build label"值(本例中为3.5.0),后续步骤中将用BAZEL_VERSION指代此版本号。
步骤2:下载对应版本的依赖包
执行以下命令下载与Bazel版本匹配的依赖包:
wget https://apollo-system.cdn.bcebos.com/archive/bazel_deps/bazel-dependencies-${BAZEL_VERSION}.tar.gz
步骤3:解压到缓存目录
执行以下命令序列完成解压和配置:
# 解压下载的压缩包
tar xzf bazel-dependencies-${BAZEL_VERSION}.tar.gz
# 加载Apollo环境变量
source ${APOLLO_ROOT_DIR}/cyber/setup.bash
# 将依赖文件移动到缓存目录
mv bazel-dependencies-${BAZEL_VERSION}/* "${APOLLO_BAZEL_DIST_DIR}"
自定义构建依赖包
如果您的Bazel版本不在Apollo提供的预构建包中,可以按照以下方法自行构建依赖包。
步骤1:获取Bazel源代码
# 克隆指定版本的Bazel源码
git clone --depth=1 -b "${BAZEL_VERSION}" https://github.com/bazelbuild/bazel bazel.git
cd bazel.git
步骤2:构建依赖包
# 构建依赖包
bazel build @additional_distfiles//:archives.tar
步骤3:配置缓存目录
# 确保环境变量已设置
source ${APOLLO_ROOT_DIR}/cyber/setup.bash
# 创建缓存目录(如不存在)
[[ -d "${APOLLO_BAZEL_DIST_DIR}" ]] || mkdir -p "${APOLLO_BAZEL_DIST_DIR}"
# 解压依赖到缓存目录
tar xvf bazel-bin/external/additional_distfiles/archives.tar \
-C "${APOLLO_BAZEL_DIST_DIR}" --strip-components=3
验证配置
完成上述步骤后,您可以通过以下方式验证配置是否成功:
- 检查缓存目录是否包含必要的依赖文件
- 执行简单的Bazel命令(如
bazel query //...)观察是否仍会尝试下载依赖 - 在离线环境下尝试构建Apollo项目
注意事项
- 版本匹配:Bazel依赖包与Bazel版本严格对应,不可混用
- 更新机制:当升级Bazel版本后,必须重新准备对应的依赖包
- 存储空间:依赖包可能占用较大空间,建议预留至少500MB空间
- 环境隔离:不同项目的Bazel依赖应分开存放,避免冲突
常见问题解决
问题1:构建时仍尝试下载依赖
可能原因:
- 缓存目录路径配置不正确
- 环境变量未正确加载
解决方案:
- 确认
APOLLO_BAZEL_DIST_DIR变量已正确设置 - 检查缓存目录权限
- 重启终端或容器使环境变量生效
问题2:依赖包版本不匹配
症状:
- 构建过程中出现奇怪的错误
- 报错信息提及版本冲突
解决方案:
- 确认Bazel版本与依赖包版本一致
- 清理Bazel缓存(
bazel clean --expunge) - 重新准备正确版本的依赖包
结语
通过合理配置Bazel依赖缓存目录,开发者可以显著提升在受限网络环境下的开发体验。本文介绍了两种配置方法:使用预构建包和自定义构建,开发者可根据实际情况选择适合的方式。正确的依赖管理是保证Apollo项目顺利构建的重要前提,值得投入时间进行合理配置。
【免费下载链接】apollo An open autonomous driving platform 项目地址: https://gitcode.com/gh_mirrors/apo/apollo
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



