Modul bawaan untuk mendukung aturan native dan fungsi bantuan paket lainnya. Semua aturan native muncul sebagai fungsi dalam modul ini, mis. native.cc_library
. Perlu diketahui bahwa modul native hanya tersedia dalam fase pemuatan (yaitu untuk makro, bukan untuk implementasi aturan). Atribut akan mengabaikan nilai None
, dan memperlakukannya seolah-olah atribut tersebut 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)Menampilkan objek seperti dikte 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 x
objek yang sangat tidak dapat diubah yang mendukung iterasi seperti dikte, len(x)
, name in x
, x[name]
, x.get(name)
, x.items()
, x.keys()
, dan x.values()
.
Jika tanda --noincompatible_existing_rules_immutable_view
ditetapkan, teks baru yang dapat diubah dengan konten yang sama akan ditampilkan.
Hasilnya berisi entri untuk setiap atribut, dengan pengecualian untuk atribut pribadi (yang namanya tidak dimulai dengan huruf) dan beberapa jenis atribut lama yang tidak dapat diwakili. 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 direpresentasikan sebagaimana 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 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 rapuh dan bergantung pada urutan. Selain itu, ketahuilah bahwa nilai 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;
wajib Nama target. |
existing_rules
unknown native.existing_rules()Menampilkan objek seperti dikte yang tidak dapat diubah, yang menjelaskan aturan yang sejauh ini dibuat instance-nya dalam paket thread ini. Setiap entri objek seperti dict memetakan nama instance aturan ke hasil yang akan ditampilkan oleh
existing_rule(name)
.Di sini, objek seperti dict yang tidak dapat diubah berarti x
objek yang sangat tidak dapat diubah yang mendukung iterasi seperti dikte, len(x)
, name in x
, x[name]
, x.get(name)
, x.items()
, x.keys()
, dan x.values()
.
Jika tanda --noincompatible_existing_rules_immutable_view
ditetapkan, teks baru yang dapat diubah dengan konten yang sama akan ditampilkan.
Catatan: Jika memungkinkan, hindari penggunaan fungsi ini. Hal ini membuat file BUILD rapuh dan bergantung pada urutan. Selain itu, jika flag --noincompatible_existing_rules_immutable_view
ditetapkan, fungsi ini mungkin sangat mahal, terutama jika dipanggil dalam loop.
exports_files
None
native.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
|
urut; atau None ;
default adalah None Deklarasi 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 ;
default adalah None Lisensi yang akan ditentukan. |
glob
sequence native.glob(include=[], exclude=[], exclude_directories=1, allow_empty=unbound)Glob menampilkan daftar baru yang dapat diubah, dan diurutkan untuk setiap file dalam paket saat ini yang:
- Mencocokkan setidaknya satu pola di
include
. - Tidak cocok dengan pola apa pun di
exclude
([]
default).
exclude_directories
diaktifkan (ditetapkan ke 1
), file direktori jenis akan dihilangkan dari hasil (1
default).
Parameter
Parameter | Deskripsi |
---|---|
include
|
urutan string;
default adalah [] Daftar pola glob untuk disertakan. |
exclude
|
urutan string;
default 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 mencocokkan apa pun. Jika `allow_empty` disetel ke Salah (False), setiap pola penyertaan harus cocok dengan sesuatu dan hasil akhirnya tidak boleh kosong (setelah kecocokan pola `exclude` dikecualikan). |
module_name
string native.module_name()Nama modul Bazel yang terkait dengan repositori tempat paket ini berada. Jika paket ini berasal dari repo yang ditentukan di WORKSPACE dan bukan MODULE.bazel, ini kosong. Untuk repositori 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 native.module_version()Versi modul Bazel yang terkait dengan repo tempat paket ini berada. Jika paket ini berasal dari repo yang ditentukan di WORKSPACE dan bukan MODULE.bazel, ini kosong. Untuk repositori yang dibuat 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
.
package_group
None
native.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;
default adalah [] Grup paket lain yang termasuk dalam paket ini. |
package_name
string native.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 native.package_relative_label(input)Mengonversi string input menjadi objek Label, dalam konteks paket yang sedang diinisialisasi (yaitu, file
BUILD
yang makro saat ini dieksekusi). Jika sudah berupa Label
, input akan ditampilkan tanpa perubahan.Fungsi ini hanya dapat dipanggil saat mengevaluasi file BUILD dan makro yang dipanggil secara langsung atau tidak langsung; fungsi tersebut mungkin tidak dipanggil dalam (misalnya) fungsi implementasi aturan.
Hasil dari 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 karena 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 sebagaimana adanya. |
repo_name
string native.repo_name()Nama kanonis repositori yang berisi paket yang saat ini dievaluasi, tanpa tanda at di awal.
repository_name
string native.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 dievaluasi, dengan awalan tunggal tanda at (@
). Misalnya, dalam paket yang dipanggil menjadi ada oleh stanza WORKSPACE local_repository(name='local', path=...)
, ini akan ditetapkan ke @local
. Dalam paket di repositori utama, nilainya akan ditetapkan ke @
.
sub-paket
sequence native.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 dikembalikan diurutkan dan berisi nama-nama sub-paket yang relatif terhadap paket saat ini. Sebaiknya Anda lebih memilih menggunakan metode dalam modul bazel_skylib.subpackages daripada memanggil fungsi ini secara langsung.
Parameter
Parameter | Deskripsi |
---|---|
include
|
urutan string;
wajib Daftar pola glob untuk disertakan dalam pemindaian subpaket. |
exclude
|
urutan string;
default adalah [] Daftar pola glob yang akan dikecualikan dari pemindaian subpaket. |
allow_empty
|
bool;
default adalah False Apakah kita akan gagal jika panggilan menampilkan daftar kosong. Secara default, daftar kosong menunjukkan potensi error dalam file BUILD dengan panggilan ke subpackages() sangat berlebihan. Jika disetel ke benar (true), fungsi ini dapat berhasil dalam kasus tersebut. |