native.cc_library
. Perhatikan 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 tidak disetel.Fungsi berikut juga tersedia:
Pelanggan
- existing_rule
- existing_rules
- exports_files
- glob
- module_name
- module_version
- package_group
- package_name
- package_relative_label
- repository_name
- sub-paket
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 dari nama tersebut.Di sini, objek seperti dict yang tidak dapat diubah berarti objek yang sangat tidak dapat diubah x
yang mendukung iterasi seperti dict, len(x)
, name in x
, x[name]
, x.get(name)
, x.items()
, x.keys()
, dan x.values()
.
Jika flag --noincompatible_existing_rules_immutable_view
ditetapkan, akan menampilkan dikte baru yang dapat diubah dengan konten yang sama.
Hasilnya berisi entri untuk setiap atribut, dengan pengecualian atribut pribadi (yang namanya tidak diawali dengan huruf) dan beberapa jenis atribut lama yang tidak dapat ditampilkan. 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 bentuk
':foo'
untuk target dalam paket yang sama atau'//pkg:name'
untuk target dalam paket yang berbeda. - Daftar direpresentasikan sebagai tule, dan dikte dikonversi menjadi dikte baru yang dapat diubah. Elemennya dikonversi secara rekursif dengan cara yang sama.
- Nilai
select
ditampilkan dengan kontennya yang ditransformasi seperti yang dijelaskan di atas. - Atribut yang tidak memiliki nilai yang ditentukan selama pembuatan instance aturan dan yang nilai default-nya dihitung akan dikecualikan dari hasil. (Nilai default yang dihitung tidak dapat dihitung hingga fase analisis.).
Jika memungkinkan, hindari penggunaan fungsi ini. Membuat file BUILD menjadi rapuh dan bergantung pada urutan. Selain itu, berhati-hatilah karena terdapat perbedaan halus dari dua konversi nilai atribut aturan lainnya dari bentuk internal ke Starlark: satu digunakan oleh default yang dikomputasi, yang lain digunakan oleh ctx.attr.foo
.
Parameter
Parameter | Deskripsi |
---|---|
name
|
wajib diisi Nama target. |
existing_rules
unknown native.existing_rules()Menampilkan objek seperti dikt yang tidak dapat diubah dan mendeskripsikan aturan yang sejauh ini dibuat instance-nya dalam paket thread ini. Setiap entri objek seperti dikte memetakan nama instance aturan ke hasil yang akan ditampilkan oleh
existing_rule(name)
.Di sini, objek seperti dict yang tidak dapat diubah berarti objek yang sangat tidak dapat diubah x
yang mendukung iterasi seperti dict, len(x)
, name in x
, x[name]
, x.get(name)
, x.items()
, x.keys()
, dan x.values()
.
Jika flag --noincompatible_existing_rules_immutable_view
ditetapkan, akan menampilkan dikte baru yang dapat diubah dengan konten yang sama.
Catatan: Jika memungkinkan, hindari penggunaan fungsi ini. Membuat file BUILD menjadi rapuh dan bergantung pada urutan. Selain itu, jika flag --noincompatible_existing_rules_immutable_view
ditetapkan, fungsi ini dapat menjadi 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
|
sequence of strings ;
wajibDaftar file yang akan diekspor. |
visibility
|
sequence; or None ; default = Tidak adaDeklarasi visibilitas dapat ditentukan. File akan terlihat oleh target yang telah ditentukan. Jika tidak ada visibilitas yang ditentukan, file akan terlihat oleh setiap paket. |
licenses
|
sequence of strings; or None ;
default = Tidak adaLisensi akan ditentukan. |
glob
sequence native.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 (ditetapkan ke 1
), file jenis direktori akan dihilangkan dari hasil (default 1
).
Parameter
Parameter | Deskripsi |
---|---|
include
|
sequence of strings ;
default = []Daftar pola glob yang akan disertakan. |
exclude
|
sequence of strings ;
default = []Daftar pola glob yang akan dikecualikan. |
exclude_directories
|
default = 1 Flag apakah akan mengecualikan direktori atau tidak. |
allow_empty
|
default = tidak terikat Apakah kita mengizinkan pola glob untuk tidak cocok dengan apa pun. Jika `allow_empty` bernilai Salah, setiap pola penyertaan individu harus cocok dengan sesuatu, dan hasil akhir juga tidak boleh kosong (setelah kecocokan pola `kecualikan` dikecualikan). |
module_name
string native.module_name()Nama modul Bazel yang terkait dengan repo tempat paket ini berada. Jika paket ini berasal dari repo yang ditentukan di WORKSPACE, bukan MODULE.bazel, berarti paket ini kosong. Untuk repositori yang dibuat oleh ekstensi modul, ini adalah nama modul yang menghosting ekstensi. Kolom ini sama seperti kolom
module.name
yang terlihat di module_ctx.modules
.
Dapat 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, bukan MODULE.bazel, berarti paket ini kosong. Untuk repo yang dibuat oleh ekstensi modul, ini adalah versi modul yang menghosting ekstensi. Kolom ini sama seperti kolom
module.version
yang terlihat di module_ctx.modules
.
Dapat menampilkan None
.
package_group
None native.package_group(name, packages=[], includes=[])Fungsi ini menentukan satu set paket dan menetapkan label ke grup tersebut. Label dapat dirujuk di atribut
visibility
.
Parameter
Parameter | Deskripsi |
---|---|
name
|
wajib Nama unik untuk aturan ini. |
packages
|
sequence of strings ;
default = []Enumerasi paket lengkap dalam grup ini. |
includes
|
sequence of strings ;
default = []Grup paket lain yang disertakan dalam paket ini. |
package_name
string native.package_name()Nama paket yang dievaluasi. 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. Fungsi ini setara dengan variabel PACKAGE_NAME
yang tidak digunakan lagi.
package_relative_label
Label native.package_relative_label(input)Mengonversi string input menjadi objek Label, dalam konteks paket yang saat ini diinisialisasi (yaitu, file
BUILD
yang dieksekusi dengan makro saat ini). Jika input sudah berupa Label
, input tidak 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 dapat 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 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 panggilan. Oleh karena itu, makro luar harus selalu memilih untuk meneruskan objek Label ke makro dalam daripada string label.)
Parameter
Parameter | Deskripsi |
---|---|
input
|
string; or Label ;
wajibString label input atau objek Label. Jika objek Label diteruskan, objek tersebut akan ditampilkan sebagaimana adanya. |
repository_name
string native.repository_name()Nama repositori tempat aturan atau ekstensi build dipanggil. Misalnya, dalam paket yang dipanggil oleh stanza WORKSPACE
local_repository(name='local', path=...)
, stanza tersebut akan ditetapkan ke @local
. Dalam paket di repositori utama, parameter ini akan ditetapkan ke @
. Fungsi ini setara dengan variabel REPOSITORY_NAME
yang tidak digunakan lagi.
sub-paket
sequence native.subpackages(include, exclude=[], allow_empty=False)Menampilkan daftar baru yang dapat berubah dari setiap subpaket langsung dari paket saat ini, terlepas dari kedalaman direktori sistem file. Daftar yang ditampilkan diurutkan dan berisi nama subpaket yang relatif terhadap paket saat ini. Sebaiknya gunakan metode dalam modul bazel_skylib.subpackages daripada memanggil fungsi ini secara langsung.
Parameter
Parameter | Deskripsi |
---|---|
include
|
sequence of strings ;
wajibDaftar pola glob yang akan disertakan dalam pemindaian subpaket. |
exclude
|
sequence of strings ;
default = []Daftar pola glob yang akan dikecualikan dari pemindaian sub-paket. |
allow_empty
|
default = False Apakah kita gagal jika panggilan menampilkan daftar kosong. Secara default, daftar kosong menunjukkan potensi error dalam file BUILD di mana panggilan ke subpackages() berlebihan. Jika disetel ke benar (true), fungsi ini akan berhasil dalam kasus tersebut. |