file .bzl

Laporkan masalah

Metode global tersedia di semua file .bzl.

Anggota

analysis_test_transition

transition analysis_test_transition(settings)

Membuat transisi konfigurasi untuk diterapkan pada dependensi aturan pengujian analisis. Transisi ini hanya dapat diterapkan pada atribut aturan dengan analysis_test = True. Kemampuan aturan tersebut dibatasi (misalnya, ukuran hierarki dependensinya terbatas), sehingga transisi yang dibuat menggunakan fungsi ini memiliki cakupan potensial yang terbatas jika dibandingkan dengan transisi yang dibuat menggunakan transition().

Fungsi ini terutama dirancang untuk memfasilitasi library inti Framework Pengujian Analisis. Lihat dokumentasi (atau penerapannya) untuk mengetahui praktik terbaik.

Parameter

Parameter Deskripsi
settings wajib
Kamus yang berisi informasi tentang setelan konfigurasi yang harus disetel oleh transisi konfigurasi ini. Kunci adalah label setelan build, dan nilai merupakan nilai baru setelah transisi. Semua setelan lainnya tidak berubah. Gunakan ini untuk mendeklarasikan setelan konfigurasi tertentu yang harus ditetapkan pada pengujian analisis agar lulus.

aspek

Aspect aspect(implementation, attr_aspects=[], attrs={}, required_providers=[], required_aspect_providers=[], provides=[], requires=[], fragments=[], host_fragments=[], toolchains=[], incompatible_use_toolchain_transition=False, doc=None, *, apply_to_generating_rules=False, exec_compatible_with=[], exec_groups=None, subrules=[])

Membuat aspek baru. Hasil fungsi ini harus disimpan dalam nilai global. Lihat pengantar Aspek untuk detail selengkapnya.

Parameter

Parameter Deskripsi
implementation diperlukan
Fungsi Starlark yang menerapkan aspek ini, dengan tepat dua parameter: Target (target tempat aspek diterapkan) dan ctx (konteks aturan tempat target dibuat). Atribut target tersedia melalui kolom ctx.rule. Fungsi ini dievaluasi selama fase analisis untuk setiap penerapan aspek ke target.
attr_aspects urutan string; default-nya adalah []
Daftar nama atribut. Aspek menyebar di sepanjang dependensi yang ditentukan dalam atribut target dengan nama ini. Nilai umum di sini mencakup deps dan exports. Daftar ini juga dapat berisi satu string "*" untuk diterapkan di sepanjang semua dependensi target.
attrs dict; defaultnya adalah {}
Kamus yang mendeklarasikan semua atribut aspek. Atribut ini memetakan dari nama atribut ke objek atribut, seperti `attr.label` atau `attr.string` (lihat modul attr). Atribut aspek tersedia untuk fungsi penerapan sebagai kolom parameter ctx.

Atribut implisit yang dimulai dengan _ harus memiliki nilai default, dan memiliki jenis label atau label_list.

Atribut eksplisit harus memiliki jenis string, dan harus menggunakan pembatasan values. Atribut eksplisit membatasi aspek agar hanya digunakan pada aturan yang memiliki atribut dengan nama, jenis, dan nilai valid yang sama sesuai dengan batasan tersebut.

required_providers default-nya adalah []
Atribut ini memungkinkan aspek membatasi penerapannya hanya ke target yang aturannya mengiklankan penyedia yang diperlukan. Nilai harus berupa daftar yang berisi penyedia individual atau daftar penyedia, tetapi tidak keduanya. Misalnya, [[FooInfo], [BarInfo], [BazInfo, QuxInfo]] adalah nilai yang valid sedangkan [FooInfo, BarInfo, [BazInfo, QuxInfo]] adalah nilai yang tidak valid.

Daftar penyedia tidak bertingkat akan otomatis dikonversi menjadi daftar yang berisi satu daftar penyedia. Artinya, [FooInfo, BarInfo] akan otomatis dikonversi menjadi [[FooInfo, BarInfo]].

Untuk membuat beberapa target aturan (mis. some_rule) terlihat pada suatu aspek, some_rule harus mengiklankan semua penyedia dari setidaknya salah satu daftar penyedia wajib. Misalnya, jika required_providers dari suatu aspek adalah [[FooInfo], [BarInfo], [BazInfo, QuxInfo]], aspek ini dapat melihat target some_rule jika dan hanya jika some_rule menyediakan FooInfo, atau BarInfo, atau keduanya BazInfo dan QuxInfo.

required_aspect_providers defaultnya adalah []
Atribut ini memungkinkan aspek ini memeriksa aspek lain. Nilai harus berupa daftar yang berisi penyedia individual atau daftar penyedia, tetapi tidak keduanya. Misalnya, [[FooInfo], [BarInfo], [BazInfo, QuxInfo]] adalah nilai yang valid sedangkan [FooInfo, BarInfo, [BazInfo, QuxInfo]] adalah nilai yang tidak valid.

