Modul bawaan untuk mendukung aturan native dan fungsi bantuan paket lainnya. Semua aturan native muncul sebagai fungsi dalam modul ini, misalnya native.cc_library
. Perhatikan bahwa modul bawaan hanya tersedia dalam fase pemuatan (yaitu untuk makro, bukan untuk penerapan aturan). Atribut akan mengabaikan nilai None
, dan memperlakukannya seolah-olah atribut tidak ditetapkan.
Fungsi berikut juga tersedia:
Anggota
- existing_rule
- existing_rules
- exports_files
- glob
- module_name
- module_version
- package_group
- package_name
- package_relative_label
- repo_name
- repository_name
- subpaket
existing_rule
unknown native.existing_rule(name)
None
jika tidak ada instance aturan dengan nama tersebut.Di sini, objek seperti dict yang tidak dapat diubah berarti objek yang tidak dapat diubah secara mendalam x
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, kecuali atribut pribadi (yang namanya tidak diawali dengan huruf) dan beberapa jenis atribut lama yang tidak dapat direpresentasikan. Selain itu, dict berisi entri untuk name
dan kind
instance aturan (misalnya, 'cc_binary'
).
Nilai hasil mewakili nilai atribut sebagai berikut:
- Atribut jenis str, int, dan bool ditampilkan apa adanya.
- Label dikonversi menjadi string dalam bentuk
':foo'
untuk target dalam paket yang sama atau'//pkg:name'
untuk target dalam paket yang berbeda. - Daftar direpresentasikan sebagai tuple, dan dict dikonversi menjadi dict baru yang dapat diubah. Elemennya dikonversi secara rekursif dengan cara yang sama.
- Nilai
select
ditampilkan dengan kontennya yang diubah seperti yang dijelaskan di atas. - Atribut yang tidak ditentukan nilainya selama instansiasi aturan dan yang nilai defaultnya dihitung akan dikecualikan dari hasil. (Default yang dihitung tidak dapat dihitung hingga fase analisis.).
Jika memungkinkan, hindari penggunaan fungsi ini. Hal ini membuat file BUILD menjadi rapuh dan bergantung pada urutan. Selain itu, berhati-hatilah karena konversi nilai atribut aturan dari bentuk internal ke Starlark ini sedikit berbeda dengan dua konversi lainnya: satu digunakan oleh default yang dihitung, dan yang lainnya digunakan oleh ctx.attr.foo
.
Parameter
Parameter | Deskripsi |
---|---|
name
|
string;
wajib diisi Nama target. |
existing_rules
unknown native.existing_rules()
existing_rule(name)
.Di sini, objek seperti dict yang tidak dapat diubah berarti objek yang tidak dapat diubah secara mendalam x
yang mendukung iterasi seperti dict, len(x)
, name in x
, x[name]
, x.get(name)
, x.items()
, x.keys()
, dan x.values()
.
Catatan: Jika memungkinkan, hindari penggunaan fungsi ini. Hal ini membuat file BUILD menjadi rapuh dan bergantung pada urutan.
exports_files
None
native.exports_files(srcs, visibility=None, licenses=None)
Parameter
Parameter | Deskripsi |
---|---|
srcs
|
sequence dari string;
required 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
|
sequence dari string; atau None ;
defaultnya adalah None Lisensi yang akan ditentukan. |
glob
sequence native.glob(include=[], exclude=[], exclude_directories=1, allow_empty=unbound)
- Mencocokkan setidaknya satu pola di
include
. - Tidak cocok dengan pola apa pun di
exclude
(default[]
).
exclude_directories
diaktifkan (disetel ke 1
), file jenis direktori akan dikecualikan dari hasil (default 1
).
Parameter
Parameter | Deskripsi |
---|---|
include
|
sequence dari string;
default adalah [] Daftar pola glob yang akan disertakan. |
exclude
|
sequence dari string;
default adalah [] Daftar pola glob yang akan dikecualikan. |
exclude_directories
|
int;
default is 1 Flag apakah akan mengecualikan direktori atau tidak. |
allow_empty
|
default adalah unbound Apakah kita mengizinkan pola glob agar tidak cocok dengan apa pun. Jika `allow_empty` adalah False, setiap pola include individual harus cocok dengan sesuatu dan hasil akhirnya juga tidak boleh kosong (setelah kecocokan pola `exclude` dikecualikan). |
module_name
string native.module_name()
module.name
yang terlihat di module_ctx.modules
.
Dapat menampilkan None
.
module_version
string native.module_version()
module.version
yang terlihat di module_ctx.modules
.
Dapat menampilkan None
.
package_group
None
native.package_group(name, packages=[], includes=[])
visibility
.
Parameter
Parameter | Deskripsi |
---|---|
name
|
string;
wajib diisi Nama unik untuk aturan ini. |
packages
|
sequence dari string;
default adalah [] Enumerasi lengkap paket dalam grup ini. |
includes
|
sequence dari string;
default adalah [] Grup paket lain yang disertakan dalam grup ini. |
package_name
string native.package_name()
some/package/BUILD
, nilainya adalah 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 native.package_relative_label(input)
BUILD
yang menjalankan makro saat ini). Jika input sudah berupa Label
, input tersebut akan ditampilkan tanpa perubahan.Fungsi ini hanya dapat dipanggil saat mengevaluasi file BUILD dan makro yang dipanggilnya secara langsung atau tidak langsung; fungsi ini tidak dapat dipanggil (misalnya) dalam fungsi penerapan aturan.
Hasil fungsi ini adalah nilai Label
yang sama seperti yang akan dihasilkan dengan meneruskan string tertentu 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 daripada string label.)
Parameter
Parameter | Deskripsi |
---|---|
input
|
string; atau Label;
wajib String label input atau objek Label. Jika objek Label diteruskan, objek tersebut akan ditampilkan apa adanya. |
repo_name
string native.repo_name()
repository_name
string native.repository_name()
--+incompatible_enable_deprecated_label_apis
Tidak digunakan lagi. Sebaiknya gunakan
repo_name
, yang tidak berisi tanda @ di awal yang tidak diperlukan, tetapi berperilaku sama.Nama kanonis repositori yang berisi paket yang saat ini sedang dievaluasi, dengan awalan satu tanda @ (@
). Misalnya, dalam paket yang dipanggil oleh stanza WORKSPACE local_repository(name='local', path=...)
, paket tersebut akan disetel ke @local
. Dalam paket di repositori utama, nilai ini akan ditetapkan ke @
.
subpaket
sequence native.subpackages(include, exclude=[], allow_empty=False)
Parameter
Parameter | Deskripsi |
---|---|
include
|
sequence dari string;
wajib Daftar pola glob yang akan disertakan dalam pemindaian subpaket. |
exclude
|
sequence dari string;
default adalah [] Daftar pola glob yang akan dikecualikan dari pemindaian subpaket. |
allow_empty
|
bool;
default 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 benar (true) memungkinkan fungsi ini berhasil dalam kasus tersebut. |