native

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 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:

Anggota

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 dikte yang tidak dapat diubah berarti objek yang sangat tidak dapat diubah x 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, kode akan menampilkan dikte baru yang dapat diubah dengan konten yang sama sebagai gantinya.

Hasilnya berisi entri untuk setiap atribut, kecuali entri pribadi (yang namanya tidak diawali dengan huruf) dan beberapa jenis atribut lama yang tidak dapat direpresentasikan. Selain itu, dikte 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 berformat ':foo' untuk target dalam paket yang sama atau '//pkg:name' untuk target dalam paket yang berbeda.
  • Daftar direpresentasikan sebagai tuple, dan dikte dikonversi menjadi dikte baru yang dapat diubah. Elemennya dikonversi secara rekursif dengan cara yang sama.
  • Nilai select ditampilkan dengan kontennya 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. (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, perhatikan bahwa konversi ini sedikit berbeda dari dua konversi nilai atribut aturan lainnya dari bentuk internal ke Starlark: satu digunakan oleh default komputasi, sedangkan yang lain digunakan oleh ctx.attr.foo.

Parameter

Parameter Deskripsi
name wajib diisi
Nama target.

existing_rules

unknown native.existing_rules()

Menampilkan objek seperti dikte yang tidak dapat diubah yang menjelaskan aturan sejauh ini yang 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 dikte yang tidak dapat diubah berarti objek yang sangat tidak dapat diubah x 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, kode akan menampilkan dikte baru yang dapat diubah dengan konten yang sama sebagai gantinya.

Catatan: Jika memungkinkan, hindari penggunaan fungsi ini. Hal ini membuat file BUILD menjadi rapuh dan bergantung pada urutan. Selain itu, jika flag --noincompatible_existing_rules_immutable_view ditetapkan, fungsi ini mungkin akan 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; wajib
Daftar file yang akan diekspor.
visibility sequence; or None; default = Tidak ada
Deklarasi visibilitas dapat ditentukan. File akan terlihat oleh target yang ditentukan. Jika tidak ada visibilitas yang ditentukan, file akan terlihat oleh setiap paket.
licenses sequence of strings; or None; default = Tidak ada
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 dari setiap file dalam paket saat ini yang:
  • Cocok dengan setidaknya satu pola di include.
  • Tidak cocok dengan pola apa pun di exclude ([] default).
Jika argumen exclude_directories diaktifkan (disetel 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 mencocokkan 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).

package_group

None native.package_group(name, packages=[], includes=[])

Fungsi ini menentukan kumpulan paket dan menetapkan label ke grup. Label dapat direferensikan di atribut visibility.

Parameter

Parameter Deskripsi
name wajib
Nama unik untuk aturan ini.
packages sequence of strings; default = []
Enumerasi lengkap paket dalam grup ini.
includes sequence of strings; default = []
Grup paket lain yang disertakan dalam grup 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 mencocokkan paket file BUILD pemanggil. Fungsi ini setara dengan variabel PACKAGE_NAME yang tidak digunakan lagi.

repository_name

string native.repository_name()

Nama repositori tempat aturan atau ekstensi build dipanggil. Misalnya, dalam paket yang dipanggil menurut stanza WORKSPACE local_repository(name='local', path=...), kode 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 diubah dari setiap subpaket langsung dari paket saat ini, terlepas dari kedalaman direktori sistem file. Daftar yang ditampilkan akan diurutkan dan berisi nama sub-paket yang terkait dengan paket saat ini. Sebaiknya pilih menggunakan metode dalam modul bazel_skylib.subpackages daripada memanggil fungsi ini secara langsung.

Parameter

Parameter Deskripsi
include sequence of strings; required
Daftar pola glob yang akan disertakan dalam pemindaian sub-paket.
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. Daftar kosong secara default menunjukkan potensi error dalam file BUILD tempat panggilan ke subpackages() berlebihan. Jika disetel ke benar (true), fungsi ini akan berhasil dalam kasus tersebut.