วิธีการที่มีอยู่ในไฟล์ BUILD ดูสารานุกรมการสร้างสำหรับฟังก์ชันและกฎการสร้างเพิ่มเติม ซึ่งใช้ในไฟล์ BUILD ได้ด้วย
สมาชิก
- depset
- existing_rule
- existing_rules
- exports_files
- glob
- module_name
- module_version
- แพ็กเกจ
- package_default_visibility
- package_group
- package_name
- package_relative_label
- repo_name
- repository_name
- เลือก
- แพ็กเกจย่อย
depset
depset depset(direct=None, order="default", *, transitive=None)
direct
คือรายการองค์ประกอบโดยตรงของ depset และพารามิเตอร์ transitive
คือรายการ depset ที่องค์ประกอบของ depset นั้นจะกลายเป็นองค์ประกอบโดยอ้อมของ depset ที่สร้างขึ้น ลำดับที่ระบบแสดงองค์ประกอบเมื่อแปลงชุดทรัพยากร Dependency เป็นรายการจะกำหนดโดยพารามิเตอร์ order
ดูข้อมูลเพิ่มเติมได้ที่ภาพรวมของ Depset
องค์ประกอบทั้งหมด (โดยตรงและโดยอ้อม) ของชุดการพึ่งพาต้องเป็นประเภทเดียวกันตามที่ได้รับจากนิพจน์ type(x)
เนื่องจากใช้ชุดที่อิงตามแฮชเพื่อกำจัดรายการที่ซ้ำกันระหว่างการวนซ้ำ องค์ประกอบทั้งหมดของ depset จึงควรแฮชได้ อย่างไรก็ตาม ปัจจุบันระบบไม่ได้ตรวจสอบตัวแปรนี้อย่างสม่ำเสมอในตัวสร้างทั้งหมด ใช้แฟล็ก --incompatible_always_check_depset_elements เพื่อเปิดใช้การตรวจสอบที่สอดคล้องกัน ซึ่งจะเป็นลักษณะการทำงานเริ่มต้นในรุ่นต่อๆ ไป ดูปัญหา 10313
นอกจากนี้ ปัจจุบันองค์ประกอบต้องเปลี่ยนแปลงไม่ได้ แต่ข้อจำกัดนี้จะผ่อนปรนในอนาคต
ลำดับของ depset ที่สร้างขึ้นควรเข้ากันได้กับลำดับของ transitive
depsets "default"
ใช้ร่วมกับคำสั่งซื้ออื่นๆ ได้ แต่คำสั่งซื้ออื่นๆ จะใช้ร่วมกันเองได้เท่านั้น
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
direct
|
ลำดับ หรือ None
ค่าเริ่มต้นคือ None รายการองค์ประกอบโดยตรงของชุดการพึ่งพา |
order
|
string;
ค่าเริ่มต้นคือ "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()
ผลลัพธ์จะมีรายการสำหรับแอตทริบิวต์แต่ละรายการ ยกเว้นแอตทริบิวต์ส่วนตัว (ซึ่งชื่อไม่ได้ขึ้นต้นด้วยตัวอักษร) และแอตทริบิวต์ประเภทเดิมบางรายการที่แสดงไม่ได้ นอกจากนี้ dict ยังมีรายการสำหรับ name
และ kind
ของอินสแตนซ์กฎ (เช่น 'cc_binary'
)
ค่าของผลลัพธ์แสดงค่าแอตทริบิวต์ดังนี้
- แอตทริบิวต์ประเภท str, int และ bool จะแสดงตามที่เป็น
- ป้ายกำกับจะแปลงเป็นสตริงในรูปแบบ
':foo'
สำหรับเป้าหมายในแพ็กเกจเดียวกัน หรือ'//pkg:name'
สำหรับเป้าหมายในแพ็กเกจอื่น - รายการจะแสดงเป็นทูเพิล และจะแปลงพจนานุกรมเป็นพจนานุกรมใหม่ที่เปลี่ยนแปลงได้ ระบบจะแปลงองค์ประกอบขององค์ประกอบเหล่านั้นแบบเรียกซ้ำในลักษณะเดียวกัน
- ระบบจะแสดงค่า
select
พร้อมกับเนื้อหาที่แปลงแล้วตามที่อธิบายไว้ข้างต้น - ระบบจะยกเว้นแอตทริบิวต์ที่ไม่ได้ระบุค่าในระหว่างการสร้างอินสแตนซ์ของกฎและมีการคำนวณค่าเริ่มต้นจากผลลัพธ์ (ค่าเริ่มต้นที่คำนวณแล้วจะคำนวณไม่ได้จนกว่าจะถึงระยะการวิเคราะห์)
หากเป็นไปได้ ให้ใช้ฟังก์ชันนี้เฉพาะในฟังก์ชันการใช้งานของมาโครสัญลักษณ์ตัวสรุปกฎ เราไม่แนะนำให้ใช้ฟังก์ชันนี้ในบริบทอื่นๆ และจะปิดใช้ใน Bazel รุ่นต่อๆ ไป เนื่องจากจะทำให้ไฟล์ BUILD
เปราะบางและขึ้นอยู่กับลำดับ นอกจากนี้ โปรดทราบว่าการแปลงค่าแอตทริบิวต์ของกฎจากแบบฟอร์มภายในเป็น Starlark นั้นแตกต่างจากการแปลงค่า Conversion อื่นๆ 2 รายการเล็กน้อย โดยรายการหนึ่งใช้โดยค่าเริ่มต้นที่คำนวณแล้ว และอีกรายการหนึ่งใช้โดย ctx.attr.foo
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
name
|
สตริง
ต้องระบุ ชื่อของเป้าหมาย |
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
|
ลำดับของสตริง
ค่าเริ่มต้นคือ [] รายการรูปแบบ Glob ที่จะยกเว้น |
exclude_directories
|
int;
ค่าเริ่มต้นคือ 1 แฟล็กที่ระบุว่าจะยกเว้นไดเรกทอรีหรือไม่ |
allow_empty
|
ค่าเริ่มต้นคือ unbound เราอนุญาตให้รูปแบบ Glob ไม่ตรงกับอะไรเลยหรือไม่ หาก `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
พัสดุ
unknown package(**kwargs)
load()
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
kwargs
|
required ดูฟังก์ชัน package() ในสารานุกรมการสร้างเพื่อดูอาร์กิวเมนต์ที่เกี่ยวข้อง
|
package_default_visibility
List package_default_visibility()
default_visibility
ของ package()
ซึ่งขยายให้รวมแพ็กเกจด้วย
package_group
None
package_group(name, packages=[], includes=[])
visibility
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
name
|
สตริง;
ต้องระบุ ชื่อที่ไม่ซ้ำกันสำหรับกฎนี้ |
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
|
สตริงหรือป้ายกำกับ
ต้องระบุ สตริงป้ายกำกับอินพุตหรือออบเจ็กต์ป้ายกำกับ หากมีการส่งออบเจ็กต์ป้ายกำกับ ระบบจะแสดงผลตามที่ส่ง |
repo_name
string repo_name()
repository_name
string repository_name()
--+incompatible_enable_deprecated_label_apis
เลิกใช้งานแล้ว เราขอแนะนำให้ใช้
repo_name
แทน ซึ่งไม่มีเครื่องหมาย @ นำหน้าที่ไม่ถูกต้อง แต่ทำงานเหมือนกันในกรณีอื่นๆชื่อที่แน่นอนของที่เก็บที่มีแพ็กเกจที่กำลังประเมิน โดยมีเครื่องหมาย @ (@
) นำหน้า เช่น ในแพ็กเกจที่สร้างขึ้นโดยส่วน WORKSPACE local_repository(name='local', path=...)
ระบบจะตั้งค่าเป็น @local
ในแพ็กเกจในที่เก็บข้อมูลหลัก ระบบจะตั้งค่าเป็น @
เลือก
unknown select(x, no_match_error='')
select()
คือฟังก์ชันตัวช่วยที่ทำให้แอตทริบิวต์กฎกำหนดค่าได้ ดูรายละเอียดได้ที่สร้างสารานุกรม
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
x
|
dict;
required Dict ที่แมปเงื่อนไขการกำหนดค่ากับค่า แต่ละคีย์คือป้ายกำกับหรือสตริงป้ายกำกับที่ระบุอินสแตนซ์ config_setting หรือ constraint_value ดูเอกสารประกอบเกี่ยวกับมาโครเพื่อดูว่าเมื่อใดควรใช้ป้ายกำกับแทนสตริง |
no_match_error
|
สตริง
ค่าเริ่มต้นคือ '' ข้อผิดพลาดที่กำหนดเองที่ไม่บังคับเพื่อรายงานหากไม่มีเงื่อนไขใดตรงกัน |
แพ็กเกจย่อย
sequence subpackages(include, exclude=[], allow_empty=False)
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
include
|
ลำดับของสตริง
ต้องระบุ รายการรูปแบบ Glob ที่จะรวมในการสแกนแพ็กเกจย่อย |
exclude
|
ลำดับของสตริง
ค่าเริ่มต้นคือ [] รายการรูปแบบ Glob ที่จะยกเว้นจากการสแกนแพ็กเกจย่อย |
allow_empty
|
bool;
ค่าเริ่มต้นคือ False ระบุว่าเราจะถือว่าการเรียกใช้ล้มเหลวหรือไม่หากการเรียกใช้แสดงรายการที่ว่างเปล่า โดยค่าเริ่มต้น รายการที่ว่างเปล่าจะบ่งบอกถึงข้อผิดพลาดที่อาจเกิดขึ้นในไฟล์ BUILD ซึ่งการเรียกใช้ subpackages() นั้นไม่จำเป็น การตั้งค่าเป็น "จริง" จะช่วยให้ฟังก์ชันนี้ทำงานได้ในกรณีดังกล่าว |