同步操作将从 ApolloAuto/apollo 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
本文档描述了在 Apollo 项目中准备 Bazel 的依赖缓存目录 (Distribution Directory) 的方法。
根 据Bazel 官方指南:在封闭环境中运行 Bazel 的说明,Bazel 的隐式依赖项是在 Bazel 初次运行的时候从网络上拉取的。然而,即使所 有在 WORKSPACE 中指定的依赖项均已到位,这在封闭环境或者网络连接不稳定的状况下依 然会造成问题。
为便利国内开发者,对 Apollo 中使用到的各 Bazel 版本,Apollo 均提供与之对应的 Bazel 隐式依赖压缩包文件。请注意,对不同版本的 Bazel 来说,其隐式依赖项不尽相同 。当 Bazel 版本更新后,请务必按照本文档描述的方法,重新执行一遍。
接下来,我们先熟悉把 Apollo 提供的 Bazel 隐式依赖压缩包解压到依赖缓存目录的流程 。
bazel version
确定 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 timestamp: 1599081103
Build timestamp as int: 1599081103
在本示例中的 Bazel 版本为3.5.0
。在以下行文中,我们将以BAZEL_VERSION
指代之。
wget https://apollo-system.cdn.bcebos.com/archive/bazel_deps/bazel-dependencies-${BAZEL_VERSION}.tar.gz
${APOLLO_BAZEL_DIST_DIR}
指代的 Bazel 依赖缓存目录tar xzf bazel-dependencies-${BAZEL_VERSION}.tar.gz
source ${APOLLO_ROOT_DIR}/cyber/setup.bash
mv bazel-dependencies-${BAZEL_VERSION}/* "${APOLLO_BAZEL_DIST_DIR}"
如果您需要的 Bazel 版本 Apollo 未能提供,除了 在GitHub Issues 页 提交 Issue 外 ,您还可以通过如下方法在一台网络连接良好的机器上自己动手构建:
# 克隆对应分支的Bazel源码
git clone --depth=1 -b "${BAZEL_VERSION}" https://github.com/bazelbuild/bazel bazel.git
cd bazel.git
# 构建对应的Bazel隐式依赖压缩文件
bazel build @additional_distfiles//:archives.tar
# 确保${APOLLO_BAZEL_DIST_DIR} 变量已定义,且对应的目录存在
source ${APOLLO_ROOT_DIR}/cyber/setup.bash
[[ -d "${APOLLO_BAZEL_DIST_DIR}" ]] || mkdir -p "${APOLLO_BAZEL_DIST_DIR}"
# 将与该Bazel版本对应的各隐式依赖项全部解压到Bazel依赖缓存目录中
tar xvf bazel-bin/external/additional_distfiles/archives.tar \
-C "${APOLLO_BAZEL_DIST_DIR}" --strip-components=3
然后,你就可以在 Apollo 容器中顺利执行./apollo.sh build
,./apollo.sh test
等
命令而无需担心依赖项拉不下来的问题了。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。