Aturan Buffering Protokol

Laporkan masalah Lihat sumber Nightly · 7.4 .

Aturan

py_proto_library

Melihat sumber aturan
py_proto_library(name, deps, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)
Gunakan `py_proto_library` untuk membuat library Python dari file `.proto`. Konvensi ini adalah memberi nama aturan `py_proto_library` `foo_py_pb2`, saat menggabungkan aturan `proto_library` `foo_proto`. `deps` harus mengarah ke aturan `proto_library`. Contoh: ```starlark py_library( name = "lib", deps = [":foo_py_pb2"], ) py_proto_library( name = "foo_py_pb2", deps = [":foo_proto"], ) proto_library( name = "foo_proto", srcs = ["foo.proto"], ) ```

Argumen

Atribut
name

Nama; wajib

Nama unik untuk target ini.

deps

Daftar label; default-nya adalah []

Daftar aturan `proto_library` untuk membuat library Python. Biasanya, ini hanya satu target: library proto yang diinginkan. Ini dapat berupa target apa pun yang menyediakan `ProtoInfo`.

proto_lang_toolchain

Melihat sumber aturan
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)

Jika menggunakan Bazel, muat aturan dari https://github.com/bazelbuild/rules_proto.

Menentukan cara aturan LANG_proto_library (misalnya, java_proto_library) harus memanggil proto-compiler. Beberapa aturan LANG_proto_library memungkinkan Anda menentukan toolchain yang akan digunakan menggunakan flag command line; baca dokumentasinya.

Biasanya, Anda tidak boleh menulis aturan semacam itu kecuali jika ingin menyesuaikan compiler Java.

Tidak ada compiler. Compiler proto diambil dari aturan proto_library yang kita lampirkan. Flag ini diteruskan sebagai flag command line ke Blaze. Beberapa fitur mengharuskan proto-compiler dipanggil pada aturan proto_library itu sendiri. Sebaiknya terapkan compiler yang digunakan LANG_proto_library sama dengan yang digunakan proto_library.

Contoh

Contoh sederhananya adalah:


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

Argumen

Atribut
name

Nama; wajib

Nama unik untuk target ini.

allowlist_different_package

Label; default-nya adalah None

blacklisted_protos

Daftar label; default-nya adalah []

Tidak ada kode yang akan dihasilkan untuk file dalam atribut srcs dari blacklisted_protos. Ini digunakan untuk file .proto yang sudah ditautkan ke runtime proto, seperti any.proto.
command_line

String; wajib

Nilai ini akan diteruskan ke proto-compiler untuk membuat kode. Hanya sertakan bagian yang khusus untuk generator kode/plugin ini (mis., jangan sertakan parameter -I)
  • $(OUT) adalah khusus LANG_proto_library. Aturan diharapkan menentukan cara menafsirkan variabel ini. Misalnya, untuk Java, $(OUT) akan diganti dengan nama file src-jar yang akan dibuat.
mnemonic

String; default-nya adalah "GenProto"

Nilai ini akan ditetapkan sebagai mnemonic pada tindakan protoc.
output_files

String; default-nya adalah "legacy"

Mengontrol cara pemformatan $(OUT) di command_line, baik dengan jalur ke satu file atau direktori output jika ada beberapa file. Nilai yang mungkin adalah: "single", "multiple".
plugin

Label; default-nya adalah None

Jika disediakan, akan tersedia untuk tindakan yang memanggil proto-compiler, dan akan diteruskan ke proto-compiler: --plugin=protoc-gen-PLUGIN=<executable>.
plugin_format_flag

String; default-nya adalah ""

Jika diberikan, nilai ini akan diteruskan ke proto-compiler untuk menggunakan plugin. Nilai harus berisi satu %s yang diganti dengan plugin yang dapat dieksekusi. --plugin=protoc-gen-PLUGIN=<executable>.
progress_message

String; default-nya adalah "Generating proto_library %{label}"

Nilai ini akan ditetapkan sebagai pesan progres pada tindakan protoc.
protoc_minimal_do_not_use

Label; default-nya adalah None

runtime

Label; default-nya adalah None

Library khusus bahasa yang digunakan untuk mengompilasi kode yang dihasilkan. Perilaku yang tepat adalah khusus LANG_proto_library. Java, misalnya, harus dikompilasi terhadap runtime.
toolchain_type

Label; default-nya adalah None

proto_toolchain

Melihat sumber aturan
proto_toolchain(name, command_line, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, mnemonic, output_files, progress_message, proto_compiler, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)

Argumen

Atribut
name

Nama; wajib

Nama unik untuk target ini.

command_line

String; default-nya adalah "--descriptor_set_out=%s"

mnemonic

String; defaultnya adalah "GenProtoDescriptorSet"

output_files

String; default-nya adalah "single"

progress_message

String; default-nya adalah "Generating Descriptor Set proto_library %{label}"

proto_compiler

Label; default-nya adalah None