Daftar penyedia tidak bertingkat akan otomatis dikonversi menjadi daftar yang berisi satu daftar penyedia. Artinya, [FooInfo, BarInfo] akan otomatis dikonversi menjadi [[FooInfo, BarInfo]].

Untuk membuat aspek lain (misalnya, other_aspect) terlihat pada aspek ini, other_aspect harus menyediakan semua penyedia dari setidaknya salah satu daftar. Pada contoh [[FooInfo], [BarInfo], [BazInfo, QuxInfo]], aspek ini dapat melihat other_aspect jika dan hanya jika other_aspect menyediakan FooInfo, atau BarInfo, atau BazInfo dan QuxInfo.

provides default-nya adalah []
Daftar penyedia yang harus ditampilkan oleh fungsi penerapan.

Akan terjadi error jika fungsi implementasi menghilangkan jenis penyedia apa pun yang tercantum di sini dari nilai yang ditampilkan. Namun, fungsi implementasi dapat menampilkan penyedia tambahan yang tidak tercantum di sini.

Setiap elemen daftar adalah objek *Info yang ditampilkan oleh provider(), kecuali penyedia lama yang diwakili oleh nama string-nya.Jika target aturan digunakan sebagai dependensi untuk target yang mendeklarasikan penyedia wajib, Anda tidak perlu menentukan penyedia tersebut di sini. Fungsi implementasi cukup menampilkannya. Namun, menentukan praktik terbaik akan dianggap sebagai praktik terbaik, meskipun tidak wajib. Namun, kolom required_providers dari aspek mengharuskan penyedia untuk ditentukan di sini.

requires urutan Aspek; defaultnya adalah []
Daftar aspek yang perlu diterapkan sebelum aspek ini.
fragments urutan string; defaultnya adalah []
Daftar nama fragmen konfigurasi yang diperlukan aspek dalam konfigurasi target.
host_fragments urutan string; defaultnya adalah []
Daftar nama fragmen konfigurasi yang diperlukan aspek dalam konfigurasi host.
toolchains sequence; defaultnya adalah []
Jika ditetapkan, set toolchain yang diperlukan aturan ini. Daftar ini dapat berisi objek String, Label, atau StarlarkToolchainTypeApi, dalam kombinasi apa pun. Toolchain akan ditemukan dengan memeriksa platform saat ini, dan diberikan ke penerapan aturan melalui ctx.toolchain.
incompatible_use_toolchain_transition defaultnya adalah False
Tidak digunakan lagi, tidak lagi digunakan dan harus dihapus.
doc string; atau None; defaultnya adalah None
Deskripsi aspek yang dapat diekstrak dengan alat pembuat dokumentasi.
apply_to_generating_rules defaultnya adalah False
Jika benar, aspek akan, saat diterapkan ke file output, akan diterapkan ke aturan penghasil file output.

