Regras de buffer de protocolo

Regras

proto_lang_toolchain

proto_lang_toolchain(name, blacklisted_protos, command_line, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, mnemonic, plugin, plugin_format_flag, progress_message, proto_compiler, restricted_to, runtime, tags, target_compatible_with, testonly, visibility)

Obsoleto. https://github.com/bazelbuild/rules_proto (link em inglês).

Especifica como uma regra ham_proto_library (por exemplo, java_proto_library) deve invocar o proto-compiler. Algumas regras pt_proto_library permitem especificar qual conjunto de ferramentas deve ser usado usando sinalizações de linha de comando. consulte a documentação.

Normalmente, você não deve escrever esse tipo de regra, a menos que queira ajustar seu compilador Java.

Não há compilador. O proto-compiler é retirado da regra proto_library que anexamos. É passada como uma flag de linha de comando para o Blaze. Vários recursos exigem que um proto-compiler seja invocado na própria regra proto_library. É vantajoso impor que o compilador que ham_proto_library usa é o mesmo que o O proto_library sim.

Exemplos

Um exemplo simples seria:

proto_lang_toolchain(
    name = "javalite_toolchain",
    command_line = "--javalite_out=shared,immutable:$(OUT)",
    plugin = ":javalite_plugin",
    runtime = ":protobuf_lite",
)

Argumentos

Atributos
name

Name; required

Um nome exclusivo para o destino.

blacklisted_protos

List of labels; optional

Nenhum código será gerado para os arquivos no atributo srcs de blacklisted_protos. Isso é usado para arquivos .proto que já estão vinculados a ambientes de execução .proto, como any.proto:
command_line

String; required

Esse valor será passado ao proto-compiler para gerar o código. Inclua apenas as partes específico para este plug-in/gerador de código (por exemplo, não inclua os parâmetros -I)
  • O arquivo $(OUT) é específico para Lang_proto_library. Espera-se que as regras definam como eles interpretam essa variável. Em Java, por exemplo, $(OUT) será substituído por o nome do arquivo src-jar a ser criado.
mnemonic

String; optional; default is "GenProto"

Esse valor será definido como mnemônico na ação do protótipo.
plugin

Label; optional

Se fornecido, será disponibilizado para a ação que chama o proto-compilador e será passados para o proto-compilador: --plugin=protoc-gen-PLUGIN=.
plugin_format_flag

String; optional

Se fornecido, esse valor será passado ao proto-compiler para usar o plug-in. O valor deve contêm um único %s que é substituído pelo executável do plug-in. --plugin=protoc-gen-PLUGIN=.
progress_message

String; optional; default is "Generating proto_library %{label}"

Este valor será definido como a mensagem de progresso na ação protoc.
proto_compiler

Label; optional

O executável do compilador proto. Se fornecido, esse destino será usado como um proto-compilador para gerar o código.
runtime

Label; optional

Uma biblioteca específica da linguagem em que o código gerado é compilado. O comportamento exato é específico para jam_proto_library. O Java, por exemplo, precisa ser compilado no ambiente de execução.

proto_library

proto_library(name, deps, srcs, data, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, exports, features, import_prefix, licenses, restricted_to, strip_import_prefix, tags, target_compatible_with, testonly, visibility)

Obsoleto. Use https://github.com/bazelbuild/rules_proto (link em inglês).

Usar proto_library para definir bibliotecas de buffers de protocolo que pode ser usado em vários idiomas. Um proto_library pode ser listado na cláusula deps das regras com suporte, como java_proto_library.

Quando compilado na linha de comando, um proto_library cria um arquivo chamado foo-descriptor-set.proto.bin, que é o descritor definido para o mensagens para a regra srcs. O arquivo é um FileDescriptorSet serializado, descritos em https://developers.google.com/protocol-buffers/docs/techniques#self-description.

Ele contém apenas informações sobre os arquivos .proto mencionados diretamente por um proto_library regra a coleção de conjuntos de descritores transitivos fica disponível por meio do provedor Starlark [ProtoInfo].transitive_descriptor_sets. Consulte a documentação em ProtoInfo.java.

Organização de código recomendada:

  • Uma regra proto_library por arquivo .proto.
  • Um arquivo chamado foo.proto estará em uma regra chamada foo_proto, que estejam localizados no mesmo pacote.
  • Um [language]_proto_library que envolve um proto_library chamado foo_proto deve ser chamado. foo_[language]_proto e estejam no mesmo pacote.

Argumentos

Atributos
name

Name; required

Um nome exclusivo para o destino.

deps

List of labels; optional

A lista de outras regras proto_library de que a meta depende. Um proto_library pode depender apenas de outros proto_library metas. Ele pode não depender de bibliotecas específicas da linguagem.
srcs

List of labels; optional

A lista dos arquivos .proto e .protodevel que estão processados para criar o destino. Geralmente, essa lista não é vazia. Um caso de uso em que srcs pode ficar vazio é uma biblioteca de alias. Esta é uma regra proto_library com uma ou mais outras proto_library em deps. Esse padrão pode ser usado para, por exemplo: exportar uma API pública com um nome persistente.
exports

List of labels; optional

Lista de destinos proto_library que podem ser referenciados por "import public" no proto fonte.
import_prefix

String; optional

O prefixo a ser adicionado aos caminhos dos arquivos .proto nesta regra.

Quando definidos, os arquivos de origem .proto no atributo srcs dessa regra são acessível em é o valor desse atributo anexado ao caminho relativo ao repositório.

O prefixo no atributo strip_import_prefix é removido antes deste é adicionado.

strip_import_prefix

String; optional

O prefixo a ser removido dos caminhos dos arquivos .proto nesta regra.

Quando definidos, os arquivos de origem .proto no atributo srcs dessa regra são acessíveis no caminho com esse prefixo cortado.

Se for um caminho relativo (que não começa com uma barra), ele será considerado um valor relativo ao pacote. um. Se for absoluto, será entendido como um caminho relativo ao repositório.

O prefixo no atributo import_prefix é adicionado depois que esse prefixo é descascada.