无法使用 bazel 获取特征:406 不可接受

pia*_*ton 7 eigen gitlab bazel

尝试下载 Eigen 时

http_archive(
    name = "eigen",
    strip_prefix = "eigen-3.3.7",
    sha256 = "d56fbad95abf993f8af608484729e3d87ef611dd85b3380a8bad1d5cbc373a57",
    urls = [
        "https://gitlab.com/libeigen/eigen/-/archive/3.3.7/eigen-3.3.7.tar.gz"
    ],
    build_file = "//third_party:eigen.BUILD"
)
Run Code Online (Sandbox Code Playgroud)

bazel fetch 产生错误

WARNING: Download from https://gitlab.com/libeigen/eigen/-/archive/3.3.7/eigen-3.3.7.tar.gz failed: class com.google.devtools.build.lib.bazel.repository.downloader.UnrecoverableHttpException GET returned 406 Not Acceptable
ERROR: An error occurred during the fetch of repository 'eigen':
   java.io.IOException: Error downloading [https://gitlab.com/libeigen/eigen/-/archive/3.3.7/eigen-3.3.7.tar.gz]
Run Code Online (Sandbox Code Playgroud)

我已经工作了几个星期,所以我想知道问题是来自 bazel 还是来自 GitLab 服务器?

Ver*_*ahn 1

我对你的问题没有真正的解决方案,但有一些修复(使用 Bazel 2.2.0 测试):

方法一:利用镜子

招待eigen自己

我现在使用自己的网络服务器来托管eigen

http_archive(
    name = "eigen",
    build_file = "//:eigen.BUILD",
    sha256 = "d56fbad95abf993f8af608484729e3d87ef611dd85b3380a8bad1d5cbc373a57",
    strip_prefix = "eigen-3.3.7",
    url = "http://vertexwahn.de/artifacts/eigen-3.3.7.tar.gz",
)
Run Code Online (Sandbox Code Playgroud)

您还可以添加两者urls

http_archive(
    name = "eigen",
    build_file = "//:eigen.BUILD",
    sha256 = "d56fbad95abf993f8af608484729e3d87ef611dd85b3380a8bad1d5cbc373a57",
    strip_prefix = "eigen-3.3.7",
    urls = [
        "https://gitlab.com/libeigen/eigen/-/archive/3.3.7/eigen-3.3.7.tar.gz",
        "http://vertexwahn.de/artifacts/eigen-3.3.7.tar.gz",
    ],
)
Run Code Online (Sandbox Code Playgroud)

修复 2:保留本地副本

利用--distdir.

eigen-3.3.7.tar.gz其放入计算机上的目录中并使用--disdir.

bazel build --distdir=X:\Dropbox\artifacts //...
Run Code Online (Sandbox Code Playgroud)

概括

由于您不希望被愚蠢的网络服务器阻止,因此您应该实施一些策略来了解在发生此类情况时如何继续工作。

尽管如此,找出为什么会出现 406 错误还是很有趣的。如果获取请求失败,您还可以使用网络嗅探器(例如 Wireshark)来获取更多详细信息。我尝试使用 Wireshark 查找更多信息,但它是 https 连接,并且所有内容都已加密 - 太糟糕了。

  • 拟议的修复 1 的一个问题是 bazel 遇到来自 406 的不可恢复错误。我已经使用镜像类似地解决了这个问题,但必须注释掉 gitlab URL 才能继续我的构建。 (2认同)