Regras de buffer de protocolo

Informar um problema Ver código-fonte {19/Night} {19/Night}

Regras

proto_lang_toolchain

Exibir 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 estiver usando o Bazel, carregue a regra em https://github.com/bazelbuild/rules_proto.

Especifica como uma regra ham_proto_library (por exemplo, java_proto_library) precisa invocar o proto-compilador. Algumas regras do Lang_proto_library permitem especificar qual conjunto de ferramentas usar usando sinalizações de linha de comando. Consulte a documentação.

Normalmente, não é recomendável 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 que anexamos. Ela é transmitida como uma sinalização de linha de comando para o Blaze. Vários recursos exigem que um proto-compiler seja invocado na própria regra proto_library. É vantajoso aplicar o compilador que ham_proto_library usa é o mesmo que o 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 o destino.

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 .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 desse gerador de código/plug-in (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 elas interpretam essa variável. Em Java, por exemplo, $(OUT) será substituído pelo 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 $(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á transmitido 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.
proto_compiler

Rótulo; o padrão é None

O executável do compilador proto. Se fornecido, esse destino será usado como um proto-compilador 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 Lang_proto_library. O Java, por exemplo, precisa ser compilado no ambiente de execução.

proto_library

Exibir 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. Em vez disso, use https://github.com/bazelbuild/rules_proto.

Use proto_library para definir bibliotecas de buffers de protocolo que podem ser usadas a partir de várias linguagens. Um proto_library pode ser listado na cláusula deps das regras compatíveis, 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 os srcs da regra. O arquivo é um FileDescriptorSet serializado, que é descrito em https://developers.google.com/protocol-buffers/docs/techniques#self-description.

Ela contém apenas informações sobre os arquivos .proto mencionados diretamente por uma regra proto_library. A coleção de conjuntos de descritores transitivos está disponível pelo provedor [ProtoInfo].transitive_descriptor_sets Starlark. 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, localizada no mesmo pacote.
  • Um [language]_proto_library que encapsula um proto_library chamado foo_proto precisa ser chamado de foo_[language]_proto e estar localizado 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 destinos proto_library. Ele pode não depender de bibliotecas específicas da linguagem.
srcs

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

A lista de arquivos .proto e .protodevel que são processados para criar o destino. Geralmente, essa lista não é vazia. Um caso de uso em que srcs pode ficar vazio é uma alias-library. Essa é uma regra de proto_library que tem 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 exportada novamente 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" na origem proto.
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 podem ser acessados quando o valor desse atributo é anexado ao caminho relativo ao repositório.

O prefixo no atributo strip_import_prefix é removido antes que esse prefixo seja 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 ficam acessíveis no caminho com esse prefixo cortado.

Se for um caminho relativo (que não começa com uma 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 esse prefixo é removido.