Невозможно получить Eigen с помощью bazel: 406 Недопустимо - PullRequest
6 голосов
/ 26 марта 2020

При попытке загрузить 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"
)

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]

Я работал уже несколько недель, поэтому мне интересно, если проблема исходит от Базеля или от сервер GitLab?

Ответы [ 2 ]

1 голос
/ 26 марта 2020

У меня нет реального решения вашей проблемы, но некоторые исправления (протестированы с Bazel 2.2.0):

Исправление 1: используйте зеркала

Хост 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",
)

Вы также можете добавить оба 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",
    ],
)

Исправление 2: Держите локальную копию

Используйте --distdir.

Поместите eigen-3.3.7.tar.gz в каталог на вашем компьютере и используйте --disdir.

bazel build --distdir=X:\Dropbox\artifacts //...

Сводка

Так как вы не хотите, чтобы ваш тупой веб-сервер никогда не блокировался, вы должны реализовать некоторые стратегии о том, как продолжать работать, когда что-то подобное случается.

Тем не менее, было бы интересно узнать, почему это 406 происходит. Вы также можете использовать сетевой сниффер (например, Wireshark), чтобы получить, возможно, более подробную информацию о том, что запрос get не выполнен. Я попытался узнать больше, используя Wireshark, но это соединение https, и все зашифровано - очень плохо.

0 голосов
/ 22 апреля 2020

Я также столкнулся с этой проблемой. Я не смог найти никаких открытых проблем для этого на базальной стороне, поэтому я открыл один здесь .

Спасибо @fenollp за создание репродукции.

...