เมธอดที่ใช้ได้ในไฟล์ BUILD ดูฟังก์ชันและกฎการสร้างเพิ่มเติมในสารานุกรมการสร้าง ซึ่งนำไปใช้ในไฟล์ BUILD ได้ด้วย
สมาชิก
- depset
- existing_rule
- existing_rules
- exports_files
- glob
- module_name
- module_version
- package_group
- package_name
- package_relative_label
- repo_name
- repository_name
- select
- subpackages
depset
depset depset(direct=None, order="default", *, transitive=None)
direct
คือรายการองค์ประกอบโดยตรงของชุดข้อมูล ที่พารามิเตอร์ transitive
คือรายการชุดข้อมูลที่มีองค์ประกอบกลายเป็นองค์ประกอบโดยอ้อมของชุดข้อมูลที่สร้างขึ้น ลำดับที่ระบบจะแสดงองค์ประกอบเมื่อแปลงชุดข้อมูล Dependency เป็นลิสต์จะระบุโดยพารามิเตอร์ order
ดูข้อมูลเพิ่มเติมได้ที่ภาพรวมของ Depset
องค์ประกอบทั้งหมด (ทั้งโดยตรงและโดยอ้อม) ของชุดข้อมูล Dependency ต้องเป็นประเภทเดียวกันตามที่ได้จากนิพจน์ type(x)
เนื่องจากชุดที่อิงตามแฮชใช้เพื่อกำจัดรายการที่ซ้ำกันระหว่างการทำซ้ำ องค์ประกอบทั้งหมดของ depset จึงควรเป็นแฮชได้ อย่างไรก็ตาม ปัจจุบันยังไม่มีการตรวจสอบค่าคงที่นี้อย่างสม่ำเสมอในคอนสตรัคเตอร์ทั้งหมด ใช้ Flag --incompatible_always_check_depset_elements เพื่อเปิดใช้การตรวจสอบที่สอดคล้องกัน ซึ่งจะเป็นลักษณะการทำงานเริ่มต้นในรุ่นต่อๆ ไป ดูปัญหา 10313
นอกจากนี้ ขณะนี้องค์ประกอบต้องเป็นแบบคงที่ แต่เราจะผ่อนปรนข้อจำกัดนี้ในอนาคต
ลำดับของ Depset ที่สร้างควรเข้ากันได้กับลำดับของ Depset transitive
คำสั่งซื้อ "default"
ใช้ได้กับคำสั่งซื้ออื่นๆ ทั้งหมด แต่คำสั่งซื้ออื่นๆ ใช้ได้เฉพาะกับคำสั่งซื้อนั้นๆ เท่านั้น
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
direct
|
sequence หรือ None
ค่าเริ่มต้นคือ None ซึ่งเป็นรายการองค์ประกอบ direct ของ depset |
order
|
สตริง;
ค่าเริ่มต้นคือ "default" กลยุทธ์การเรียกดูชุดข้อมูลใหม่ ดูค่าที่เป็นไปได้ได้ที่นี่ |
transitive
|
ลําดับ depset หรือ None
ค่าเริ่มต้นคือ None รายการ depset ที่องค์ประกอบจะกลายเป็นองค์ประกอบโดยอ้อมของ depset |
existing_rule
unknown existing_rule(name)
None
หากไม่มีอินสแตนซ์กฎที่มีชื่อดังกล่าวออบเจ็กต์แบบพจนานุกรมที่แก้ไขไม่ได้ในที่นี้หมายถึงออบเจ็กต์ x
ที่แก้ไขไม่ได้อย่างละเอียด ซึ่งรองรับการทำซ้ำแบบพจนานุกรม, len(x)
, name in x
, x[name]
, x.get(name)
, x.items()
, x.keys()
และ x.values()
ผลลัพธ์จะมีรายการสําหรับแอตทริบิวต์แต่ละรายการ ยกเว้นแอตทริบิวต์ส่วนตัว (ที่ชื่อไม่ได้ขึ้นต้นด้วยตัวอักษร) และแอตทริบิวต์เดิมบางประเภทที่ใช้ไม่ได้ นอกจากนี้ พจนานุกรมยังมีรายการสำหรับ name
และ kind
ของอินสแตนซ์กฎ (เช่น 'cc_binary'
)
ค่าของผลลัพธ์แสดงค่าแอตทริบิวต์ดังต่อไปนี้
- ระบบจะแสดงแอตทริบิวต์ประเภท str, int และ bool ตามที่ปรากฏ
- ระบบจะแปลงป้ายกำกับเป็นสตริงในรูปแบบ
':foo'
สำหรับเป้าหมายในแพ็กเกจเดียวกันหรือ'//pkg:name'
สำหรับเป้าหมายในแพ็กเกจอื่น - โดยลิสต์จะแสดงเป็นแบบ Tuple และคำสั่งจะแปลงเป็นคำสั่งใหม่ที่เปลี่ยนแปลงได้ องค์ประกอบขององค์ประกอบดังกล่าวจะได้รับการแปลงแบบซ้ำตามลักษณะเดียวกัน
- ระบบจะแสดงผลค่า
select
โดยเปลี่ยนรูปแบบเนื้อหาตามที่อธิบายไว้ข้างต้น - แอตทริบิวต์ที่ไม่ได้ระบุค่าไว้ระหว่างการสร้างกฎและทำการคำนวณค่าเริ่มต้นจะไม่รวมอยู่ในผลลัพธ์ (ค่าเริ่มต้นที่คำนวณแล้วไม่สามารถคำนวณได้จนถึงระยะการวิเคราะห์)
หากเป็นไปได้ ให้ใช้ฟังก์ชันนี้เฉพาะในฟังก์ชันการใช้งานของมาโครสัญลักษณ์ตัวสิ้นสุดกฎ ไม่แนะนําให้ใช้ฟังก์ชันนี้ในบริบทอื่นๆ และจะปิดใช้ในรุ่น Bazel ในอนาคต เนื่องจากจะทำให้ไฟล์ BUILD
ทำงานผิดพลาดได้ง่ายและขึ้นอยู่กับลําดับ นอกจากนี้ โปรดทราบว่าการแปลงนี้แตกต่างจากการแปลงค่าแอตทริบิวต์กฎจากรูปแบบภายในเป็น Starlark อีก 2 รูปแบบเล็กน้อย รูปแบบหนึ่งใช้โดยค่าเริ่มต้นที่คำนวณแล้ว อีกรูปแบบหนึ่งใช้โดย ctx.attr.foo
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
name
|
string;
required ชื่อของเป้าหมาย |
existing_rules
unknown existing_rules()
existing_rule(name)
จะแสดงออบเจ็กต์แบบพจนานุกรมที่แก้ไขไม่ได้ในที่นี้หมายถึงออบเจ็กต์ x
ที่แก้ไขไม่ได้อย่างละเอียด ซึ่งรองรับการทำซ้ำแบบพจนานุกรม, len(x)
, name in x
, x[name]
, x.get(name)
, x.items()
, x.keys()
และ x.values()
หากเป็นไปได้ ให้ใช้ฟังก์ชันนี้เฉพาะในฟังก์ชันการใช้งานของมาโครสัญลักษณ์ตัวสิ้นสุดกฎ ไม่แนะนําให้ใช้ฟังก์ชันนี้ในบริบทอื่นๆ และจะปิดใช้ในรุ่น Bazel ในอนาคต เนื่องจากจะทำให้ไฟล์ BUILD
ทำงานผิดพลาดได้ง่ายและขึ้นอยู่กับลําดับ
exports_files
None
exports_files(srcs, visibility=None, licenses=None)
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
srcs
|
ลําดับ สตริง
ต้องระบุ นี่คือรายการไฟล์ที่จะส่งออก |
visibility
|
sequence หรือ None
ค่าเริ่มต้นคือ None คุณระบุประกาศการแสดงผลได้ ไฟล์จะปรากฏให้เป้าหมายที่ระบุ หากไม่ระบุระดับการแชร์ ไฟล์จะแสดงให้ทุกแพ็กเกจเห็น |
licenses
|
ลำดับ ของสตริง หรือ None ค่าเริ่มต้นคือ None ใบอนุญาตที่จะระบุ |
glob
sequence glob(include=[], exclude=[], exclude_directories=1, allow_empty=unbound)
- จับคู่รูปแบบอย่างน้อย 1 รายการใน
include
- ไม่ตรงกับรูปแบบใดเลยใน
exclude
(ค่าเริ่มต้น[]
)
exclude_directories
(ตั้งค่าเป็น 1
) ระบบจะไม่รวมไฟล์ประเภทไดเรกทอรีไว้ในผลลัพธ์ (ค่าเริ่มต้นคือ 1
)
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
include
|
ลําดับสตริง
ค่าเริ่มต้นคือ [] โดยจะเป็นรายการรูปแบบ Glob ที่จะรวม |
exclude
|
ลําดับสตริง
ค่าเริ่มต้นคือ [] โดยจะเป็นรายการรูปแบบทั่วไปที่จะยกเว้น |
exclude_directories
|
int;
ค่าเริ่มต้นคือ 1 เป็น Flag ที่จะยกเว้นไดเรกทอรีหรือไม่ |
allow_empty
|
ค่าเริ่มต้นคือ unbound เราอนุญาตให้รูปแบบทั่วไปไม่จับคู่กับรายการใดเลยหรือไม่ หาก `allow_empty` เป็น False รูปแบบการรวมแต่ละรายการต้องตรงกับรายการใดรายการหนึ่ง และผลลัพธ์สุดท้ายต้องไม่ว่างเปล่า (หลังจากยกเว้นการจับคู่รูปแบบ "exclude" แล้ว) |
module_name
string module_name()
module.name
ที่แสดงใน module_ctx.modules
อาจแสดงผล None
module_version
string module_version()
module.version
ที่เห็นใน module_ctx.modules
อาจแสดงผล None
package_group
None
package_group(name, packages=[], includes=[])
visibility
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
name
|
string;
ต้องระบุ ชื่อที่ไม่ซ้ำกันของกฎนี้ |
packages
|
ลําดับของ สตริง
ค่าเริ่มต้นคือ [] การแจกแจงแพ็กเกจทั้งหมดในกลุ่มนี้ |
includes
|
ลําดับสตริง
ค่าเริ่มต้นคือ [] กลุ่มแพ็กเกจอื่นๆ ที่รวมอยู่ในกลุ่มนี้ |
package_name
string package_name()
some/package/BUILD
ค่าจะเป็น some/package
หากไฟล์ BUILD เรียกใช้ฟังก์ชันที่กําหนดไว้ในไฟล์ .bzl package_name()
จะจับคู่กับแพ็กเกจไฟล์ BUILD ของผู้เรียกใช้
package_relative_label
Label package_relative_label(input)
BUILD
ที่ระบบกำลังเรียกใช้มาโครปัจจุบัน) หากอินพุตเป็น Label
อยู่แล้ว ระบบจะแสดงผลอินพุตนั้นโดยไม่มีการเปลี่ยนแปลงฟังก์ชันนี้อาจเรียกใช้ได้ขณะประเมินไฟล์ BUILD และมาโครที่เรียกใช้โดยตรงหรือโดยอ้อมเท่านั้น แต่จะเรียกใช้ในฟังก์ชันการใช้งานกฎไม่ได้ (เช่น)
ผลลัพธ์ของฟังก์ชันนี้คือค่า Label
เดียวกับที่เกิดขึ้นโดยการส่งสตริงที่ระบุไปยังแอตทริบิวต์ที่มีค่าป้ายกำกับของเป้าหมายที่ประกาศในไฟล์ BUILD
หมายเหตุการใช้งาน: ความแตกต่างระหว่างฟังก์ชันนี้กับ Label() คือ Label()
ใช้บริบทของแพ็กเกจของไฟล์ .bzl
ที่เรียกใช้ ไม่ใช่แพ็กเกจของไฟล์ BUILD
ใช้ Label()
เมื่อต้องการอ้างอิงเป้าหมายแบบคงที่ซึ่งมีการเขียนลงในมาโครอย่างถาวร เช่น คอมไพเลอร์ ใช้ package_relative_label()
เมื่อคุณต้องทำให้สตริงป้ายกำกับที่ระบุโดยไฟล์ BUILD เป็นออบเจ็กต์ Label
ให้เป็นมาตรฐาน (ไม่มีวิธีแปลงสตริงเป็น Label
ในบริบทของแพ็กเกจนอกเหนือจากไฟล์ BUILD หรือไฟล์ .bzl การเรียก ด้วยเหตุนี้ มาโครด้านนอกจึงควรส่งออบเจ็กต์ป้ายกำกับไปยังมาโครด้านในแทนสตริงป้ายกำกับเสมอ)
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
input
|
สตริง หรือ ป้ายกำกับ
ต้องระบุ สตริงป้ายกำกับหรือออบเจ็กต์ป้ายกำกับที่ป้อน หากมีการส่งออบเจ็กต์ Label ระบบจะแสดงผลออบเจ็กต์ดังกล่าวตามที่เป็นอยู่ |
repo_name
string repo_name()
repository_name
string repository_name()
--+incompatible_enable_deprecated_label_apis
เลิกใช้งานแล้ว โปรดใช้
repo_name
แทน ซึ่งไม่มีเครื่องหมาย @ นําหน้าที่ไม่ถูกต้อง แต่ทํางานเหมือนกันชื่อตามแบบแผนของที่เก็บซึ่งมีแพ็กเกจที่กําลังประเมินอยู่ โดยมีเครื่องหมาย @ (@
) อยู่หน้า เช่น ในแพ็กเกจที่เรียกให้สร้างขึ้นมาโดย stanza WORKSPACE local_repository(name='local', path=...)
จะมีการตั้งค่าเป็น @local
ในแพ็กเกจในที่เก็บข้อมูลหลัก ระบบจะตั้งค่าเป็น @
เลือก
unknown select(x, no_match_error='')
select()
คือฟังก์ชันตัวช่วยที่ทำให้แอตทริบิวต์กฎกําหนดค่าได้ ดูรายละเอียดได้ที่สร้างสารานุกรม
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
x
|
dict;
ต้องระบุ พจนานุกรมที่แมปเงื่อนไขการกําหนดค่ากับค่า แต่ละคีย์คือ ป้ายกำกับ หรือสตริงป้ายกำกับที่ระบุอินสแตนซ์ config_setting หรือรูปทรงจำกัด_ค่า ดูเอกสารประกอบเกี่ยวกับมาโครเพื่อดูว่าเมื่อใดควรใช้ป้ายกำกับแทนสตริง |
no_match_error
|
สตริง
ค่าเริ่มต้นคือ '' ข้อผิดพลาดที่กำหนดเองซึ่งไม่บังคับเพื่อรายงานหากไม่มีเงื่อนไขที่ตรงกัน |
แพ็กเกจย่อย
sequence subpackages(include, exclude=[], allow_empty=False)
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
include
|
ลำดับของสตริง
ต้องระบุ รายการรูปแบบ glob ที่จะรวมอยู่ในการสแกนแพ็กเกจย่อย |
exclude
|
ลำดับของสตริง
ค่าเริ่มต้นคือ [] รายการรูปแบบ glob ที่จะยกเว้นจากการสแกนแพ็กเกจย่อย |
allow_empty
|
bool;
ค่าเริ่มต้นคือ False หากการเรียกใช้แสดงผลรายการว่างเปล่า เราจะดำเนินการไม่สำเร็จหรือไม่ โดยค่าเริ่มต้น รายการว่างจะบ่งบอกถึงข้อผิดพลาดที่อาจเกิดขึ้นในไฟล์ BUILD ที่การเรียกใช้ subpackages() นั้นไม่จำเป็น การตั้งค่าเป็น "จริง" จะช่วยให้ฟังก์ชันนี้ดำเนินการสำเร็จในกรณีนั้นได้ |