BUILD file

Laporkan masalah Nightly · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

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

Anggota

depset

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

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

Semua elemen (langsung dan tidak langsung) dari depset harus memiliki jenis yang sama, seperti yang diperoleh dengan ekspresi type(x).

Karena set berbasis hash digunakan untuk menghilangkan duplikat selama iterasi, semua elemen depset harus dapat di-hash. Namun, saat ini invarian 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 dalam rilis mendatang; lihat Masalah 10313.

Selain itu, elemen saat ini harus tidak dapat diubah, meskipun batasan ini akan dilonggarkan pada masa mendatang.

Urutan depset yang dibuat harus kompatibel dengan urutan depset transitive-nya. Urutan "default" kompatibel dengan urutan lainnya, semua urutan lainnya hanya kompatibel dengan urutannya sendiri.

Parameter

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

existing_rule

unknown existing_rule(name)

Menampilkan objek seperti dict yang tidak dapat diubah yang menjelaskan atribut aturan yang di-instance 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 yang tidak dapat diubah secara mendalam x yang mendukung iterasi seperti dict, len(x), name in x, x[name], x.get(name), x.items(), x.keys(), dan x.values().

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 ditampilkan apa 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 ditentukan nilainya selama instansiasi aturan dan yang nilai defaultnya dihitung akan dikecualikan dari hasil. (Default yang dihitung tidak dapat dihitung hingga fase analisis.).

Jika memungkinkan, gunakan fungsi ini hanya di fungsi penerapan makro simbolis finalisasi aturan. Penggunaan fungsi ini dalam konteks lain tidak direkomendasikan, dan akan dinonaktifkan dalam rilis Bazel mendatang; fungsi ini membuat file BUILD menjadi rapuh dan bergantung pada urutan. Selain itu, berhati-hatilah karena konversi nilai atribut aturan dari bentuk internal ke Starlark ini sedikit berbeda dengan dua konversi lainnya: satu digunakan oleh default yang dihitung, dan yang lainnya digunakan oleh ctx.attr.foo.

Parameter

Parameter Deskripsi
name string; wajib diisi
Nama target.

existing_rules

unknown existing_rules()

Menampilkan objek seperti dict yang tidak dapat diubah yang menjelaskan aturan yang telah dibuat sejauh ini 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 yang tidak dapat diubah secara mendalam x yang mendukung iterasi seperti dict, len(x), name in x, x[name], x.get(name), x.items(), x.keys(), dan x.values().

Jika memungkinkan, gunakan fungsi ini hanya di fungsi penerapan makro simbolis finalisasi aturan. Penggunaan fungsi ini dalam konteks lain tidak direkomendasikan, dan akan dinonaktifkan dalam rilis Bazel mendatang; fungsi ini membuat file BUILD menjadi rapuh dan bergantung pada urutan.

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 sequence dari string; required
Daftar file yang akan diekspor.
visibility sequence; atau None; defaultnya adalah None
Pernyataan visibilitas dapat ditentukan. File akan terlihat oleh target yang ditentukan. Jika tidak ada visibilitas yang ditentukan, file akan terlihat oleh setiap paket.
licenses sequence dari 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, dapat diubah, dan diurutkan dari setiap file dalam paket saat ini yang:
  • Mencocokkan 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 dikecualikan dari hasil (default 1).

Parameter

Parameter Deskripsi
include sequence dari string; default adalah []
Daftar pola glob yang akan disertakan.
exclude sequence dari string; default adalah []
Daftar pola glob yang akan dikecualikan.
exclude_directories int; default is 1
Flag apakah akan mengecualikan direktori atau tidak.
allow_empty default adalah unbound
Apakah kita mengizinkan pola glob agar tidak cocok dengan apa pun. Jika `allow_empty` adalah False, setiap pola include individual harus cocok dengan sesuatu dan hasil akhirnya juga tidak boleh kosong (setelah kecocokan pola `exclude` dikecualikan).

