Regras de buffer de protocolo

Informar um problema Mostrar fonte Por noite · 7,3 · 7,2 · 7,1 · 7,0 · 6,5

Regras

proto_library

Conferir 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, toolchains, visibility)

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

Use proto_library para definir bibliotecas de buffers de protocolo que podem ser usados 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 as mensagens que a regra srcs. O arquivo é um módulo FileDescriptorSet, que é descrito em https://developers.google.com/protocol-buffers/docs/techniques#self-description.

Ele contém apenas informações sobre os arquivos .proto diretamente mencionado por uma regra proto_library; a coleção de objetos transitivos estão disponíveis no [ProtoInfo].transitive_descriptor_sets provedor Starlark. Consulte a documentação em proto_info.bzl.

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 está no mesmo pacote.
  • Um [language]_proto_library que encapsula um proto_library. chamado foo_proto deve se chamar foo_[language]_proto, e estejam localizados no mesmo pacote.

Argumentos

Atributos
name

Nome; obrigatório

Um nome exclusivo para o destino.

deps

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

A lista de outras regras proto_library de que a meta depende. Um proto_library pode depender apenas de outros proto_library. de destino. 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 proto_library que podem ser referenciados por "import public" no origem proto. Se você usar "importar público", ocorrerá um erro. mas não listar a biblioteca correspondente no atributo exporta. Você listou a biblioteca em dependências e exportações, já que nem todas as implementações de lang_proto_library ainda foram alteradas.
import_prefix

String; o padrão é ""

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

proto_lang_toolchain

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

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

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

Nome; obrigatório

Um nome exclusivo para o destino.

allowlist_different_package

Rótulo o padrão é None

blacklisted_protos

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

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; obrigatório

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; 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 no 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á passado ao proto-compiler para usar o plug-in. O valor precisa conter 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.
protoc_minimal_do_not_use

Rótulo o padrão é None

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

Rótulo o padrão é None