В зависимости от протосов из внешнего репо с пользовательскими правилами

Как правильно зависеть от правил proto_libary, определенных во внешних репозиториях, и использовать собственные правила?

Мне нужно генерировать файлы с использованием nanopb для прото во внешнем репо. Это работает:

proto_library(
    name = "awesome_proto",
    deps = ["@other_repo//proto:awesome_proto"],
)

cc_proto_library(
    name = "awesome_proto_cc",
    deps = [":awesome_proto"],
)

Однако, когда я определяю пользовательское правило, я думаю, что мне нужно добраться до базового.proto из awesome_repo, чтобы иметь возможность передать его в protoc, и я не могу найти способ сделать это. Я также пытаюсь не заставлять other_repo загружать nanopb и генерировать его для меня.

1 ответ

Одним из решений является ProtoSourcesProvider.
В rules_scala у нас есть другое решение, которое использует устаревшую нотацию.

for target in ctx.attr.deps:
            if hasattr(target, 'proto'):
                acc_imports.append(target.proto.transitive_sources)
Другие вопросы по тегам