Попытка использовать цель в build_file
из внешнего пакета, импортированного через http_archive
, у которого есть зависимости, определенные в рабочей области внешнего пакета через атрибут workspace_file
, не удалась. Я использую Bazel 0.27.0 для тестирования Debian.
В документации говорится только о ссылках на цели в предоставленном build_file
, но я не смог найти никакой информации о том, как можно ссылаться на зависимость, определенную в предоставленном workspace_file
в предоставленном build_file
.
Обычный синтаксис @stringtemplate3//jar
не работает, но я не знаю, как добавить ссылку на импортированный архив, который согласно инструкции должен начинаться с @antlr3_runtimes
.
Макет проекта выглядит следующим образом:
├── antlr.BUILD
├── antlr.WORKSPACE
├── BUILD
├── external_dependency
│ └── src
│ └── main
│ └── java
│ └── bazel
│ ├── BUILD
│ └── Hello.java
├── LICENSE
└── WORKSPACE
Определение WORKSPACE
выглядит следующим образом:
workspace(name="bazel")
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "antlr3_runtimes",
sha256 = "d4f7d3c38c5523f8009ff37528e5797c81adb454be6acc9af507cfcb41f2016f",
strip_prefix = "antlr3-master",
urls = ["https://github.com/ibre5041/antlr3/archive/master.tar.gz"],
build_file = "@//:antlr.BUILD",
workspace_file = "@//:antlr.WORKSPACE",
)
Похоже, что workspace_file
даже не анализируется. Сборка уже дает сбой, когда она пытается разрешить зависимости в пользовательском файле сборки.
Репро можно найти здесь: https://github.com/marcohu/bazel
bazel build //...
показывает это сообщение об ошибке:
ERROR: /home/user/.cache/bazel/_bazel_user/64492308e78c9898c41f12c18dd29b63/external/antlr3_runtimes/BUILD.bazel:43:1: no such package '@stringtemplate3//jar': The repository '@stringtemplate3' could not be resolved and referenced by '@antlr3_runtimes//:antlr3_tool'
ERROR: Analysis of target '//external_dependency/src/main/java/bazel:hello' failed; build aborted: no such package '@stringtemplate3//jar': The repository '@stringtemplate3' could not be resolved
Я сообщил об этом в трекере проблем Bazel, но он был отклонен с подсказкой опубликовать здесь.
Является ли этот вариант использования чем-то, что просто невозможно? Или я неправильно понял синтаксис?