module_name

string 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, paket 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. 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 ditentukan di WORKSPACE, bukan MODULE.bazel, paket 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. Dapat menampilkan None.

paket

unknown package(**kwargs)

Mendeklarasikan metadata yang berlaku untuk setiap aturan dalam paket. Fungsi ini harus dipanggil paling banyak sekali dalam paket (file BUILD). Jika dipanggil, ini harus menjadi panggilan pertama dalam file BUILD, tepat setelah pernyataan load().

Parameter

Parameter Deskripsi
kwargs wajib
Lihat fungsi package() di Build Encyclopedia untuk argumen yang berlaku.

package_default_visibility

List package_default_visibility()

Menampilkan visibilitas default paket yang sedang dievaluasi. Ini adalah nilai parameter default_visibility dari package(), yang diperluas untuk menyertakan paket itu sendiri.

package_group

None 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 diisi
Nama unik untuk aturan ini.
packages sequence dari string; default adalah []
Enumerasi lengkap paket dalam grup ini.
includes sequence dari string; default adalah []
Grup paket lain yang disertakan dalam grup ini.

package_name

string package_name()

Nama paket yang sedang dievaluasi, tanpa nama repositori. 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. Nilainya akan selalu berupa string kosong untuk paket root.

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 yang menjalankan makro saat ini). Jika input sudah berupa Label, input tersebut akan ditampilkan tanpa perubahan.

Fungsi ini hanya dapat dipanggil saat mengevaluasi file BUILD dan makro yang dipanggilnya secara langsung atau tidak langsung; fungsi ini tidak dapat dipanggil (misalnya) dalam fungsi penerapan aturan.

Hasil fungsi ini adalah nilai Label yang sama seperti yang akan dihasilkan dengan meneruskan string tertentu 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 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 objek Label diteruskan, objek tersebut akan ditampilkan apa adanya.

repo_name

string repo_name()

Nama kanonis repositori yang berisi paket yang saat ini sedang dievaluasi, tanpa tanda @ di depannya.

repository_name

string repository_name()

Eksperimental. API ini bersifat eksperimental dan dapat berubah kapan saja. Jangan mengandalkannya. Fitur ini dapat diaktifkan secara eksperimental dengan menyetel --+incompatible_enable_deprecated_label_apis
Tidak digunakan lagi. Sebaiknya gunakan repo_name, yang tidak berisi tanda @ di awal yang tidak diperlukan, tetapi berperilaku sama.

Nama kanonis repositori yang berisi paket yang sedang dievaluasi, dengan awalan tanda @ (@) tunggal. Misalnya, dalam paket yang dipanggil oleh stanza WORKSPACE local_repository(name='local', path=...), paket tersebut akan disetel ke @local. Dalam paket di repositori utama, nilai ini akan ditetapkan ke @.

pilih

unknown select(x, no_match_error='')

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

Parameter

Parameter Deskripsi
x dict; 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 string; default adalah ''
Error kustom opsional yang akan dilaporkan jika tidak ada kondisi yang cocok.

subpaket

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 diurutkan dan berisi nama subpaket relatif terhadap paket saat ini. Sebaiknya gunakan metode di modul bazel_skylib.subpackages daripada memanggil fungsi ini secara langsung.

Parameter

Parameter Deskripsi
include sequence dari string; wajib
Daftar pola glob yang akan disertakan dalam pemindaian subpaket.
exclude sequence dari string; default adalah []
Daftar pola glob yang akan dikecualikan dari pemindaian subpaket.
allow_empty bool; default adalah False
Apakah kita gagal jika panggilan menampilkan daftar kosong. Secara default, daftar kosong menunjukkan potensi error dalam file BUILD saat panggilan ke subpackages() tidak diperlukan. Menetapkan ke benar (true) memungkinkan fungsi ini berhasil dalam kasus tersebut.