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