Reglas de búfer de protocolo

Reglas

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)

Obsoleta. Por favor https://github.com/bazelbuild/rules_proto.

Especifica cómo una regla LANG_proto_library (p.ej., java_proto_library) deben invocar el proto-compiler. Algunas reglas LANG_proto_library permiten especificar qué cadena de herramientas utilizar mediante marcas de la línea de comandos. consulta su documentación.

Por lo general, no debes escribir ese tipo de reglas, a menos que desees ajustar tu compilador de Java.

No hay compilador. El proto-compiler se toma de la regla proto_library a la que adjuntamos. Sí pasado como una marca de línea de comandos a Blaze. Varias funciones requieren que se invoque un proto-compiler en la misma regla proto_library. Es beneficioso hacer que el compilador que usa LANG_proto_library sea el mismo. proto_library.

Ejemplos

Un ejemplo sencillo sería el siguiente:

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

Argumentos

Atributos
name

Name; required

Un nombre único para este destino.

blacklisted_protos

List of labels; optional

No se generará ningún código para los archivos del atributo srcs de blacklisted_protos Se usa para archivos .proto que ya están vinculados en entornos de ejecución proto, como any.proto
command_line

String; required

Este valor se pasará a proto-compiler para generar el código. Solo incluye las partes específicas de este generador de código o complemento (p.ej., no incluyas los parámetros -I)
  • $(OUT) es específico de LANG_proto_library. Se espera que las reglas definan cómo interpretan esta variable. En el caso de Java, por ejemplo, $(OUT) se reemplazará por el nombre de archivo src-jar que se creará.
mnemonic

String; optional; default is "GenProto"

Este valor se establecerá como mnemotécnico en la acción de protocolo.
plugin

Label; optional

Si se proporciona, estará disponible para la acción que llame al proto-compiler y será pasan al proto-compiler: --plugin=protoc-gen-PLUGIN=.
plugin_format_flag

String; optional

Si se proporciona, este valor se pasará a proto-compiler para usar el complemento. El valor debe contienen un solo %s que se reemplaza con el ejecutable del complemento. --plugin=protoc-gen-PLUGIN=.
progress_message

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

Este valor se establecerá como el mensaje de progreso en la acción de protocolo.
proto_compiler

Label; optional

Es el ejecutable del compilador proto. Si se proporciona, este destino se usará como protocompilador para generar el código.
runtime

Label; optional

Una biblioteca específica del lenguaje con la que se compila el código generado. El comportamiento exacto es específico de LANG_proto_library. Java, por ejemplo, debe compilar en el entorno de ejecución.

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)

Obsoleta. Utiliza https://github.com/bazelbuild/rules_proto.

Usa proto_library para definir bibliotecas de búferes de protocolo que pueden usarse en varios idiomas. Es posible que aparezca un proto_library en la cláusula deps de las reglas admitidas, como java_proto_library.

Cuando se compila en la línea de comandos, un proto_library crea un archivo llamado foo-descriptor-set.proto.bin, que es el conjunto de descriptores de la envía la regla srcs. El archivo es un FileDescriptorSet serializado, que es descritos en https://developers.google.com/protocol-buffers/docs/techniques#self-description.

Solo contiene información sobre los archivos .proto mencionados directamente por un Regla proto_library; la colección de conjuntos de descriptores transitivos está disponible mediante el proveedor de Starlark [ProtoInfo].transitive_descriptor_sets. Consulta la documentación en ProtoInfo.java.

Organización de código recomendada:

  • Una regla proto_library por archivo .proto.
  • Un archivo llamado foo.proto estará en una regla llamada foo_proto, que se encuentra en el mismo paquete.
  • Un [language]_proto_library que une un proto_library llamado Se debe llamar a foo_proto foo_[language]_proto y deben ubicarse en el mismo paquete.

Argumentos

Atributos
name

Name; required

Un nombre único para este destino.

deps

List of labels; optional

Es la lista de otras reglas proto_library de las que depende el destino. Un proto_library solo puede depender de otros proto_library objetivos. Es posible que no dependa de las bibliotecas específicas de un lenguaje.
srcs

List of labels; optional

La lista de archivos .proto y .protodevel que se procesada para crear el destino. Por lo general, no está vacía. Un caso de uso donde srcs puede estar vacío es una biblioteca de alias. Este es un La regla proto_library tiene uno o más objetos proto_library en deps. Este patrón puede usarse, p.ej., exportar una API pública con un nombre persistente.
exports

List of labels; optional

Lista de destinos de proto_library a los que se puede hacer referencia mediante "import public" en el proto fuente.
import_prefix

String; optional

El prefijo que se agregará a las rutas de acceso de los archivos .proto en esta regla.

Cuando se establece, se asignan los archivos de origen .proto en el atributo srcs de esta regla es el valor de este atributo antepuesto a su ruta de acceso relativa del repositorio.

Se quitó el prefijo del atributo strip_import_prefix antes de este se agregó el prefijo.

strip_import_prefix

String; optional

El prefijo que se quitará de las rutas de acceso de los archivos .proto en esta regla.

Cuando se establece, se asignan los archivos de origen .proto en el atributo srcs de esta regla accesibles en su ruta con este prefijo cortado.

Si es una ruta de acceso relativa (que no comienza con una barra diagonal), se toma como una ruta de acceso uno. Si es una absoluta, se entiende como una ruta de acceso relativa de repositorio.

El prefijo del atributo import_prefix se agrega después de que este prefijo despojado.