Aturan Buffering Protokol

Aturan

proto_lang_toolchain

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)

Tidak digunakan lagi. Harap https://github.com/bazelbuild/rules_proto.

Menentukan bagaimana aturan LANG_proto_library (mis., java_proto_library) harus memanggil proto-compiler. Beberapa aturan LANG_proto_library mengizinkan penentuan toolchain yang akan digunakan menggunakan flag command line; baca dokumentasi mereka.

Biasanya Anda tidak perlu menulis aturan seperti itu kecuali jika Anda ingin menyesuaikan compiler Java Anda.

Tidak ada compiler. proto-compiler diambil dari aturan proto_library yang kami lampirkan. Penting diteruskan sebagai penanda baris perintah ke Blaze. Beberapa fitur mengharuskan proto-compiler dipanggil pada aturan proto_library itu sendiri. Sebaiknya terapkan compiler yang digunakan LANG_proto_library sama dengan 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

Name; required

Nama unik untuk target ini.

blacklisted_protos

List of labels; optional

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

String; required

Nilai ini akan diteruskan ke proto-compiler untuk membuat kode. Hanya sertakan bagian-bagiannya khusus untuk pembuat kode/plugin ini (misalnya, tidak menyertakan parameter -I)
  • $(OUT) adalah khusus LANG_proto_library. Aturan-aturan diharapkan untuk menentukan bagaimana mereka menafsirkan variabel ini. Untuk Java, misalnya, $(OUT) akan diganti dengan nama file src-jar yang akan dibuat.
mnemonic

String; optional; default is "GenProto"

Nilai ini akan ditetapkan sebagai mnemonik tindakan prototipe.
output_files

String; optional; default is "legacy"

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

Label; optional

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

String; optional

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

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

Nilai ini akan ditetapkan sebagai pesan progres pada tindakan prototipe.
proto_compiler

Label; optional

Compiler proto yang dapat dieksekusi. Jika disediakan, target ini akan digunakan sebagai compiler proto untuk membuat kode.
runtime

Label; optional

Library khusus bahasa tempat kode yang dihasilkan dikompilasi. Perilaku yang tepat adalah khusus LANG_proto_library. Java, misalnya, harus dikompilasi terhadap runtime.

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)

Tidak digunakan lagi. Gunakan https://github.com/bazelbuild/rules_proto.

Menggunakan proto_library untuk menentukan library buffering protokol yang dapat digunakan dari beberapa bahasa. proto_library mungkin dicantumkan dalam klausa deps aturan yang didukung, seperti java_proto_library.

Jika dikompilasi di command line, proto_library akan membuat file bernama foo-descriptor-set.proto.bin, yang merupakan kumpulan deskripsi untuk mengirim pesan ke src aturan. File ini adalah FileDescriptorSet serial, yang dijelaskan dalam https://developers.google.com/protocol-buffers/docs/techniques#self-description.

File ini hanya berisi informasi tentang file .proto yang disebutkan secara langsung oleh proto_library aturan; kumpulan set deskriptor transitif tersedia melalui penyedia Starlark [ProtoInfo].transitive_descriptor_sets. Lihat dokumentasi di ProtoInfo.java.

Pengaturan kode yang direkomendasikan:

  • Satu aturan proto_library per .proto file.
  • File bernama foo.proto akan berada di aturan bernama foo_proto, yang terletak di paket yang sama.
  • [language]_proto_library yang menggabungkan proto_library bernama foo_proto harus dipanggil foo_[language]_proto, dan berada dalam paket yang sama.

Argumen

Atribut
name

Name; required

Nama unik untuk target ini.

deps

List of labels; optional

Daftar aturan proto_library lain yang diandalkan target. proto_library mungkin hanya bergantung pada proto_library target. Ini mungkin tidak bergantung pada library bahasa tertentu.
srcs

List of labels; optional

Daftar file .proto dan .protodevel yang yang diproses untuk membuat target. Daftar ini biasanya tidak kosong. Satu kasus penggunaan dengan srcs yang boleh kosong adalah library-alias. Ini adalah aturan proto_library memiliki satu atau beberapa proto_library lain di deps. Pola ini dapat digunakan, misalnya dan mengekspor api publik dengan nama persisten.
exports

List of labels; optional

Daftar target proto_library yang dapat direferensikan melalui "impor publik" dalam proto sumber.
import_prefix

String; optional

Awalan yang akan ditambahkan ke jalur file .proto dalam aturan ini.

Jika ditetapkan, file sumber .proto di atribut srcs aturan ini dapat diakses di adalah nilai atribut ini yang ditambahkan ke jalur relatif repositori.

Awalan dalam atribut strip_import_prefix dihapus sebelum tindakan ini ditambahkan.

strip_import_prefix

String; optional

Awalan yang akan dihapus dari jalur file .proto dalam aturan ini.

Jika ditetapkan, file sumber .proto di atribut srcs aturan ini dapat diakses di jalur mereka dengan awalan ini.

Jika jalur relatif (tidak dimulai dengan garis miring), jalur itu akan diambil sebagai paket-relatif satu. Jika nilainya absolut, nilainya akan dipahami sebagai jalur relatif repositori.

Awalan dalam atribut import_prefix ditambahkan setelah awalan ini dihilangkan.