Regras de buffer de protocolo

Informar um problema Conferir origem Noite · 7,4 do Google. 7.3 · 7.2 · 7.1 · 7.0 · 6.5

Regras

proto_lang_toolchain

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

Se você estiver usando o Bazel, carregue a regra em https://github.com/bazelbuild/rules_proto.

Especifica como uma regra Lang_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, não é necessário escrever esse tipo de regra, a menos que você queira ajustar seu compilador Java.

Não há compilador. O proto-compiler é retirado da regra proto_library a que nos conectamos. É 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. É benéfico forçar o compilador que LANG_proto_library usa a mesma que proto_library.

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

Nome: obrigatório

Um nome exclusivo para essa segmentação.

blacklisted_protos

Lista de rótulos o padrão é []

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

String; obrigatório

Esse valor será passado ao proto-compiler para gerar o código. Inclua apenas as partes específicas a esse gerador de código/plug-in (por exemplo, não inclua parâmetros -I)
  • $(OUT) é específico para LANG_proto_library. As regras precisam definir como interpretar essa variável. Em Java, por exemplo, $(OUT) será substituído por o nome do arquivo src-jar a ser criado.
mnemonic

String; o padrão é "GenProto"

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

String; o padrão é "legacy"

Controla como o $(OUT) em command_line é formatado, seja por um caminho para um único arquivo ou diretório de saída em caso de vários arquivos. Os valores possíveis são: "único", "vários".
plugin

Rótulo o padrão é None

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

String; o padrão é ""

Se fornecido, esse valor será transmitido para o 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=<executable>.
progress_message

String; o padrão é "Generating proto_library %{label}"

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

Rótulo: o padrão é None.

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

Rótulo o padrão é None

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

Acessar a origem da regra
proto_library(name, deps, srcs, data, allow_exports, 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.

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 de 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 as mensagens das srcs da regra. O arquivo é um FileDescriptorSet serializado, que é descrito 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 vai estar em uma regra chamada foo_proto, que está localizada 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

Nome; obrigatório

Um nome exclusivo para essa segmentação.

deps

Lista de rótulos o padrão é []

A lista de outras regras proto_library das quais o destino depende. Um proto_library só pode depender de outras metas proto_library. Ele pode não depender de bibliotecas específicas da linguagem.
srcs

Lista de rótulos o padrão é []

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.
allow_exports

Rótulo o padrão é None

Uma lista de permissões opcional que impede que a biblioteca proto seja reexportada ou usada em lang_proto_library que não está em um dos pacotes listados.
exports

Lista de rótulos; o padrão é []

Lista de destinos de proto_library que podem ser referenciados por "import public" na origem de proto.
import_prefix

String; o padrão é ""

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

Quando definido, os arquivos de origem .proto no atributo srcs desta regra são acessíveis no valor do atributo adicionado ao caminho relativo ao repositório.

O prefixo no atributo strip_import_prefix é removido antes de ser adicionado.

strip_import_prefix

String; o padrão é ""

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 um caractere de barra), ele será considerado relativo ao pacote. Se for absoluto, será entendido como um caminho relativo ao repositório.

O prefixo no atributo import_prefix é adicionado depois que ele é removido.