native

Modul bawaan untuk mendukung aturan native dan fungsi helper 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 None nilai, dan memperlakukannya seolah-olah atribut tidak ditetapkan.
Fungsi berikut juga tersedia:

Anggota

existing_rule

unknown native.existing_rule(name)

Menampilkan objek seperti dict yang tidak dapat diubah yang menjelaskan atribut aturan yang dibuat 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 sangat tidak dapat diubah yang mendukung iterasi seperti dict, 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, fungsi ini akan menampilkan dict baru yang dapat diubah dengan konten yang sama.

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 direpresentasikan sebagaimana 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 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. Fungsi ini membuat file BUILD menjadi rapuh dan bergantung pada urutan. Selain itu, perhatikan bahwa fungsi 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 wajib
Nama target.

existing_rules

unknown native.existing_rules()

Menampilkan objek seperti dict yang tidak dapat diubah yang menjelaskan aturan yang sejauh ini dibuat 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 objek x yang sangat tidak dapat diubah yang mendukung iterasi seperti dict, 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, fungsi ini akan menampilkan dict baru yang dapat diubah dengan konten yang sama.

Catatan: Jika memungkinkan, hindari penggunaan fungsi ini. Fungsi ini membuat file BUILD menjadi rapuh dan bergantung pada urutan. Selain itu, jika tanda --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 urutan; 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, 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 (ditetapkan ke 1), file jenis direktori akan dihilangkan dari hasil (default 1).

Parameter

Parameter Deskripsi
include urutan string; default adalah []
Daftar pola glob yang akan disertakan.
exclude urutan string; default adalah []
Daftar pola glob yang akan dikecualikan.
exclude_directories default adalah 1
Tanda apakah akan mengecualikan direktori atau tidak.
allow_empty default adalah unbound
Apakah kita mengizinkan pola glob tidak cocok dengan apa pun. Jika `allow_empty` adalah False, setiap pola sertakan individual harus cocok dengan sesuatu dan hasil akhir juga tidak boleh kosong (setelah kecocokan pola `exclude` 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, kolom ini akan kosong. Untuk repo yang dibuat oleh ekstensi modul, kolom ini adalah nama modul yang menghosting ekstensi. Kolom ini sama dengan 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, kolom ini akan kosong. Untuk repo yang dibuat oleh ekstensi modul, kolom ini adalah versi modul yang menghosting ekstensi. Kolom ini sama dengan kolom module.version yang terlihat di module_ctx.modules. Dapat menampilkan None.

package_group

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

Fungsi ini menentukan sekumpulan paket dan menetapkan label ke grup. Label dapat direferensikan dalam atribut visibility.

Parameter

Parameter Deskripsi
name 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 disertakan dalam grup ini.

package_name

string native.package_name()

Nama paket yang sedang dievaluasi. Misalnya, dalam file BUILD 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. 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 sedang diinisialisasi (yaitu, file BUILD tempat makro saat ini dieksekusi). Jika input 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 ini tidak dapat dipanggil di (misalnya) fungsi implementasi 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 dikodekan secara permanen ke dalam makro, seperti compiler. Gunakan package_relative_label() saat Anda perlu menormalkan string label yang diberikan oleh file BUILD ke objek Label. (Tidak ada cara untuk mengonversi string ke 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, bukan string label.)

Parameter

Parameter Deskripsi
input string; atau Label; wajib
String 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 ke dalam keberadaan oleh stanza WORKSPACE local_repository(name='local', path=...), paket tersebut akan ditetapkan ke @local. Dalam paket di repositori utama, paket tersebut akan ditetapkan ke @. Fungsi ini setara dengan variabel REPOSITORY_NAME yang tidak digunakan lagi.

subpackages

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 diurutkan dan berisi nama subpaket relatif terhadap paket saat ini. Sebaiknya gunakan metode di 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; default adalah []
Daftar pola glob yang akan dikecualikan dari pemindaian subpaket.
allow_empty default adalah False
Apakah kita gagal jika panggilan menampilkan daftar kosong. Secara default, daftar kosong menunjukkan potensi error dalam file BUILD tempat panggilan ke subpackages() tidak diperlukan. Menetapkan ke true memungkinkan fungsi ini berhasil dalam kasus tersebut.