Misalnya, anggaplah suatu aspek menyebarkan secara transitif melalui atribut `deps` dan diterapkan ke target `alpha`. Misalkan `alpha` memiliki `deps = [':beta_output']`, dengan `beta_output` adalah output yang dideklarasikan dari `beta` target. Misalkan `beta` memiliki target `charlie` sebagai salah satu `charlie` targetnya, maka jika `apply_to_wireframe_rules=True itu akan menyebarkan aspek.

Salah secara default.

exec_compatible_with urutan string; defaultnya adalah []
Daftar batasan pada platform eksekusi yang berlaku untuk semua instance dari aspek ini.
exec_groups dict; atau None; defaultnya adalah None
Dict nama grup eksekusi (string) ke exec_group. Jika ditetapkan, memungkinkan aspek untuk menjalankan tindakan di beberapa platform eksekusi dalam satu instance. Lihat dokumentasi grup eksekusi untuk info selengkapnya.
subrules urutan Subaturan; defaultnya adalah []
Eksperimental: daftar subaturan yang digunakan oleh aspek ini.

configuration_field

LateBoundDefault configuration_field(fragment, name)

Mereferensikan nilai default batas akhir untuk atribut jenis label. Nilai disebut 'late-bound' jika konfigurasi harus dibuat sebelum menentukan nilai. Setiap atribut yang menggunakan ini sebagai nilai harus bersifat pribadi.

Contoh penggunaan:

Menentukan atribut aturan:

'_foo': attr.label(default=configuration_field(fragment='java', name='toolchain'))

Mengakses dalam implementasi aturan:

  def _rule_impl(ctx):
    foo_info = ctx.attr._foo
    ...

Parameter

Parameter Deskripsi
fragment wajib
Nama fragmen konfigurasi yang berisi nilai batas akhir.
name wajib
Nama nilai yang akan diperoleh dari fragmen konfigurasi.

dependensi

depset depset(direct=None, order="default", *, transitive=None)

Membuat dependensi. Parameter direct adalah daftar elemen langsung dari dependensi yang dibuat, dan parameter transitive adalah daftar dependensi yang elemennya menjadi elemen tidak langsung dari dependensi yang dibuat. Urutan elemen yang ditampilkan saat dependensi dikonversi ke daftar ditentukan oleh parameter order. Lihat Ringkasan Depset untuk mengetahui informasi selengkapnya.

Semua elemen (langsung dan tidak langsung) dari dependensi harus berjenis sama, seperti yang diperoleh dengan ekspresi type(x).

Karena set berbasis hash digunakan untuk menghilangkan duplikat selama iterasi, semua elemen dependensi harus dapat di-hash. Namun, invarian tersebut saat ini tidak diperiksa secara konsisten di semua konstruktor. Gunakan tanda --incompatible_always_check_depset_elements untuk mengaktifkan pemeriksaan yang konsisten; ini akan menjadi perilaku default pada rilis mendatang; lihat Masalah 10313.

Selain itu, elemen saat ini harus tidak dapat diubah, meskipun pembatasan ini akan disesuaikan di masa mendatang.

Urutan dependensi yang dibuat harus kompatibel dengan urutan dependensi transitive-nya. Pesanan "default" kompatibel dengan pesanan lainnya, semua pesanan lainnya hanya kompatibel dengan pesanan itu sendiri.

Parameter

Parameter Deskripsi
direct sequence; atau None; defaultnya adalah None
Daftar elemen direct dari dependensi.
order default-nya adalah "default"
Strategi traversal untuk dependensi baru. Lihat di sini untuk mengetahui kemungkinan nilai.
transitive urutan dependensi; atau None; default-nya adalah None
Daftar dependensi yang elemennya akan menjadi elemen tidak langsung dari dependensi tersebut.

exec_group

exec_group exec_group(toolchains=[], exec_compatible_with=[])

Membuat grup eksekusi yang dapat digunakan untuk membuat tindakan untuk platform eksekusi tertentu selama penerapan aturan.

Parameter

Parameter Deskripsi
toolchains sequence; default-nya adalah []
Kumpulan toolchain yang diperlukan grup eksekusi ini. Daftar ini dapat berisi objek String, Label, atau StarlarkToolchainTypeApi, dalam kombinasi apa pun.
exec_compatible_with urutan string; defaultnya adalah []
Daftar batasan pada platform eksekusi.

module_extension

unknown module_extension(implementation, *, tag_classes={}, doc=None, environ=[], os_dependent=False, arch_dependent=False)

Membuat ekstensi modul baru. Simpan dalam nilai global agar dapat diekspor dan digunakan dalam file MODULE.bazel.

Parameter

Parameter Deskripsi
implementation required
Fungsi yang mengimplementasikan ekstensi modul ini. Harus mengambil satu parameter, module_ctx. Fungsi ini dipanggil satu kali di awal build untuk menentukan kumpulan repositori yang tersedia.
tag_classes defaultnya adalah {}
Kamus untuk mendeklarasikan semua class tag yang digunakan oleh ekstensi. Class ini memetakan dari nama class tag ke objek tag_class.
doc string; atau None; defaultnya adalah None
Deskripsi ekstensi modul yang dapat diekstrak dengan alat pembuat dokumentasi.
environ urutan string; defaultnya adalah []
Memberikan daftar variabel lingkungan yang menjadi dependensi ekstensi modul ini. Jika variabel lingkungan dalam daftar tersebut berubah, ekstensi akan dievaluasi ulang.
os_dependent defaultnya adalah False
Menunjukkan apakah ekstensi ini bergantung pada OS atau tidak
arch_dependent defaultnya adalah False
Menunjukkan apakah ekstensi ini bergantung pada arsitektur atau tidak

penyedia

unknown provider(doc=None, *, fields=None, init=None)

Mendefinisikan simbol penyedia. Penyedia dapat dibuat instance-nya dengan memanggilnya, atau digunakan langsung sebagai kunci untuk mengambil instance penyedia tersebut dari target. Contoh:
MyInfo = provider()
...
def _my_library_impl(ctx):
    ...
    my_info = MyInfo(x = 2, y = 3)
    # my_info.x == 2
    # my_info.y == 3
    ...

Lihat Aturan (Penyedia) untuk mendapatkan panduan komprehensif tentang cara menggunakan penyedia.

Menampilkan nilai callable Provider jika init tidak ditentukan.

Jika init ditentukan, menampilkan tuple yang berisi 2 elemen: nilai callable Provider dan nilai callable konstruktor mentah. Lihat Aturan (Inisialisasi kustom penyedia kustom) dan pembahasan parameter init di bawah untuk detailnya.

Parameter

Parameter Deskripsi
doc string; atau None; defaultnya adalah None
Deskripsi penyedia yang dapat diekstrak dengan alat pembuat dokumentasi.
fields urutan string; atau dict; atau None; default-nya adalah None
Jika ditentukan, akan membatasi kumpulan kolom yang diizinkan.
Kemungkinan nilainya adalah:
  • daftar kolom:
    provider(fields = ['a', 'b'])

  • nama kolom kamus -> dokumentasi:
    provider(
           fields = { 'a' : 'Documentation for a', 'b' : 'Documentation for b' })
Semua kolom bersifat opsional.
init callable; atau None; defaultnya adalah None
Callback opsional untuk memproses pra-pemrosesan dan memvalidasi nilai kolom penyedia selama pembuatan instance. Jika init ditentukan, provider() akan menampilkan tuple yang berisi 2 elemen: simbol penyedia normal dan konstruktor raw.

Berikut deskripsi persisnya; lihat Aturan (Inisialisasi kustom penyedia) untuk diskusi dan kasus penggunaan yang intuitif.

Biarkan P menjadi simbol penyedia yang dibuat dengan memanggil provider(). Secara konseptual, instance P dihasilkan dengan memanggil fungsi konstruktor default c(*args, **kwargs), yang melakukan hal berikut:

  • Jika args tidak kosong, akan terjadi error.
  • Jika parameter fields ditentukan saat provider() dipanggil, dan jika kwargs berisi kunci yang tidak tercantum dalam fields, error akan terjadi.
  • Jika tidak, c akan menampilkan instance baru yang memiliki kolom bernama k dengan nilai v untuk setiap entri k: v di kwargs.
Jika callback init tidak diberikan, panggilan ke simbol P itu sendiri akan bertindak sebagai panggilan ke fungsi konstruktor default c; dengan kata lain, P(*args, **kwargs) menampilkan c(*args, **kwargs). Misalnya,
MyInfo = provider()
m = MyInfo(foo = 1)
akan secara langsung membuat m menjadi instance MyInfo dengan m.foo == 1.

Namun, jika init ditentukan, panggilan P(*args, **kwargs) akan melakukan langkah-langkah berikut:

  1. Callback dipanggil sebagai init(*args, **kwargs), yaitu, dengan argumen posisi dan kata kunci yang sama persis seperti yang diteruskan ke P.
  2. Nilai yang ditampilkan init diharapkan berupa kamus, d, yang kuncinya adalah string nama kolom. Jika tidak, akan terjadi error.
  3. Instance P baru dibuat seolah-olah dengan memanggil konstruktor default dengan entri d sebagai argumen kata kunci, seperti dalam c(**d).

Catatan: langkah di atas menyiratkan bahwa error terjadi jika *args atau **kwargs tidak cocok dengan tanda tangan init, atau evaluasi isi init gagal (mungkin sengaja melalui panggilan ke fail()), atau jika nilai yang ditampilkan init bukan kamus dengan skema yang diharapkan.

Dengan cara ini, callback init akan menggeneralisasi konstruksi penyedia normal dengan mengizinkan argumen posisi dan logika arbitrer untuk prapemrosesan dan validasi. Kebijakan ini tidak memungkinkan pengelakan daftar fields yang diizinkan.

Jika init ditentukan, nilai yang ditampilkan provider() menjadi (P, r) tuple, dengan r sebagai konstruktor mentah. Bahkan, perilaku r persis seperti fungsi konstruktor default c yang dibahas di atas. Biasanya, r terikat dengan variabel yang namanya diawali dengan garis bawah, sehingga hanya file .bzl saat ini yang memiliki akses langsung ke variabel tersebut:

MyInfo, _new_myinfo = provider(init = ...)

repository_rule

callable repository_rule(implementation, *, attrs=None, local=False, environ=[], configure=False, remotable=False, doc=None)

Membuat aturan repositori baru. Simpan dalam nilai global agar dapat dimuat dan dipanggil dari file WORKSPACE.

Parameter

Parameter Deskripsi
implementation diperlukan
fungsi yang mengimplementasikan aturan ini. Harus memiliki satu parameter, repository_ctx. Fungsi ini dipanggil selama fase pemuatan untuk setiap instance aturan.
attrs dict; atau None; defaultnya adalah kamus None
untuk mendeklarasikan semua atribut aturan. Atribut ini memetakan dari nama atribut ke objek atribut (lihat modul attr). Atribut yang dimulai dengan _ bersifat pribadi, dan dapat digunakan untuk menambahkan dependensi implisit pada label ke file (aturan repositori tidak dapat bergantung pada artefak yang dihasilkan). Atribut name ditambahkan secara implisit dan tidak boleh ditentukan.
local default-nya adalah False
Tunjukkan bahwa aturan ini mengambil semuanya dari sistem lokal dan harus dievaluasi ulang pada setiap pengambilan.
environ urutan string; defaultnya adalah []
Memberikan daftar variabel lingkungan yang menjadi dependensi aturan repositori ini. Jika variabel lingkungan dalam daftar tersebut berubah, repositori akan diambil ulang.
configure Nilai defaultnya adalah False
Menunjukkan bahwa repositori memeriksa sistem untuk tujuan konfigurasi
remotable default-nya adalah False
Eksperimental. Parameter ini bersifat eksperimental dan dapat berubah setiap saat. Jangan bergantung pada hal itu. Fitur ini dapat diaktifkan secara eksperimental dengan menetapkan ---experimental_repo_remote_exec
Kompatibel dengan eksekusi jarak jauh
doc string; atau None; defaultnya adalah None
Deskripsi aturan repositori yang dapat diekstrak dengan alat pembuat dokumentasi.

aturan

callable rule(implementation, *, test=unbound, attrs={}, outputs=None, executable=unbound, output_to_genfiles=False, fragments=[], host_fragments=[], _skylark_testable=False, toolchains=[], incompatible_use_toolchain_transition=False, doc=None, provides=[], exec_compatible_with=[], analysis_test=False, build_setting=None, cfg=None, exec_groups=None, initializer=None, parent=None, extendable=None, subrules=[])

Membuat aturan baru, yang dapat dipanggil dari file BUILD atau makro untuk membuat target.

Aturan harus ditetapkan ke variabel global dalam file .bzl; nama variabel global adalah nama aturan.

Aturan pengujian harus memiliki nama yang diakhiri dengan _test, sedangkan aturan lainnya tidak boleh memiliki akhiran ini. (Pembatasan ini hanya berlaku untuk aturan, bukan targetnya.)

Parameter

Parameter Deskripsi
implementation diperlukan
fungsi Starlark yang menerapkan aturan ini harus memiliki satu parameter: ctx. Fungsi ini dipanggil selama fase analisis untuk setiap instance aturan. Dapat mengakses atribut yang diberikan oleh pengguna. Aplikasi harus membuat tindakan untuk menghasilkan semua output yang dideklarasikan.
test bool; defaultnya adalah unbound
Apakah aturan ini merupakan aturan pengujian, artinya, apakah aturan tersebut mungkin menjadi subjek perintah blaze test. Semua aturan pengujian secara otomatis dianggap dapat dieksekusi; aturan pengujian tidak diperlukan (dan tidak disarankan) untuk secara eksplisit menetapkan executable = True. Nilai ditetapkan secara default ke False. Lihat halaman Aturan untuk informasi selengkapnya.
attrs dict; defaultnya adalah kamus {}
untuk mendeklarasikan semua atribut aturan. Atribut ini memetakan dari nama atribut ke objek atribut (lihat modul attr). Atribut yang dimulai dengan _ bersifat pribadi, dan dapat digunakan untuk menambahkan dependensi implisit pada label. Atribut name ditambahkan secara implisit dan tidak boleh ditentukan. Atribut visibility, deprecation, tags, testonly, dan features ditambahkan secara implisit dan tidak dapat diganti. Sebagian besar aturan hanya memerlukan sedikit atribut. Untuk membatasi penggunaan memori, fungsi aturan memberlakukan batas pada ukuran atr.
outputs dict; atau None; atau fungsi; default-nya adalah None
Tidak digunakan lagi. Parameter ini tidak digunakan lagi dan akan segera dihapus. Jangan bergantung pada hal itu. Fungsi ini dinonaktifkan dengan ---incompatible_no_rule_outputs_param. Gunakan tanda ini untuk memverifikasi bahwa kode Anda kompatibel dengan penghapusan yang akan segera dilakukan.
Parameter ini tidak digunakan lagi. Migrasikan aturan agar menggunakan OutputGroupInfo atau attr.output sebagai gantinya.

Skema untuk menentukan output yang dideklarasikan sebelumnya. Tidak seperti atribut output dan output_list, pengguna tidak menentukan label untuk file ini. Lihat halaman Aturan untuk mengetahui informasi selengkapnya tentang output yang dipradeklarasikan.

Nilai argumen ini adalah kamus atau fungsi callback yang menghasilkan kamus. Callback berfungsi mirip dengan atribut dependensi yang dihitung: Nama parameter fungsi dicocokkan dengan atribut aturan, jadi misalnya jika Anda meneruskan outputs = _my_func dengan definisi def _my_func(srcs, deps): ..., fungsi tersebut memiliki akses ke atribut srcs dan deps. Apakah kamus ditentukan secara langsung atau melalui suatu fungsi, kamus akan ditafsirkan sebagai berikut.

Setiap entri dalam kamus membuat output yang dideklarasikan sebelumnya dengan kuncinya adalah ID dan nilainya adalah template string yang menentukan label output. Dalam fungsi implementasi aturan, ID menjadi nama kolom yang digunakan untuk mengakses File output di ctx.outputs. Label output memiliki paket yang sama seperti aturan, dan bagian setelah paket dihasilkan dengan mengganti setiap placeholder formulir "%{ATTR}" dengan string yang dibentuk dari nilai atribut ATTR:

  • Atribut tipe string diganti kata demi kata.
  • Atribut jenis label menjadi bagian label setelah paket, tanpa ekstensi file. Misalnya, label "//pkg:a/b.c" menjadi "a/b".
  • Atribut jenis output menjadi bagian label setelah paket, termasuk ekstensi file (untuk contoh di atas, "a/b.c").
  • Semua atribut dengan jenis daftar (misalnya, attr.label_list) yang digunakan dalam placeholder harus memiliki hanya satu elemen. Konversinya sama dengan versi non-daftarnya (attr.label).
  • Jenis atribut lainnya mungkin tidak muncul di placeholder.
  • Placeholder non-atribut khusus %{dirname} dan %{basename} diperluas ke bagian label aturan tersebut, tidak termasuk paketnya. Misalnya, dalam "//pkg:a/b.c", dirname-nya adalah a dan basename-nya adalah b.c.

Dalam praktiknya, placeholder substitusi yang paling umum adalah "%{name}". Misalnya, untuk target bernama "foo", output dict {"bin": "%{name}.exe"} akan mendeklarasikan sebelumnya output bernama foo.exe yang dapat diakses dalam fungsi implementasi sebagai ctx.outputs.bin.

executable bool; defaultnya adalah unbound
Apakah aturan ini dianggap dapat dieksekusi, artinya, apakah aturan ini mungkin menjadi subjek perintah blaze run. Nilai defaultnya adalah False. Lihat halaman Aturan untuk informasi selengkapnya.
output_to_genfiles defaultnya adalah False
Jika true (benar), file akan dibuat di direktori genfiles, bukan direktori bin. Jangan tetapkan tanda ini, kecuali Anda memerlukannya untuk kompatibilitas dengan aturan yang ada (misalnya saat membuat file header untuk C++).
fragments urutan string; defaultnya adalah []
Daftar nama fragmen konfigurasi yang diwajibkan dalam konfigurasi target.
host_fragments urutan string; defaultnya adalah []
Daftar nama fragmen konfigurasi yang diwajibkan dalam konfigurasi host.
_skylark_testable default-nya adalah False
(Eksperimental)

Jika benar, aturan ini akan mengekspos tindakannya untuk diperiksa berdasarkan aturan yang bergantung pada aturan tersebut melalui penyedia Actions. Penyedia juga tersedia untuk aturan itu sendiri dengan memanggil ctx.created_actions().

Perintah ini hanya boleh digunakan untuk menguji perilaku waktu analisis aturan Starlark. Tanda ini dapat dihapus pada masa mendatang.
toolchains sequence; defaultnya adalah []
Jika ditetapkan, set toolchain yang diperlukan aturan ini. Daftar ini dapat berisi objek String, Label, atau StarlarkToolchainTypeApi, dalam kombinasi apa pun. Toolchain akan ditemukan dengan memeriksa platform saat ini, dan diberikan ke penerapan aturan melalui ctx.toolchain.
incompatible_use_toolchain_transition defaultnya adalah False
Tidak digunakan lagi, tidak lagi digunakan dan harus dihapus.
doc string; atau None; defaultnya adalah None
Deskripsi aturan yang dapat diekstrak dengan alat pembuat dokumentasi.
provides default-nya adalah []
Daftar penyedia yang harus ditampilkan oleh fungsi penerapan.

Akan terjadi error jika fungsi implementasi menghilangkan jenis penyedia apa pun yang tercantum di sini dari nilai yang ditampilkan. Namun, fungsi implementasi dapat menampilkan penyedia tambahan yang tidak tercantum di sini.

Setiap elemen daftar adalah objek *Info yang ditampilkan oleh provider(), kecuali penyedia lama yang diwakili oleh nama string-nya.Jika target aturan digunakan sebagai dependensi untuk target yang mendeklarasikan penyedia wajib, Anda tidak perlu menentukan penyedia tersebut di sini. Fungsi implementasi cukup menampilkannya. Namun, menentukan praktik terbaik akan dianggap sebagai praktik terbaik, meskipun tidak wajib. Namun, kolom required_providers dari aspek mengharuskan penyedia untuk ditentukan di sini.

exec_compatible_with urutan string; defaultnya adalah []
Daftar batasan pada platform eksekusi yang berlaku untuk semua target jenis aturan ini.
analysis_test default-nya adalah False
Jika benar, aturan ini akan diperlakukan sebagai pengujian analisis.

Catatan: Aturan pengujian analisis pada dasarnya ditentukan menggunakan infrastruktur yang disediakan di library Starlark inti. Lihat Pengujian untuk panduan.

Jika ditetapkan sebagai aturan pengujian analisis, aturan diizinkan untuk menggunakan transisi konfigurasi yang ditetapkan menggunakan analysis_test_transition pada atributnya, tetapi memilih beberapa batasan:

  • Target aturan ini memiliki batas jumlah dependensi transitif yang mungkin dimilikinya.
  • Aturan ini dianggap sebagai aturan pengujian (seolah-olah test=True telah ditetapkan). Ini menggantikan nilai test
  • Fungsi penerapan aturan mungkin tidak mendaftarkan tindakan. Sebagai gantinya, aplikasi harus mendaftarkan hasil lulus/gagal dengan memberikan AnalysisTestResultInfo.
build_setting BuildSetting; atau None; default-nya adalah None
Jika ditetapkan, menjelaskan jenis build setting aturan ini. Lihat modul config. Jika kebijakan ini ditetapkan, atribut wajib bernama "build_setting_default" akan ditambahkan secara otomatis ke aturan ini, dengan jenis yang sesuai dengan nilai yang diteruskan di sini.
cfg default-nya adalah None
Jika ditetapkan, akan mengarah ke transisi konfigurasi, aturan akan diterapkan ke konfigurasinya sendiri sebelum analisis.
exec_groups dict; atau None; defaultnya adalah None
Dict nama grup eksekusi (string) ke exec_group. Jika ditetapkan, aturan dapat menjalankan tindakan di beberapa platform eksekusi dalam satu target. Lihat dokumentasi grup eksekusi untuk info selengkapnya.
initializer defaultnya adalah None
Eksperimental: fungsi Stalark melakukan inisialisasi atribut aturan.

Fungsi ini dipanggil pada waktu pemuatan untuk setiap instance aturan. Ini dipanggil dengan nilai atribut publik yang ditentukan oleh aturan (bukan dengan atribut generik, misalnya name atau tags).

Metode ini harus menampilkan kamus dari nama atribut ke nilai yang diinginkan. Atribut yang tidak dikembalikan tidak akan terpengaruh. Menampilkan None sebagai nilai akan menghasilkan nilai default yang ditentukan dalam definisi atribut.

Initializer dievaluasi sebelum nilai default yang ditentukan dalam definisi atribut. Akibatnya, jika parameter dalam tanda tangan penginisialisasi berisi nilai default, parameter tersebut akan menimpa nilai default dari definisi atribut (kecuali jika menampilkan None).

Demikian pula, jika parameter dalam tanda tangan penginisialisasi tidak memiliki default, parameter akan menjadi wajib. Sebaiknya hapus setelan default/wajib pada definisi atribut dalam kasus tersebut.

Sebaiknya gunakan **kwargs untuk atribut yang tidak ditangani.

Untuk aturan yang diperluas, semua penginisialisasi dipanggil dari turunan ke ancestor. Setiap penginisialisasi hanya diteruskan atribut publik yang diketahuinya.

parent defaultnya adalah None
Eksperimental: aturan Stalark yang diperluas. Saat ditetapkan, atribut publik digabungkan dengan penyedia yang diiklankan. Aturan cocok dengan executable dan test dari induk. Nilai fragments, toolchains, exec_compatible_with, dan exec_groups digabungkan. Parameter yang lama atau yang tidak digunakan lagi mungkin tidak ditetapkan.
extendable bool; atau Label; atau string; atau None; default-nya adalah None
Eksperimental: Label daftar yang diizinkan yang menentukan aturan yang dapat memperluas aturan ini. Nilai ini juga dapat disetel ke True/False untuk selalu mengizinkan/tidak mengizinkan perluasan. Secara default, Bazel selalu mengizinkan ekstensi.
subrules urutan dari Subaturan; defaultnya adalah []
Eksperimental: Daftar subaturan yang digunakan oleh aturan ini.

pilih

unknown select(x, no_match_error='')

select() adalah fungsi bantuan yang membuat atribut aturan dapat dikonfigurasi. Lihat ensiklopedia build untuk mengetahui detailnya.

Parameter

Parameter Deskripsi
x required
dict yang memetakan kondisi konfigurasi ke nilai. Setiap kunci adalah Label atau string label yang mengidentifikasi instance config_setting atau constraint_value. Lihat dokumentasi tentang makro untuk mengetahui kapan harus menggunakan Label, bukan string.
no_match_error default-nya adalah ''
Error kustom opsional yang akan dilaporkan jika tidak ada kondisi yang cocok.

subaturan

Subrule subrule(implementation, attrs={}, toolchains=[], fragments=[], subrules=[])

Membuat instance baru dari subaturan. Hasil fungsi ini harus disimpan dalam variabel global sebelum dapat digunakan.

Parameter

Parameter Deskripsi
implementation function; diperlukan
Fungsi Starlark yang menerapkan subaturan ini
attrs dict; defaultnya adalah {}
Kamus untuk mendeklarasikan semua atribut (pribadi) dari subaturan.

Sub-aturan hanya boleh memiliki atribut pribadi yang diketik pada label (yaitu label atau daftar-label). Nilai yang di-resolve yang sesuai dengan label ini otomatis diteruskan oleh Bazel ke fungsi implementasi subaturan sebagai argumen bernama (sehingga fungsi implementasi diperlukan untuk menerima parameter bernama yang cocok dengan nama atribut). Jenis nilai ini akan berupa:

  • FilesToRunProvider untuk atribut label dengan executable=True
  • File untuk atribut label dengan allow_single_file=True
  • Target untuk semua atribut label lainnya
  • [Target] untuk semua atribut daftar label
toolchains sequence; defaultnya adalah []
Jika ditetapkan, kumpulan toolchain yang diperlukan subaturan ini. Daftar ini dapat berisi objek String, Label, atau StarlarkToolchainTypeApi, dalam kombinasi apa pun. Toolchain akan ditemukan dengan memeriksa platform saat ini, dan diberikan ke implementasi subaturan melalui ctx.toolchains.
fragments urutan string; defaultnya adalah []
Daftar nama fragmen konfigurasi yang diperlukan subaturan dalam konfigurasi target.
subrules urutan dari Subaturan; defaultnya adalah []
Daftar subaturan lain yang diperlukan oleh subaturan ini.

tag_class

tag_class tag_class(attrs={}, *, doc=None)

Membuat objek tag_class baru, yang menentukan skema atribut untuk class tag, yang merupakan objek data yang dapat digunakan oleh ekstensi modul.

Parameter

Parameter Deskripsi
attrs defaultnya adalah {}
Kamus untuk mendeklarasikan semua atribut class tag ini. Atribut ini memetakan dari nama atribut ke objek atribut (lihat modul attr).
doc string; atau None; defaultnya adalah None
Deskripsi class tag yang dapat diekstrak dengan alat pembuat dokumentasi.

visibilitas

None visibility(value)

Menyetel visibilitas pemuatan modul .bzl yang sedang diinisialisasi.

Visibilitas beban modul mengatur apakah file BUILD dan .bzl lain dapat memuatnya atau tidak. (Hal ini berbeda dengan visibilitas target file sumber .bzl pokok, yang mengatur apakah file dapat muncul sebagai dependensi target lain atau tidak.) Visibilitas pemuatan berfungsi pada tingkat paket: Untuk memuat modul, file yang melakukan pemuatan harus aktif dalam paket yang telah diberi visibilitas ke modul. Modul selalu dapat dimuat dalam paketnya sendiri, terlepas dari visibilitasnya.

visibility() hanya dapat dipanggil sekali per file .bzl, dan hanya pada level teratas, bukan di dalam fungsi. Gaya yang direkomendasikan adalah menempatkan panggilan ini tepat di bawah pernyataan load() dan logika singkat yang diperlukan untuk menentukan argumen.

Jika tanda --check_bzl_visibility disetel ke salah (false), pelanggaran visibilitas pemuatan akan memberikan peringatan, tetapi tidak akan menggagalkan build.

Parameter

Parameter Deskripsi
value wajib
Daftar string spesifikasi paket, atau string spesifikasi paket tunggal.

Spesifikasi paket mengikuti format yang sama seperti untuk package_group, kecuali bahwa spesifikasi paket negatif tidak diizinkan. Artinya, spesifikasi dapat memiliki bentuk:

  • "//foo": paket //foo
  • "//foo/...": paket //foo dan semua sub-paketnya.
  • "public" atau "private": masing-masing paket atau tanpa paket

Sintaksis "@" tidak diizinkan; semua spesifikasi ditafsirkan secara relatif terhadap repositori modul saat ini.

Jika value berupa daftar string, kumpulan paket yang diberi visibilitas ke modul ini adalah gabungan paket yang direpresentasikan oleh setiap spesifikasi. (Daftar kosong memiliki efek yang sama dengan private.) Jika value adalah string tunggal, string tersebut akan diperlakukan seolah-olah merupakan daftar singleton [value].

Perhatikan bahwa tanda --incompatible_package_group_has_public_syntax dan --incompatible_fix_package_group_reporoot_syntax tidak berpengaruh pada argumen ini. Nilai "public" dan "private" selalu tersedia, dan "//..." selalu ditafsirkan sebagai "semua paket dalam repositori saat ini".