Aturan Buffering Protokol

Laporkan masalah Lihat sumber Nightly · 8.0 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

Aturan

proto_lang_toolchain

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

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; lihat 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 memerlukan compiler proto untuk 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.

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 (misalnya, jangan sertakan parameter -I)
  • $(OUT) khusus LANG_proto_library. Aturan ini 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 mnemoni pada tindakan protoc.
output_files

String; default-nya adalah "legacy"

Mengontrol cara $(OUT) di command_line diformat, 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.
proto_compiler

Label; default-nya adalah None

Compiler proto yang dapat dieksekusi. Jika disediakan, target ini akan digunakan sebagai proto-compiler untuk membuat kode.
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.

proto_library

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

Tidak digunakan lagi. Sebagai gantinya, gunakan https://github.com/bazelbuild/rules_proto.

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

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

File ini hanya berisi informasi tentang file .proto yang secara langsung disebutkan oleh aturan proto_library; kumpulan set deskripsi 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 terletak dalam 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

Nama; wajib

Nama unik untuk target ini.

deps

Daftar label; default-nya adalah []

Daftar aturan proto_library lain yang menjadi dependensi target. proto_library hanya boleh bergantung pada target proto_library lainnya. Library ini mungkin tidak bergantung pada library khusus bahasa.
srcs

Daftar label; default-nya adalah []

Daftar file .proto dan .protodevel yang diproses untuk membuat target. Ini biasanya merupakan daftar yang tidak kosong. Salah satu kasus penggunaan saat srcs dapat kosong adalah library alias. Ini adalah aturan proto_library yang memiliki satu atau beberapa proto_library lain di deps. Pola ini dapat digunakan untuk, misalnya, mengekspor API publik dengan nama persisten.
allow_exports

Label; default-nya adalah None

Daftar yang diizinkan opsional yang mencegah library proto diekspor ulang atau digunakan di lang_proto_library yang tidak ada di salah satu paket yang tercantum.
exports

Daftar label; default-nya adalah []

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

String; default-nya adalah ""

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

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

Awalan dalam atribut strip_import_prefix dihapus sebelum awalan ini ditambahkan.

strip_import_prefix

String; default-nya adalah ""

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

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

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

Awalan dalam atribut import_prefix ditambahkan setelah awalan ini dihapus.