Metode yang tersedia dalam file BUILD. Lihat juga Ensiklopedia Build untuk mengetahui fungsi dan aturan build tambahan, yang juga dapat digunakan dalam file BUILD.
Anggota
- depset
- existing_rule
- existing_rules
- exports_files
- glob
- module_name
- module_version
- package
- package_group
- package_name
- package_relative_label
- repo_name
- repository_name
- select
- subpaket
depset
depset depset(direct=None, order="default", *, transitive=None)Membuat depset. Parameter
direct
adalah daftar elemen langsung depset, dan parameter transitive
adalah daftar depset yang elemennya menjadi elemen tidak langsung depset yang dibuat. Urutan elemen yang ditampilkan saat depset dikonversi menjadi daftar ditentukan oleh parameter order
. Lihat Ringkasan DEX untuk mengetahui informasi selengkapnya.
Semua elemen (langsung dan tidak langsung) depset harus memiliki jenis yang sama, seperti yang diperoleh oleh 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_element untuk memungkinkan pemeriksaan yang konsisten; ini akan menjadi perilaku default dalam rilis mendatang; lihat Masalah 10313.
Selain itu, elemen saat ini tidak boleh diubah, meskipun pembatasan ini akan dilonggarkan pada masa mendatang.
Urutan depset yang dibuat harus kompatibel dengan urutan depset transitive
-nya. Urutan "default"
kompatibel dengan urutan lainnya, semua urutan lainnya hanya kompatibel dengan dirinya sendiri.
Parameter
Parameter | Deskripsi |
---|---|
direct
|
sequence; atau None ;
defaultnya adalah None Daftar elemen direct dari depset. |
order
|
string;
defaultnya adalah "default" Strategi traversal untuk depset baru. Lihat di sini untuk mengetahui kemungkinan nilai. |
transitive
|
Urutan depset; atau None ;
default-nya adalah None Daftar depset yang elemennya akan menjadi elemen tidak langsung dari depset. |
existing_rule
unknown existing_rule(name)Menampilkan objek seperti kamus yang tidak dapat diubah yang menjelaskan atribut aturan yang dibuat instance-nya dalam paket thread ini, atau
None
jika tidak ada instance aturan dengan nama tersebut.Di sini, objek seperti dict yang tidak dapat diubah berarti objek x
yang tidak dapat diubah secara mendalam yang mendukung iterasi seperti dict, len(x)
, name in x
, x[name]
, x.get(name)
, x.items()
, x.keys()
, dan x.values()
.
Hasilnya berisi entri untuk setiap atribut, dengan pengecualian atribut pribadi (yang namanya tidak diawali dengan huruf) dan beberapa jenis atribut lama yang tidak dapat direpresentasikan. Selain itu, kamus berisi entri untuk name
dan kind
instance aturan (misalnya, 'cc_binary'
).
Nilai hasil mewakili nilai atribut sebagai berikut:
- Atribut jenis str, int, dan bool direpresentasikan apa adanya.
- Label dikonversi menjadi string formulir
':foo'
untuk target dalam paket yang sama atau'//pkg:name'
untuk target dalam paket yang berbeda. - Daftar direpresentasikan sebagai tupel, dan dikte dikonversi menjadi dikte baru yang dapat diubah. Elemen-elemennya dikonversi secara rekursif dengan cara yang sama.
- Nilai
select
ditampilkan dengan kontennya yang diubah seperti yang dijelaskan di atas. - Atribut yang tidak memiliki nilai yang ditentukan selama pembuatan instance aturan dan nilai defaultnya dihitung akan dikecualikan dari hasil. (Default yang dihitung tidak dapat dihitung hingga fase analisis.).
Jika memungkinkan, gunakan fungsi ini hanya dalam fungsi implementasi makro simbolis finalisasi aturan. Penggunaan fungsi ini dalam konteks lain tidak direkomendasikan, dan akan dinonaktifkan dalam rilis Bazel mendatang; hal ini membuat file BUILD
rapuh dan bergantung pada urutan. Selain itu, perhatikan bahwa konversi ini sedikit berbeda dari dua konversi nilai atribut aturan lainnya dari bentuk internal ke Starlark: satu digunakan oleh default yang dihitung, yang lainnya digunakan oleh ctx.attr.foo
.
Parameter
Parameter | Deskripsi |
---|---|
name
|
string;
required Nama target. |
existing_rules
unknown existing_rules()Menampilkan objek seperti dict yang tidak dapat diubah yang menjelaskan aturan yang sejauh ini dibuat instance-nya dalam paket thread ini. Setiap entri objek seperti kamus memetakan nama instance aturan ke hasil yang akan ditampilkan oleh
existing_rule(name)
.Di sini, objek seperti dict yang tidak dapat diubah berarti objek x
yang tidak dapat diubah secara mendalam yang mendukung iterasi seperti dict, len(x)
, name in x
, x[name]
, x.get(name)
, x.items()
, x.keys()
, dan x.values()
.
Jika memungkinkan, gunakan fungsi ini hanya dalam fungsi implementasi makro simbolis finalisasi aturan. Penggunaan fungsi ini dalam konteks lain tidak direkomendasikan, dan akan dinonaktifkan dalam rilis Bazel mendatang; hal ini membuat file BUILD
rapuh dan bergantung pada urutan.
exports_files
None
exports_files(srcs, visibility=None, licenses=None)
Menentukan daftar file milik paket ini yang diekspor ke paket lain.
Parameter
Parameter | Deskripsi |
---|---|
srcs
|
Urutan string; wajib Daftar file yang akan diekspor. |
visibility
|
sequence; atau None ;
defaultnya adalah None Pernyataan visibilitas dapat ditentukan. File akan terlihat oleh target yang ditentukan. Jika tidak ada visibilitas yang ditentukan, file akan terlihat oleh setiap paket. |
licenses
|
urutan string; atau None ; defaultnya adalah None Lisensi yang akan ditentukan. |
glob
sequence glob(include=[], exclude=[], exclude_directories=1, allow_empty=unbound)Glob menampilkan daftar baru yang dapat diubah dan diurutkan dari setiap file dalam paket saat ini yang:
- Cocok dengan setidaknya satu pola di
include
. - Tidak cocok dengan pola apa pun di
exclude
([]
default).
exclude_directories
diaktifkan (disetel ke 1
), file direktori jenis akan dihilangkan dari hasil (1
default).
Parameter
Parameter | Deskripsi |
---|---|
include
|
Urutan string;
defaultnya adalah [] Daftar pola glob yang akan disertakan. |
exclude
|
urutan string; defaultnya adalah [] Daftar pola glob yang akan dikecualikan. |
exclude_directories
|
int;
default adalah 1 Flag untuk mengecualikan direktori atau tidak. |
allow_empty
|
default adalah unbound Apakah kita mengizinkan pola glob untuk tidak cocok dengan apa pun. Jika `allow_empty` bernilai Salah, setiap pola penyertaan harus cocok dengan sesuatu dan hasil akhir juga tidak boleh kosong (setelah kecocokan pola `exclude` dikecualikan). |
module_name
string module_name()Nama modul Bazel yang terkait dengan repositori tempat paket ini berada. Jika paket ini berasal dari repo yang ditentukan di WORKSPACE, bukan MODULE.bazel, paket ini akan kosong. Untuk repo yang dibuat oleh ekstensi modul, ini adalah nama modul yang menghosting ekstensi. Ini sama dengan kolom
module.name
yang terlihat di module_ctx.modules
.
Mungkin menampilkan None
.
module_version
string module_version()Versi modul Bazel yang terkait dengan repo tempat paket ini berada. Jika paket ini berasal dari repo yang ditentukan di WORKSPACE, bukan MODULE.bazel, paket ini akan kosong. Untuk repo yang dihasilkan oleh ekstensi modul, ini adalah versi modul yang menghosting ekstensi. Ini sama dengan kolom
module.version
yang terlihat di module_ctx.modules
.
Mungkin menampilkan None
.
paket
unknown package(**kwargs)Mendeklarasikan metadata yang berlaku untuk setiap aturan dalam paket. Ini harus dipanggil paling banyak sekali dalam sebuah paket (file BUILD). Jika dipanggil, ini harus menjadi panggilan pertama dalam file BUILD, tepat setelah pernyataan
load()
.
Parameter
Parameter | Deskripsi |
---|---|
kwargs
|
required Lihat fungsi package() di Ensiklopedia Build untuk argumen yang berlaku.
|
package_group
None
package_group(name, packages=[], includes=[])
Fungsi ini menentukan sekumpulan paket dan menetapkan label ke grup. Label dapat dirujuk dalam atribut visibility
.
Parameter
Parameter | Deskripsi |
---|---|
name
|
string;
wajib Nama unik untuk aturan ini. |
packages
|
urutan string;
default adalah [] Enumerasi lengkap paket dalam grup ini. |
includes
|
urutan string;
defaultnya adalah [] Grup paket lain yang disertakan dalam paket ini. |
package_name
string package_name()Nama paket yang dievaluasi, tanpa nama repositori. Misalnya, dalam file BUILD
some/package/BUILD
, nilainya akan menjadi some/package
. Jika file BUILD memanggil fungsi yang ditentukan dalam file .bzl, package_name()
akan cocok dengan paket file BUILD pemanggil.
package_relative_label
Label package_relative_label(input)Mengonversi string input menjadi objek Label, dalam konteks paket yang sedang diinisialisasi (yaitu, file
BUILD
yang makro saat ini dijalankan). Jika input sudah berupa Label
, input tersebut akan ditampilkan tanpa perubahan.Fungsi ini hanya dapat dipanggil saat mengevaluasi file BUILD dan makro yang dipanggil secara langsung atau tidak langsung; fungsi ini tidak boleh dipanggil dalam (misalnya) fungsi penerapan aturan.
Hasil fungsi ini adalah nilai Label
yang sama seperti yang akan dihasilkan dengan meneruskan string yang diberikan ke atribut bernilai label dari target yang dideklarasikan dalam file BUILD.
Catatan penggunaan: Perbedaan antara fungsi ini dan Label() adalah Label()
menggunakan konteks paket file .bzl
yang memanggilnya, bukan paket file BUILD
. Gunakan Label()
saat Anda perlu merujuk ke target tetap yang di-hardcode ke dalam makro, seperti compiler. Gunakan package_relative_label()
saat Anda perlu menormalisasi string label yang disediakan oleh file BUILD ke objek Label
. (Tidak ada cara untuk mengonversi string menjadi Label
dalam konteks paket selain file BUILD atau file .bzl yang memanggil. Oleh karena itu, makro luar harus selalu memilih untuk meneruskan objek Label ke makro dalam, bukan string label.)
Parameter
Parameter | Deskripsi |
---|---|
input
|
string; atau Label;
wajib String label input atau objek Label. Jika diteruskan, objek Label akan ditampilkan apa adanya. |
repo_name
string repo_name()Nama kanonis repositori yang berisi paket yang saat ini sedang dievaluasi, tanpa tanda @ di awal.
repository_name
string repository_name()Eksperimental. API ini bersifat eksperimental dan dapat berubah kapan saja. Harap tidak bergantung padanya. Fitur ini dapat diaktifkan secara eksperimental dengan menetapkan
--+incompatible_enable_deprecated_label_apis
Tidak digunakan lagi. Memilih untuk menggunakan
repo_name
, yang tidak berisi tanda @ di awal yang palsu, tetapi berperilaku identik.Nama kanonis repositori yang berisi paket yang saat ini sedang dievaluasi, dengan awalan tanda @ (@
) tunggal. Misalnya, dalam paket yang dipanggil oleh stanza WORKSPACE, local_repository(name='local', path=...)
akan disetel ke @local
. Dalam paket di repositori utama, nilai ini akan ditetapkan ke @
.
pilih
unknown select(x, no_match_error='')
select()
adalah fungsi bantuan yang membuat atribut aturan dapat dikonfigurasi. Lihat membuat ensiklopedia untuk mengetahui detailnya.
Parameter
Parameter | Deskripsi |
---|---|
x
|
dict;
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
|
string;
defaultnya adalah '' Error kustom opsional untuk dilaporkan jika tidak ada kondisi yang cocok. |
sub-paket
sequence subpackages(include, exclude=[], allow_empty=False)Menampilkan daftar baru yang dapat diubah dari setiap subpaket langsung dari paket saat ini, terlepas dari kedalaman direktori sistem file. Daftar yang ditampilkan diurutkan dan berisi nama subpaket yang terkait dengan paket saat ini. Sebaiknya gunakan metode dalam modul bazel_skylib.subpackages, bukan memanggil fungsi ini secara langsung.
Parameter
Parameter | Deskripsi |
---|---|
include
|
Urutan string; wajib Daftar pola glob yang akan disertakan dalam pemindaian subpaket. |
exclude
|
Urutan string;
defaultnya adalah [] Daftar pola glob yang akan dikecualikan dari pemindaian subpaket. |
allow_empty
|
bool;
defaultnya adalah False Apakah kita gagal jika panggilan menampilkan daftar kosong. Secara default, daftar kosong menunjukkan potensi error dalam file BUILD saat panggilan ke subpackages() tidak diperlukan. Menetapkan ke true memungkinkan fungsi ini berhasil dalam kasus tersebut. |