BUILD file

Laporkan masalah

Metode yang tersedia di file BUILD. Lihat juga Build Encyclopedia untuk mengetahui fungsi tambahan dan aturan build, yang juga dapat digunakan dalam file BUILD.

Anggota

dependensi

depset depset(direct=None, order="default", *, transitive=None)

Membuat dependensi. Parameter direct adalah daftar elemen langsung dari dependensi yang dibuat, dan parameter transitive adalah daftar dependensi yang elemennya menjadi elemen tidak langsung dari dependensi yang dibuat. Urutan elemen yang ditampilkan saat dependensi dikonversi ke daftar ditentukan oleh parameter order. Lihat Ringkasan Depset untuk mengetahui informasi selengkapnya.

Semua elemen (langsung dan tidak langsung) dari dependensi harus berjenis sama, seperti yang diperoleh dengan ekspresi type(x).

Karena set berbasis hash digunakan untuk menghilangkan duplikat selama iterasi, semua elemen dependensi harus dapat di-hash. Namun, invarian tersebut saat ini tidak diperiksa secara konsisten di semua konstruktor. Gunakan tanda --incompatible_always_check_depset_elements untuk mengaktifkan pemeriksaan yang konsisten; ini akan menjadi perilaku default pada rilis mendatang; lihat Masalah 10313.

Selain itu, elemen saat ini harus tidak dapat diubah, meskipun pembatasan ini akan disesuaikan di masa mendatang.

Urutan dependensi yang dibuat harus kompatibel dengan urutan dependensi transitive-nya. Pesanan "default" kompatibel dengan pesanan lainnya, semua pesanan lainnya hanya kompatibel dengan pesanan itu sendiri.

Parameter

Parameter Deskripsi
direct sequence; atau None; defaultnya adalah None
Daftar elemen direct dari dependensi.
order default-nya adalah "default"
Strategi traversal untuk dependensi baru. Lihat di sini untuk mengetahui kemungkinan nilai.
transitive urutan dependensi; atau None; default-nya adalah None
Daftar dependensi yang elemennya akan menjadi elemen tidak langsung dari dependensi tersebut.

existing_rule

unknown 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 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 exports_files(srcs, visibility=None, licenses=None)

Menentukan daftar file milik paket ini yang diekspor ke paket lain.

Parameter

Parameter Deskripsi
srcs urutan string; required
Daftar file yang akan diekspor.
visibility sequence; atau None; default-nya 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; defaultnya adalah None
Lisensi yang akan ditentukan.

glob

sequence 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 urutan string; defaultnya adalah []
Daftar pola glob yang akan disertakan.
exclude urutan string; defaultnya adalah []
Daftar pola glob yang akan dikecualikan.
exclude_directories defaultnya adalah 1
Flag untuk mengecualikan direktori atau tidak.
allow_empty default-nya adalah unbound
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).

module_name

string module_name()

Nama modul Bazel yang terkait dengan repositori tempat paket ini berada. Jika paket ini berasal dari repo yang didefinisikan di WORKSPACE, bukan MODULE.bazel, berarti ini kosong. Untuk repositori yang dibuat oleh ekstensi modul, 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 module_version()

Versi modul Bazel yang terkait dengan repo tempat paket ini berada. Jika paket ini berasal dari repo yang didefinisikan di WORKSPACE, bukan MODULE.bazel, berarti ini kosong. Untuk repositori yang dibuat oleh ekstensi modul, 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 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 urutan string; defaultnya adalah []
Enumerasi lengkap paket dalam grup ini.
includes urutan string; default-nya adalah []
Grup paket lain yang disertakan dalam string ini.

package_name

string 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.

package_relative_label

Label 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 mungkin tidak dipanggil (misalnya) dalam fungsi penerapan 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 bahwa 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 sebagaimana adanya.

repository_name

string 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.

pilih

unknown select(x, no_match_error='')

select() adalah fungsi bantuan yang membuat atribut aturan dapat dikonfigurasi. Lihat ensiklopedia build untuk mengetahui detailnya.

Parameter

Parameter Deskripsi
x required
dict yang memetakan kondisi konfigurasi ke nilai. Setiap kunci adalah Label atau string label yang mengidentifikasi instance config_setting atau constraint_value. Lihat dokumentasi tentang makro untuk mengetahui kapan harus menggunakan Label, bukan string.
no_match_error default-nya adalah ''
Error kustom opsional yang akan dilaporkan jika tidak ada kondisi yang cocok.

sub-paket

sequence 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 urutan string; required
Daftar pola glob yang akan disertakan dalam pemindaian sub-paket.
exclude urut string; defaultnya adalah []
Daftar pola glob yang akan dikecualikan dari pemindaian sub-paket.
allow_empty defaultnya adalah 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.