file .bzl

Laporkan masalah

Halaman ini berisi metode global yang tersedia di semua file .bzl.

Anggota

Analysis_test_transisi

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. Aturan tersebut memiliki batasan kemampuan (misalnya, ukuran hierarki dependensinya terbatas), sehingga transisi yang dibuat menggunakan fungsi ini akan memiliki cakupan potensial yang terbatas jika dibandingkan dengan transisi yang dibuat menggunakan transition().

Fungsi ini terutama dirancang untuk memfasilitasi library inti Analysis Test Framework. Lihat dokumentasinya (atau penerapannya) untuk mengetahui praktik terbaik.

Parameter

Parameter Deskripsi
settings wajib
Kamus yang berisi informasi tentang setelan konfigurasi yang harus ditetapkan oleh transisi konfigurasi ini. Kunci adalah label setelan build dan nilainya adalah nilai pasca-transisinya yang baru. Semua setelan lainnya tidak berubah. Gunakan metode ini untuk mendeklarasikan setelan konfigurasi tertentu yang harus ditetapkan agar pengujian lulus.

aspek

Aspect aspect(implementation, attr_aspects=[], attrs=None, 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)

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

Parameter

Parameter Deskripsi
implementation wajib
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 suatu aspek ke target.
attr_aspects sequence of strings; default = []
Daftar nama atribut. Aspek ini disebarkan di sepanjang dependensi yang ditentukan dalam atribut target dengan nama-nama ini. Nilai umum di sini meliputi deps dan exports. Daftar ini juga dapat berisi satu string "*" untuk diterapkan di sepanjang dependensi target.
attrs dict; or None; default = None
Kamus yang mendeklarasikan semua atribut aspek. Memetakan dari nama atribut ke objek atribut, seperti `attr.label` atau `attr.string` (lihat modul attr). Atribut aspek tersedia untuk fungsi implementasi 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 dengan aturan yang memiliki atribut dengan nama, jenis, dan nilai yang valid yang sesuai dengan batasan tersebut.

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

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

Agar beberapa target aturan (mis. some_rule) dapat dilihat oleh aspek, some_rule harus mengiklankan semua penyedia dari setidaknya salah satu daftar penyedia yang diperlukan. Misalnya, jika required_providers aspek adalah [[FooInfo], [BarInfo], [BazInfo, QuxInfo]], aspek ini dapat melihat target some_rule jika dan hanya jika some_rule menyediakan FooInfo, atau BarInfo, atau BazInfo dan QuxInfo.

required_aspect_providers default = []
Atribut ini memungkinkan aspek ini memeriksa aspek lainnya. Nilainya harus berupa daftar yang berisi penyedia individual atau daftar penyedia, tetapi tidak keduanya. Misalnya, [[FooInfo], [BarInfo], [BazInfo, QuxInfo]] adalah nilai yang valid, sementara [FooInfo, BarInfo, [BazInfo, QuxInfo]] tidak valid.

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

Agar aspek lain (misalnya other_aspect) terlihat dalam aspek ini, other_aspect harus menyediakan semua penyedia dari minimal 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 = []
Daftar penyedia yang harus ditampilkan oleh fungsi implementasi.

Ini adalah error jika fungsi implementasi menghilangkan salah satu jenis penyedia 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 bahwa penyedia lama direpresentasikan oleh nama stringnya.Jika target aturan digunakan sebagai dependensi untuk target yang mendeklarasikan penyedia yang diperlukan, penyedia tersebut tidak perlu ditentukan di sini. Fungsi implementasi akan menampilkannya dengan cukup. Namun, hal ini dianggap sebagai praktik terbaik untuk menentukannya, meskipun tidak wajib. Namun, kolom required_providers dari aspek mengharuskan penyedia ditentukan di sini.

