BazelCon 2022 akan hadir pada 16-17 November ke New York dan online.
Daftar sekarang.

Aturan Buffering Protokol

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

Aturan

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)

Tidak digunakan lagi Sebagai gantinya, 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 penentuan toolchain yang akan digunakan menggunakan tanda command line; lihat dokumentasinya.

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

Tidak ada compiler. Compiler proto diambil dari aturan proto_library yang dilampirkan. Nilai ini diteruskan sebagai tanda command line ke Blaze. Beberapa fitur memerlukan proto-compiler untuk dipanggil pada aturan proto_library. Ada baiknya menerapkan compiler yang digunakan LANG_proto_library sama dengan yang dilakukan oleh 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 dihasilkan 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 menghasilkan kode. Hanya sertakan bagian yang spesifik untuk generator/plugin kode ini (misalnya, jangan sertakan parameter -I)
  • $(OUT) bersifat khusus LANG_proto_library. Aturan ini diharapkan untuk menentukan cara penafsiran variabel ini. Misalnya, untuk Java, $(OUT) akan diganti dengan nama file src-jar yang akan dibuat.
mnemonic

String; optional; default is "GenProto"

Nilai ini akan ditetapkan sebagai mnemonic pada tindakan protoc.
plugin

Label; optional

Jika disediakan, akan tersedia 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. Nilai 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 terkait tindakan protoc.
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 yang digunakan untuk mengompilasi kode yang dihasilkan. Perilaku yang tepat adalah khusus LANG_proto_library. Misalnya, Java harus mengompilasi terhadap runtime.

library_proto

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 Sebagai gantinya, gunakan https://github.com/bazelbuild/rules_proto.

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

Saat dikompilasi pada command line, proto_library akan membuat file bernama foo-descriptor-set.proto.bin, yang merupakan deskripsi yang ditetapkan untuk pesan yang ditemukan oleh aturan. File ini adalah FileDescriptorSet serial, yang dijelaskan dalam https://developers.google.com/protocol-buffers/docs/techniques#self-description.

Pesan ini hanya berisi informasi tentang file .proto yang langsung disebutkan oleh aturan proto_library; 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 file .proto.
  • File bernama foo.proto akan berada dalam aturan bernama foo_proto, yang berada dalam paket yang sama.
  • [language]_proto_library yang menggabungkan proto_library bernama foo_proto harus disebut 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 menjadi dependensi target. proto_library mungkin hanya bergantung pada target proto_library lainnya. Hal ini mungkin tidak bergantung pada library khusus bahasa.
srcs

List of labels; optional

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

List of labels; optional

Daftar target proto_library yang dapat direferensikan melalui "import public" di sumber proto.
import_prefix

String; optional

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

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

Awalan pada atribut strip_import_prefix dihapus sebelum awalan ini ditambahkan.

strip_import_prefix

String; optional

Awalan untuk menghapus jalur file .proto di aturan ini.

Jika ditetapkan, file sumber .proto di atribut srcs aturan ini dapat diakses pada jalurnya dengan awalan ini terpotong.

Jika jalur relatif (tidak dimulai dengan garis miring), jalur tersebut akan dianggap sebagai jalur relatif paket. Jika ini adalah absolut, maka ini akan dipahami sebagai jalur relatif repositori.

Awalan pada atribut import_prefix ditambahkan setelah awalan ini dihilangkan.