bazel fetch //... ничего не делает для файлов BUILD и WORKSPACE

Я не могу заставить Базель скачивать и создавать внешние зависимости.

Может быть, я упускаю что-то очевидное здесь,
но давайте возьмем gtest В качестве примера.
В корне моего рабочего пространства у меня есть gtest.BUILD а также WORKSPACE,

Они определены как:

gtest.BUILD:

cc_library(
    name = "main",
    srcs = glob(
        ["src/*.cc"],
        exclude = ["src/gtest-all.cc"]
    ),
    hdrs = glob([
        "include/**/*.h",
        "src/*.h"
    ]),
    copts = ["-Iexternal/gtest/include"],
    linkopts = ["-pthread"],
    visibility = ["//visibility:public"],
)

РАБОЧАЯ СРЕДА:

new_http_archive(
    name = "gtest",
    url = "https://github.com/google/googletest/archive/release-1.7.0.zip",
    build_file = "gtest.BUILD",
    strip_prefix = "googletest-release-1.7.0",
)

Я пытаюсь использовать gtest в моем другом коде, но внешней зависимости не существует.
Когда я бегу bazel fetch //... это ничего не делает.

Я пытаюсь следовать документации Bazel о внешних зависимостях,
и я не могу понять, что я оставляю Какие-нибудь мысли?

Я заглянул внутрь $(bazel info output_base)/external,
но я не вижу там никаких построенных зависимостей.

1 ответ

Решение

Вполне возможно, что ничего в вашем текущем рабочем пространстве //... зависит от любой цели в @gtest//...так работает bazel fetch //... не говорит Bazel, что он должен скачать @gtest,

$ bazel fetch //...
Extracting Bazel installation...
Starting local Bazel server and connecting to it...
...........
$

Если вы попытаетесь запустить bazel fetch @gtest//... непосредственно, он загрузит архив как ожидалось:

$ bazel fetch @gtest//...
INFO: SHA256 (https://github.com/google/googletest/archive/release-1.7.0.zip) = b58cb7547a28b2c718d1e38aee18a3659c9e3ff52440297e965f5edffe34b6d0
Building: no action

Теперь, если вы добавите цель, которая зависит от @gtest//:main и беги bazel fetch //... опять загрузится @gtest:

$ bazel clean --expunge
INFO: Starting clean (this may take a while). Consider using --async if the clean takes more than several minutes.

$ cat BUILD
filegroup(
    name = "gtest",
    srcs = ["@gtest//:main"],
)

$ bazel fetch //...
Starting local Bazel server and connecting to it...
..........
INFO: SHA256 (https://github.com/google/googletest/archive/release-1.7.0.zip) = b58cb7547a28b2c718d1e38aee18a3659c9e3ff52440297e965f5edffe34b6d0
Building: no action

$ ls $(bazel info output_base)/external
bazel_tools  @bazel_tools.marker  gtest  @gtest.marker  local_config_cc  @local_config_cc.marker
Другие вопросы по тегам