requires sequence of Aspects; default = []
Daftar aspek yang perlu disebarkan sebelum aspek ini.
fragments sequence of strings; default = []
Daftar nama fragmen konfigurasi yang diperlukan aspek dalam konfigurasi target.
host_fragments sequence of strings; default = []
Daftar nama fragmen konfigurasi yang diperlukan oleh aspek dalam konfigurasi host.
toolchains sequence; default = []
Jika disetel, rangkaian toolchain yang diperlukan aturan ini. Daftar ini dapat berisi objek String, Label, atau Starlark TypeTypeApi, dalam kombinasi apa pun. Toolchain akan dapat ditemukan dengan memeriksa platform saat ini, dan diberikan ke implementasi aturan melalui ctx.toolchain.
incompatible_use_toolchain_transition default = False
Tidak digunakan lagi, hal ini tidak digunakan lagi dan harus dihapus.
doc string; or None; default = None
Deskripsi aspek yang dapat diekstrak oleh alat pembuat dokumentasi.
apply_to_generating_rules default = False
Jika true (benar), aspek akan diterapkan ke file output jika diterapkan ke file output.

Misalnya, aspek diperbanyak secara transitif melalui atribut `deps` dan diterapkan ke target `alpha`. Misalnya `alpha` memiliki `deps = [':beta_output']`, dengan `beta_output` adalah output yang dideklarasikan dari target `beta`. Misalnya `beta` memiliki target `charlie` sebagai salah satu dari `deps`. Jika `apply_to_generate_rules=True`, untuk aspek ini,

Salah secara default.

exec_compatible_with sequence of strings; default = []
Daftar batasan pada platform eksekusi yang berlaku untuk semua instance aspek ini.
exec_groups dict; or None; default = None
Mengubah nama grup eksekusi (string) menjadi exec_groups. Jika disetel, memungkinkan aspek untuk menjalankan tindakan di beberapa platform eksekusi dalam satu instance. Lihat dokumentasi grup eksekusi untuk mengetahui info selengkapnya.

kolom_konfigurasi

LateBoundDefault configuration_field(fragment, name)

Mereferensikan nilai default batas akhir untuk atribut jenis label. Nilai dianggap 'late-bound' jika memerlukan konfigurasi sebelum dibuat. 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 penerapan aturan:

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

Parameter

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

depset

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

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

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

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

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

Urutan depset yang dibuat harus kompatibel dengan urutan depset transitive. Pesanan "default" kompatibel dengan pesanan lain, semua pesanan lain hanya kompatibel dengan pesanannya sendiri.

Catatan tentang kompatibilitas mundur/maju. Fungsi ini saat ini menerima parameter items posisi. Library ini tidak digunakan lagi dan akan dihapus di masa mendatang, dan setelah dihapus, direct akan menjadi parameter posisi tunggal dari fungsi depset. Dengan demikian, kedua panggilan berikut setara dan tidak akan ketinggalan zaman:

depset(['a', 'b'], transitive = [...])
depset(direct = ['a', 'b'], transitive = [...])

Parameter

Parameter Deskripsi
direct sequence; or None; default = Tidak ada
Daftar elemen langsung dari depset.
order default = "default"
Strategi traversal untuk depset baru. Lihat di sini untuk mengetahui kemungkinan nilai.
transitive sequence of depsets; or None; default = Tidak ada
Daftar depset yang elemennya akan menjadi elemen tidak langsung dari depset.

grup_exec

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

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

Parameter

Parameter Deskripsi
toolchains sequence; default = []
Kumpulan toolchain yang diperlukan grup eksekusi ini. Daftar ini dapat berisi objek String, Label, atau Starlark TypeTypeApi, dalam kombinasi apa pun.
exec_compatible_with sequence of strings; default = []
Daftar batasan pada platform eksekusi.

modul_ekstensi

unknown module_extension(implementation, *, tag_classes={}, doc='')

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

Parameter

Parameter Deskripsi
implementation wajib
Fungsi yang mengimplementasikan ekstensi modul ini. Harus mengambil satu parameter, module_ctx. Fungsi ini dipanggil satu kali di awal build untuk menentukan kumpulan repo yang tersedia.
tag_classes default = {}
Kamus untuk mendeklarasikan semua class tag yang digunakan oleh ekstensi. Fungsi ini memetakan dari nama class tag ke objek tag_class.
doc default = ''
Deskripsi ekstensi modul yang dapat diekstrak oleh alat pembuat dokumentasi.

penyedia

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

Menentukan 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 panduan komprehensif mengenai cara menggunakan penyedia.

Menampilkan nilai callable Provider jika init tidak ditentukan.

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

Parameter

