Использование макросов Bazel в репозиториях с метками
У меня есть два репозитория, Клиент и Библиотека.
Внутри файла WORKSPACE Клиента Клиент импортирует Библиотеку как http_archive с именем "foo".
Внутри клиента я хочу использовать макросы библиотеки, которые ссылаются на цели внутри библиотеки. Моя проблема в том, что макросы библиотеки не знают, что они были импортированы как "foo", поэтому при расширении макроса цели не обнаруживаются.
1 ответ
Библиотека /WORKSPACE:workspace(name = "library")
библиотека /some.bzl:
def my_macro():
native.java_library(name = "my_macro_lib",
deps = ["@library//:my_macro_lib_dependnecy"]
)
библиотека /BUILD.bazel:
java_library(name = "my_macro_lib_dependnecy",
...
)
клиент /WORKSPACE:
workspace(name = "client")
http_archive(
name = "library",
urls = [...],
strip_prefix = ...,
sha256 = ...,
)
Поскольку оба рабочих пространства используют одно и то же имя для рабочего пространства библиотеки (name = "library"
) и потому что макрос ссылается на имя рабочего пространства в его зависимостях (@library//:my_macro_lib_dependnecy
) это работает. Обратите внимание, что это работает, но есть некоторые причуды, которые будут решены в 0.17.0