0

我正在尝试在 Centos 7.5 上构建 Stripe 的 Sorbet 二进制文件,并且安装了 bazel 0.28.1。

我尝试使用 构建bazel build //main:sorbet --config=dbg,但失败了:

WARNING: The following configs were expanded more than once: [debugsymbols]. 
For repeatable flags, repeats are counted twice and may lead to unexpected behavior.
INFO: Invocation ID: 1b2a6940-59ff-419f-ae57-f6e4129c2102
ERROR: /data/home/elemental/sorbet/main/BUILD:9:1: every rule of type cc_binary 
implicitly depends upon the target '@llvm_toolchain//:toolchain',
but this target could not be found because of: 
  no such package '@llvm_toolchain//': Traceback (most recent call last):
...

看起来我只是缺少 llvm 和 llvm-toolset-7,但安装它们并没有帮助。我错过了什么?

4

1 回答 1

2

需要修改的位置其实是https://github.com/DarkDimius/bazel-toolchain/blob/dp-srb-now/toolchain/internal/llvm_distributions.bzl#L52

Sorbet 需要 LLVM 8.0 来构建(因为我们正在使用 C++ 语言和标准库的一些最新部分),因此我们下载 LLVM 来获取我们开发的工具链。

从http://releases.llvm.org/可以看出,LLVM 不再发布 CentOS 构建,因此,我希望您在 ubuntu docker 容器中构建它比使用自定义版本更容易llvm.

或者,您可以尝试传递--crosstool_top=@bazel_tools//tools/cpp:toolchain --host_crosstool_top=@bazel_tools//tools/cpp:toolchain以强制我们的构建使用您本地的 C++ 工具链,而不是我们尝试下载的工具链。请注意,如果您的工具链不够新,它可能无法编译 Sorbet。我们也没有在除 LLVM8 之外的任何其他工具链上测试性能,并且我们在过去使用 GCC 编译时看到了大量的回归。

于 2019-08-07T06:31:01.347 回答