Parameter Deskripsi
doc string; or None; default = None
Deskripsi penyedia yang dapat diekstrak oleh alat pembuat dokumentasi.
fields sequence of strings; or dict; or None; default = None
Jika ditentukan, akan membatasi kumpulan kolom yang diizinkan.
Nilai yang memungkinkan 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; or None; default = None
Callback opsional untuk pra-pemrosesan dan memvalidasi nilai kolom penyedia selama pembuatan instance. Jika init ditentukan, provider() akan menampilkan tuple 2 elemen: simbol penyedia normal dan konstruktor mentah.

Deskripsi yang tepat akan diikuti; 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 dibuat dengan memanggil fungsi konstruktor default c(*args, **kwargs), yang melakukan hal berikut:

  • Jika args tidak kosong, error akan terjadi.
  • Jika parameter fields ditentukan saat provider() dipanggil, dan terjadi error kwargs jika berisi kunci yang tidak tercantum dalam fields.
  • Jika tidak, c akan menampilkan instance baru yang memiliki, untuk setiap entri k: v di kwargs, kolom bernama k dengan nilai v.
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 membuatnya sederhana sehingga m adalah 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, berarti terjadi error.
  3. Instance P baru dihasilkan seolah-olah dengan memanggil konstruktor default dengan entri d sebagai argumen kata kunci, seperti dalam c(**d).

Catatan: langkah-langkah di atas menunjukkan 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 menggeneralisasi konstruksi penyedia normal dengan mengizinkan argumen posisi dan logika arbitrer untuk pra-pemrosesan dan validasi. Tindakan ini tidak memungkinkan pengelakan daftar fields yang diizinkan.

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

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

repositori_rule

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

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

Parameter

Parameter Deskripsi
implementation memerlukan
fungsi yang menerapkan aturan ini. Harus memiliki satu parameter, repository_ctx. Fungsi ini dipanggil selama fase pemuatan untuk setiap instance aturan.
attrs dict; or None; default = Tidak ada
kamus untuk mendeklarasikan semua atribut aturan. 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 = False
Menunjukkan bahwa aturan ini mengambil semuanya dari sistem lokal dan harus dievaluasi ulang pada setiap pengambilan.
environ sequence of strings; default = []
Memberikan daftar variabel lingkungan yang menjadi dependensi aturan repositori ini. Jika variabel lingkungan dalam daftar tersebut berubah, repositori akan diambil ulang.
configure default = False
Tunjukkan bahwa repositori memeriksa sistem untuk tujuan konfigurasi
remotable default = False
Eksperimental. Parameter ini bersifat eksperimental dan dapat berubah sewaktu-waktu. Jangan bergantung padanya. Ini dapat diaktifkan secara eksperimental dengan menyetel ---experimental_repo_remote_exec
Kompatibel dengan eksekusi jarak jauh
doc default = ''
Deskripsi aturan repositori yang dapat diekstrak oleh alat pembuat dokumentasi.

aturan

callable rule(implementation, test=False, attrs=None, outputs=None, executable=False, 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, compile_one_filetype=None, name=None)

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 semua aturan lainnya tidak boleh memiliki akhiran ini. (Pembatasan ini hanya berlaku untuk aturan, bukan untuk 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. Aplikasi dapat mengakses atribut yang disediakan oleh pengguna. Class ini harus membuat tindakan untuk menghasilkan semua output yang dideklarasikan.
test default = False
Apakah aturan ini merupakan aturan pengujian, yaitu apakah subjek iklan tersebut dapat menjadi subjek perintah blaze test. Semua aturan pengujian secara otomatis dianggap dapat dieksekusi; tidak perlu (dan tidak disarankan) menetapkan executable = True untuk aturan pengujian secara eksplisit. Lihat halaman Aturan untuk mengetahui informasi selengkapnya.
attrs dict; or None; default = Tidak ada
kamus untuk mendeklarasikan semua atribut aturan. 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 beberapa atribut. Untuk membatasi penggunaan memori, fungsi aturan menetapkan batas ukuran atribut.
outputs dict; or None; or function; default = Tidak ada
Tidak digunakan lagi. Parameter ini tidak digunakan lagi dan akan segera dihapus. Jangan bergantung padanya. Fitur 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 untuk menggunakan OutputGroupInfo atau attr.output.

Skema untuk menentukan output yang dinyatakan 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 dinyatakan sebelumnya.

Nilai argumen ini dapat berupa 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 fungsi, kamus akan ditafsirkan sebagai berikut.

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

  • Atribut berjenis string diganti kata demi kata.
  • Atribut yang memiliki label akan menjadi bagian label setelah paket, dikurangi ekstensi file. Misalnya, label "//pkg:a/b.c" menjadi "a/b".
  • Atribut jenis output menjadi bagian dari label setelah paket, termasuk ekstensi file (untuk contoh di atas, "a/b.c").
  • Semua atribut berjenis daftar (misalnya, attr.label_list) yang digunakan dalam placeholder harus memiliki tepat 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", nama direktorinya adalah a dan nama dasarnya adalah b.c.

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

executable default = False
Apakah aturan ini dianggap dapat dieksekusi atau tidak, apakah berpotensi tunduk pada perintah blaze run atau tidak. Lihat halaman Aturan untuk mengetahui informasi selengkapnya.
output_to_genfiles default = False
Jika true, file akan dibuat di direktori genfiles, bukan direktori bin. Jangan gunakan flag ini, kecuali Anda memerlukannya untuk kompatibilitas dengan aturan yang ada (misalnya saat membuat file header untuk C++).
fragments sequence of strings; default = []
Daftar nama fragmen konfigurasi yang diperlukan aturan dalam konfigurasi target.
host_fragments sequence of strings; default = []
Daftar nama fragmen konfigurasi yang diperlukan aturan dalam konfigurasi host.
_skylark_testable default = False
(Eksperimental)

Jika benar, aturan ini akan mengekspos tindakan untuk pemeriksaan berdasarkan aturan yang bergantung padanya melalui penyedia Actions. Penyedia juga tersedia untuk aturan itu sendiri dengan memanggil ctx.created_actions().

Ini hanya boleh digunakan untuk menguji perilaku waktu analisis aturan Starlark. Tanda ini dapat dihapus di masa mendatang.
toolchains sequence; default = []
Jika disetel, rangkaian toolchain yang diperlukan aturan ini. Daftar ini dapat berisi objek String, Label, atau Starlark TypeTypeApi, dalam kombinasi apa pun. Toolchain akan dapat ditemukan dengan memeriksa platform saat ini, dan diberikan ke implementasi aturan melalui ctx.toolchain.
incompatible_use_toolchain_transition default = False
Tidak digunakan lagi, hal ini tidak digunakan lagi dan harus dihapus.
doc string; or None; default = None
Deskripsi aturan yang dapat diekstrak oleh alat pembuat dokumentasi.
provides default = []
Daftar penyedia yang harus ditampilkan oleh fungsi implementasi.

Ini adalah error jika fungsi implementasi menghilangkan salah satu jenis penyedia 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 bahwa penyedia lama direpresentasikan oleh nama stringnya.Jika target aturan digunakan sebagai dependensi untuk target yang mendeklarasikan penyedia yang diperlukan, penyedia tersebut tidak perlu ditentukan di sini. Fungsi implementasi akan menampilkannya dengan cukup. Namun, hal ini dianggap sebagai praktik terbaik untuk menentukannya, meskipun tidak wajib. Namun, kolom required_providers dari aspek mengharuskan penyedia ditentukan di sini.

exec_compatible_with sequence of strings; default = []
Daftar batasan pada platform eksekusi yang berlaku untuk semua target jenis aturan ini.
analysis_test default = False
Jika true (benar), aturan ini akan diperlakukan sebagai pengujian analisis.

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

Jika ditentukan sebagai aturan pengujian, aturan diizinkan untuk menggunakan transisi konfigurasi yang ditentukan menggunakan analisis_test_transition pada atributnya, tetapi ikut serta dalam beberapa batasan:

  • Target aturan ini dibatasi dalam jumlah dependensi transitif yang mungkin dimilikinya.
  • Aturan ini dianggap sebagai aturan pengujian (seolah-olah test=True 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; or None; default = None
Jika ditetapkan, menjelaskan jenis build setting yang dimaksud. Lihat modul config. Jika diatur, atribut wajib bernama "build_setting_default" secara otomatis ditambahkan ke aturan ini, dengan jenis yang sesuai dengan nilai yang diteruskan di sini.
cfg default = None
Jika ditetapkan, mengarah ke transisi konfigurasi, aturan akan diterapkan pada konfigurasinya sendiri sebelum analisis.
exec_groups dict; or None; default = None
Mengubah nama grup eksekusi (string) menjadi exec_groups. Jika disetel, aturan akan diizinkan menjalankan tindakan pada beberapa platform eksekusi dalam satu target. Lihat dokumentasi grup eksekusi untuk mengetahui info selengkapnya.
compile_one_filetype sequence of strings; or None; default = None
Digunakan oleh --compile_one_Dependency: jika beberapa aturan menggunakan file yang ditentukan, apakah kami harus memilih aturan ini daripada aturan lainnya.
name string; or None; default = Tidak ada
Tidak digunakan lagi. Parameter ini tidak digunakan lagi dan akan segera dihapus. Jangan bergantung padanya. Fitur ini dinonaktifkan dengan --+incompatible_remove_rule_name_parameter. Gunakan tanda ini untuk memverifikasi bahwa kode Anda kompatibel dengan penghapusan yang akan segera dilakukan.
Tidak digunakan lagi: jangan gunakan.

Nama aturan ini, seperti yang dipahami oleh Bazel dan dilaporkan dalam konteks seperti logging, native.existing_rule(...)[kind], dan bazel query. Biasanya ini sama dengan ID Starlark yang terikat dengan aturan ini; misalnya aturan yang disebut foo_library biasanya akan dideklarasikan sebagai foo_library = rule(...) dan dibuat instance-nya dalam file BUILD sebagai foo_library(...).

Jika parameter ini dihilangkan, nama aturan ditetapkan ke nama variabel global Starlark pertama yang akan terikat dengan aturan ini dalam modul .bzl yang mendeklarasikannya. Dengan demikian, foo_library = rule(...) tidak perlu menentukan parameter ini jika namanya adalah foo_library.

Menentukan nama eksplisit untuk suatu aturan tidak mengubah tempat Anda membuat instance aturan tersebut.

pilih

unknown select(x, no_match_error='')

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

Parameter

Parameter Deskripsi
x wajib
Dikte 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 = ''
Error kustom opsional untuk dilaporkan jika tidak ada kondisi yang cocok.

class_tag

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

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 default = {}
Kamus untuk mendeklarasikan semua atribut kelas tag ini. Memetakan dari nama atribut ke objek atribut (lihat modul attr).
doc default = ''
Deskripsi class tag yang dapat diekstrak oleh alat pembuat dokumentasi.

visibilitas

None visibility(value)

Menetapkan visibilitas pemuatan modul .bzl yang saat ini sedang diinisialisasi.

Visibilitas pemuatan modul mengatur apakah file build dan .bzl lainnya dapat memuatnya atau tidak. (Ini berbeda dengan visibilitas target file sumber .bzl yang mendasarinya, yang mengatur apakah file tersebut dapat muncul sebagai dependensi target lainnya.) Visibilitas pemuatan berfungsi di tingkat paket: Untuk memuat modul, file yang melakukan pemuatan harus berada 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 di tingkat atas, bukan di dalam fungsi. Gaya yang disukai 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 menampilkan peringatan, tetapi tidak menggagalkan build.

Parameter

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

Spesifikasi paket mengikuti format yang sama seperti package_group, kecuali jika spesifikasi paket negatif tidak diizinkan. Artinya, spesifikasi dapat berbentuk:

  • "//foo": paket //foo
  • "//foo/...": paket //foo dan semua sub-paketnya.
  • "public" atau "private": semua paket atau tidak ada paket satu per satu

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

Jika value adalah daftar string, kumpulan paket yang diberikan visibilitas ke modul ini adalah gabungan paket yang diwakili oleh setiap spesifikasi. (Daftar kosong memiliki efek yang sama seperti private.) Jika value adalah satu string, string tersebut akan diperlakukan sebagai daftar singleton [value].

Perhatikan bahwa flag --incompatible_package_group_has_public_syntax dan --incompatible_fix_package_group_reporoot_syntax tidak memengaruhi argumen ini. Nilai "public" dan "private" selalu tersedia, dan "//..." selalu ditafsirkan sebagai "semua paket di repositori saat ini".