โมดูลที่มีฟังก์ชันสำหรับสร้างการดำเนินการ เข้าถึงโมดูลนี้โดยใช้ ctx.actions
สมาชิก
- args
- declare_directory
- declare_file
- declare_symlink
- do_nothing
- expand_template
- run
- run_shell
- symlink
- template_dict
- write
args
Args actions.args()
declare_directory
File actions.declare_directory(filename, *, sibling=None)
Args.add_all()
เฉพาะไฟล์และไดเรกทอรีปกติเท่านั้นที่จะอยู่ในเนื้อหาแบบขยายของ declare_directory ได้
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
filename
|
สตริง;
ต้องระบุ หากไม่ได้ระบุ "sibling" เส้นทางของไดเรกทอรีใหม่จะสัมพันธ์กับแพ็กเกจปัจจุบัน หรือจะเป็นชื่อฐานของไฟล์ก็ได้ ('sibling' จะกำหนดไดเรกทอรี) |
sibling
|
ไฟล์ หรือ None
ค่าเริ่มต้นคือ None ไฟล์ที่อยู่ในไดเรกทอรีเดียวกับไดเรกทอรีที่ประกาศใหม่ ไฟล์ต้องอยู่ในแพ็กเกจปัจจุบัน |
declare_file
File actions.declare_file(filename, *, sibling=None)
sibling
ชื่อไฟล์จะสัมพันธ์กับไดเรกทอรีแพ็กเกจ มิฉะนั้นไฟล์จะอยู่ในไดเรกทอรีเดียวกับ sibling
คุณสร้างไฟล์นอกแพ็กเกจปัจจุบันไม่ได้โปรดทราบว่านอกเหนือจากการประกาศไฟล์แล้ว คุณต้องสร้างการดำเนินการที่ปล่อยไฟล์แยกต่างหากด้วย การสร้างการดำเนินการดังกล่าวจะต้องส่งออบเจ็กต์ File
ที่แสดงผลไปยังฟังก์ชันการสร้างของการดำเนินการ
โปรดทราบว่าไฟล์เอาต์พุตที่ประกาศล่วงหน้าไม่จําเป็นต้องมีการประกาศโดยใช้ฟังก์ชันนี้ คุณสามารถรับออบเจ็กต์ File
ของผู้ใช้ได้จาก ctx.outputs
แทน ดูตัวอย่างการใช้งาน
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
filename
|
สตริง;
ต้องระบุ หากไม่ได้ระบุ "sibling" จะเป็นเส้นทางของไฟล์ใหม่ซึ่งสัมพันธ์กับแพ็กเกจปัจจุบัน มิฉะนั้น ชื่อฐานสำหรับไฟล์ ("ระดับเดียวกัน" จะกำหนดไดเรกทอรี) |
sibling
|
File หรือ None
ค่าเริ่มต้นคือ None เป็นไฟล์ที่อยู่ในไดเรกทอรีเดียวกับไฟล์ที่สร้างใหม่ ไฟล์ต้องอยู่ในแพ็กเกจปัจจุบัน |
declare_symlink
File actions.declare_symlink(filename, *, sibling=None)
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
filename
|
สตริง;
ต้องระบุ หากไม่ได้ระบุ "sibling" จะเป็นเส้นทางของลิงก์สัญลักษณ์ใหม่ซึ่งสัมพันธ์กับแพ็กเกจปัจจุบัน หรือจะเป็นชื่อฐานของไฟล์ก็ได้ ('sibling' จะกำหนดไดเรกทอรี) |
sibling
|
ไฟล์ หรือ None
ค่าเริ่มต้นคือ None ซึ่งเป็นไฟล์ที่อยู่ในไดเรกทอรีเดียวกับสัญลักษณ์ลิงก์ที่ประกาศใหม่ |
do_nothing
None
actions.do_nothing(mnemonic, inputs=[])
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
mnemonic
|
string;
ต้องระบุ คำอธิบายการดำเนินการแบบคำเดียว เช่น CppCompile หรือ GoLink |
inputs
|
ลําดับของ File หรือ depset
ค่าเริ่มต้นคือ [] ลิสต์ไฟล์อินพุตของการดำเนินการ |
expand_template
None
actions.expand_template(template, output, substitutions={}, is_executable=False, computed_substitutions=unbound)
substitutions
ตามลำดับที่ระบุการแทนที่ เมื่อใดก็ตามที่คีย์ของพจนานุกรมปรากฏในเทมเพลต (หรือเป็นผลมาจากการแทนที่ก่อนหน้านี้) ระบบจะแทนที่คีย์ด้วยค่าที่เชื่อมโยง คีย์ไม่มีไวยากรณ์พิเศษ เช่น คุณอาจใช้วงเล็บปีกกาเพื่อหลีกเลี่ยงความขัดแย้ง (เช่น {KEY}
) ดูตัวอย่างการใช้งาน
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
template
|
ไฟล์
ต้องระบุ ไฟล์เทมเพลต ซึ่งเป็นไฟล์ข้อความที่เข้ารหัส UTF-8 |
output
|
File;
ต้องระบุ ซึ่งเป็นไฟล์เอาต์พุตที่เป็นไฟล์ข้อความที่เข้ารหัส UTF-8 |
substitutions
|
dict;
ค่าเริ่มต้นคือ {} การแทนที่ที่จะทำเมื่อขยายเทมเพลต |
is_executable
|
bool;
ค่าเริ่มต้นคือ False ระบุว่าไฟล์เอาต์พุตควรเป็นไฟล์ปฏิบัติการหรือไม่ |
computed_substitutions
|
TemplateDict
ค่าเริ่มต้นคือ unbound การแทนที่ที่จะทำเมื่อขยายเทมเพลต |
โฮมรัน
None
actions.run(outputs, inputs=[], unused_inputs_list=None, executable, tools=unbound, arguments=[], mnemonic=None, progress_message=None, use_default_shell_env=False, env=None, execution_requirements=None, input_manifests=None, exec_group=None, shadowed_action=None, resource_set=None, toolchain=unbound)
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
outputs
|
ลําดับของ Files
ต้องระบุ รายการไฟล์เอาต์พุตของการดำเนินการ |
inputs
|
ลําดับของไฟล์หรือ depset
ค่าเริ่มต้นคือ [] รายการหรือ depset ของไฟล์อินพุตของการดำเนินการ |
unused_inputs_list
|
File หรือ None
ค่าเริ่มต้นคือ None ไฟล์ที่มีรายการอินพุตที่การดำเนินการไม่ได้ใช้ เนื้อหาของไฟล์นี้ (โดยทั่วไปเป็นหนึ่งในเอาต์พุตของการดำเนินการ) สอดคล้องกับรายการไฟล์อินพุตที่ไม่ได้ใช้ระหว่างการดำเนินการทั้งหมด การเปลี่ยนแปลงในไฟล์เหล่านั้นต้องไม่ส่งผลต่อเอาต์พุตของการดำเนินการไม่ว่าในทางใดก็ตาม |
executable
|
File หรือ string หรือ FilesToRunProvider
ต้องระบุ เป็นไฟล์ที่เรียกใช้งานได้ซึ่งการดำเนินการจะเรียกใช้ |
tools
|
sequence หรือ depset
ค่าเริ่มต้นคือ unbound ลิสต์หรือ depset ของเครื่องมือที่จําเป็นสําหรับการดําเนินการ เครื่องมือเป็นอินพุตพร้อมไฟล์เรียกใช้เพิ่มเติมที่พร้อมใช้งานกับการดำเนินการโดยอัตโนมัติ เมื่อระบุรายการ รายการดังกล่าวอาจเป็นคอลเล็กชันไฟล์ที่หลากหลาย อินสแตนซ์ FilesToRunProvider หรือชุด Dep ของไฟล์ ระบบจะเพิ่มไฟล์รันไทม์ของไฟล์ที่อยู่ในรายการโดยตรงและมาจาก ctx.executable โดยอัตโนมัติ เมื่อระบุชุดข้อมูล จะต้องมีเฉพาะไฟล์เท่านั้น ในทั้ง 2 กรณี ระบบจะไม่ตรวจสอบไฟล์ภายใน depset กับ ctx.executable สำหรับไฟล์รันไทม์ |
arguments
|
sequence;
ค่าเริ่มต้นคือ [] อักขระอาร์กิวเมนต์บรรทัดคำสั่งของการดำเนินการ ต้องเป็นรายการสตริงหรือออบเจ็กต์ actions.args()
|
mnemonic
|
สตริง หรือ None
ค่าเริ่มต้นคือ None คำอธิบายการดำเนินการแบบ 1 คำ เช่น CppCompile หรือ GoLink |
progress_message
|
สตริง หรือ None
ค่าเริ่มต้นคือ None ข้อความความคืบหน้าที่จะแสดงต่อผู้ใช้ระหว่างการสร้าง เช่น "กำลังคอมไพล์ foo.cc เพื่อสร้าง foo.o" ข้อความอาจมีรูปแบบ %{label} , %{input} หรือ %{output} ซึ่งแทนที่ด้วยสตริงป้ายกำกับ อินพุตแรก หรือเส้นทางของเอาต์พุตตามลำดับ ต้องการใช้รูปแบบแทนสตริงแบบคงที่ เนื่องจากรูปแบบแรกมีประสิทธิภาพมากกว่า
|
use_default_shell_env
|
bool;
ค่าเริ่มต้นคือ False กำหนดว่าการดำเนินการควรใช้สภาพแวดล้อม Shell เริ่มต้นซึ่งประกอบด้วยตัวแปรขึ้นอยู่กับระบบปฏิบัติการไม่กี่รายการหรือไม่ รวมถึงตัวแปรที่ตั้งค่าผ่าน --action_env หากทั้ง |
env
|
dict หรือ None
ค่าเริ่มต้นคือ None ตั้งค่าพจนานุกรมของตัวแปรสภาพแวดล้อม หากทั้ง |
execution_requirements
|
dict หรือ None ค่าเริ่มต้นคือ None ข้อมูลสำหรับการกำหนดเวลาการดำเนินการ ดูแท็กสำหรับคีย์ที่มีประโยชน์ |
input_manifests
|
sequence หรือ None ค่าเริ่มต้นคือ None อาร์กิวเมนต์เดิม ยกเว้นแล้ว |
exec_group
|
สตริง หรือ None
ค่าเริ่มต้นคือ None ทําการบนแพลตฟอร์มการดําเนินการของกลุ่ม exec ที่ระบุ หากไม่มี ให้ใช้แพลตฟอร์มการดำเนินการเริ่มต้นของเป้าหมาย |
shadowed_action
|
การดำเนินการ;
ค่าเริ่มต้นคือ None ทำให้การดำเนินการทำงานโดยใช้อินพุตและสภาพแวดล้อมของการดำเนินการที่ซ้อนทับซึ่งเพิ่มลงในรายการอินพุตและสภาพแวดล้อมของการดำเนินการ สภาพแวดล้อมการดําเนินการสามารถเขียนทับตัวแปรสภาพแวดล้อมของการดําเนินการที่ซ้อนทับได้ หากไม่มี ให้ใช้เฉพาะอินพุตของการดำเนินการและสภาพแวดล้อมที่ระบุ |
resource_set
|
callable หรือ None ;
ค่าเริ่มต้นคือ None เป็นฟังก์ชัน Callback ที่แสดงพจนานุกรมชุดทรัพยากร ซึ่งใช้ในการประมาณการใช้ทรัพยากร ณ เวลาดำเนินการหากการดําเนินการนี้ทํางานในเครื่อง ฟังก์ชันนี้ยอมรับอาร์กิวเมนต์ตำแหน่ง 2 รายการ ได้แก่ สตริงที่มีชื่อระบบปฏิบัติการ (เช่น "osx") และจำนวนเต็มที่แสดงถึงจำนวนอินพุตของการทำงาน พจนานุกรมที่แสดงผลอาจมีรายการต่อไปนี้ ซึ่งแต่ละรายการอาจเป็น float หรือ int
หากตั้งค่าพารามิเตอร์นี้เป็น ฟังก์ชัน Callback ต้องเป็นระดับบนสุด (ไม่อนุญาตให้ใช้ฟังก์ชัน LAMBDA และฟังก์ชันที่ฝัง) |
toolchain
|
Label หรือ string หรือ None
ค่าเริ่มต้นคือ unbound ประเภท Toolchain ของไฟล์ปฏิบัติการหรือเครื่องมือที่ใช้ในการดำเนินการนี้ หากไฟล์ปฏิบัติการและเครื่องมือไม่ได้มาจากชุดเครื่องมือ ให้ตั้งค่าพารามิเตอร์นี้เป็น "ไม่มี" หากไฟล์ปฏิบัติการและเครื่องมือมาจากชุดเครื่องมือ คุณต้องตั้งค่าประเภทชุดเครื่องมือเพื่อให้การดำเนินการทำงานบนแพลตฟอร์มการดำเนินการที่ถูกต้อง โปรดทราบว่ากฎที่สร้างการดำเนินการนี้ต้องกำหนดเครื่องมือนี้ภายในฟังก์ชัน "rule()" เมื่อตั้งค่าทั้งพารามิเตอร์ `toolchain` และ `exec_group` ระบบจะใช้ `exec_group` ข้อผิดพลาดจะปรากฏขึ้นในกรณีที่ "exec_group" ไม่ได้ระบุ Toolchain เดียวกัน |
run_shell
None
actions.run_shell(outputs, inputs=[], tools=unbound, arguments=[], mnemonic=None, command, progress_message=None, use_default_shell_env=False, env=None, execution_requirements=None, input_manifests=None, exec_group=None, shadowed_action=None, resource_set=None, toolchain=unbound)
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
outputs
|
ลำดับ ของไฟล์
ต้องระบุ รายการไฟล์เอาต์พุตของการดำเนินการ |
inputs
|
ลําดับของไฟล์หรือ depset
ค่าเริ่มต้นคือ [] รายการหรือ depset ของไฟล์อินพุตของการดำเนินการ |
tools
|
ลําดับของ File หรือ depset
ค่าเริ่มต้นคือ unbound รายการหรือ depset ของเครื่องมือที่จําเป็นสําหรับการดําเนินการ เครื่องมือเป็นอินพุตพร้อมไฟล์เรียกใช้เพิ่มเติมที่พร้อมใช้งานกับการดำเนินการโดยอัตโนมัติ รายการอาจมีอินสแตนซ์ Files หรือ FilesToRunProvider ก็ได้ |
arguments
|
sequence;
ค่าเริ่มต้นคือ [] อาร์กิวเมนต์บรรทัดคำสั่งของการดำเนินการ ต้องเป็นรายการสตริงหรือออบเจ็กต์ actions.args() Bazel จะส่งองค์ประกอบในแอตทริบิวต์นี้เป็นอาร์กิวเมนต์ไปยังคําสั่ง คําสั่งจะเข้าถึงอาร์กิวเมนต์เหล่านี้ได้โดยใช้การแทนที่ตัวแปรเชลล์ เช่น ในกรณีที่ |
mnemonic
|
สตริง หรือ None
ค่าเริ่มต้นคือ None คำอธิบายการดำเนินการแบบ 1 คำ เช่น CppCompile หรือ GoLink |
command
|
string หรือลำดับของสตริง
ต้องระบุ คำสั่ง Shell เพื่อเรียกใช้ ซึ่งอาจเป็นสตริง (แนะนำ) หรือลำดับสตริง (เลิกใช้งานแล้ว) หาก (เลิกใช้งานแล้ว) หาก Bazel ใช้เชลล์เดียวกันในการดำเนินการตามคำสั่งเช่นเดียวกับที่ใช้กับ genrule |
progress_message
|
string หรือ None ค่าเริ่มต้นคือ None ข้อความความคืบหน้าที่แสดงต่อผู้ใช้ในระหว่างบิลด์ เช่น "คอมไพล์ foo.cc เพื่อสร้าง foo.o" ข้อความอาจมีรูปแบบ %{label} , %{input} หรือ %{output} ซึ่งระบบจะแทนที่ด้วยสตริงป้ายกำกับ อินพุตแรก หรือเส้นทางเอาต์พุตตามลำดับ แนะนำให้ใช้รูปแบบแทนสตริงแบบคงที่ เนื่องจากรูปแบบมีประสิทธิภาพมากกว่า
|
use_default_shell_env
|
bool;
ค่าเริ่มต้นคือ False การดําเนินการควรใช้สภาพแวดล้อมเชลล์เริ่มต้นหรือไม่ ซึ่งประกอบด้วยตัวแปรที่ขึ้นอยู่กับระบบปฏิบัติการ 2-3 รายการ รวมถึงตัวแปรที่ตั้งค่าผ่าน --action_env หากทั้ง |
env
|
dict หรือ None
ค่าเริ่มต้นคือ None กําหนดพจนานุกรมของตัวแปรสภาพแวดล้อม หากทั้ง |
execution_requirements
|
dict หรือ None ค่าเริ่มต้นคือ None ข้อมูลสำหรับการกำหนดเวลาการดำเนินการ ดูแท็กสำหรับคีย์ที่มีประโยชน์ |
input_manifests
|
sequence หรือ None ค่าเริ่มต้นคือ None อาร์กิวเมนต์เดิม ยกเว้นแล้ว |
exec_group
|
สตริง หรือ None
ค่าเริ่มต้นคือ None ทําการบนแพลตฟอร์มการดําเนินการของกลุ่ม exec ที่ระบุ หากไม่มี จะใช้แพลตฟอร์มการเรียกใช้เริ่มต้นของเป้าหมาย |
shadowed_action
|
การดำเนินการ
ค่าเริ่มต้นคือ None เรียกใช้การดำเนินการโดยใช้อินพุตที่ค้นพบของการดำเนินการที่ถูกซ้อนที่กำหนดลงในรายการอินพุตของการดำเนินการ หากไม่มี ให้ใช้เฉพาะอินพุตของการดำเนินการ |
resource_set
|
callable หรือ None
ค่าเริ่มต้นคือ None ฟังก์ชัน Callback สำหรับการประมาณการใช้ทรัพยากรหากเรียกใช้ในพื้นที่ โปรดดู ctx.actions.run()
|
toolchain
|
ป้ายกำกับ หรือสตริง หรือ None ค่าเริ่มต้นคือ unbound ประเภท Toolchain ของไฟล์ปฏิบัติการหรือเครื่องมือที่ใช้ในการดำเนินการนี้ หากไฟล์ปฏิบัติการและเครื่องมือไม่ได้มาจากชุดเครื่องมือ ให้ตั้งค่าพารามิเตอร์นี้เป็น "ไม่มี" หากไฟล์ปฏิบัติการและเครื่องมือมาจากชุดเครื่องมือ คุณต้องตั้งค่าประเภทชุดเครื่องมือเพื่อให้การดำเนินการทำงานบนแพลตฟอร์มการดำเนินการที่ถูกต้อง โปรดทราบว่ากฎที่สร้างการดำเนินการนี้ต้องกำหนดเครื่องมือนี้ภายในฟังก์ชัน "rule()" เมื่อตั้งค่าทั้งพารามิเตอร์ `toolchain` และ `exec_group` ระบบจะใช้ `exec_group` ระบบจะแสดงข้อผิดพลาดในกรณีที่ `exec_group` ไม่ได้ระบุเครื่องมือชุดเดียวกัน |
ลิงก์สัญลักษณ์
None
actions.symlink(output, target_file=None, target_path=None, is_executable=False, progress_message=None)
ต้องเรียกใช้ฟังก์ชันนี้โดยระบุ target_file
หรือ target_path
อย่างใดอย่างหนึ่งเท่านั้น
เมื่อใช้ target_file
ให้ประกาศ output
ด้วย declare_file()
หรือ declare_directory()
และจับคู่กับประเภทของ target_file
ซึ่งจะทำให้ลิงก์สัญลักษณ์ชี้ไปที่ target_file
Bazel ยกเลิกเอาต์พุตของการกระทำนี้เมื่อเป้าหมายของลิงก์สัญลักษณ์หรือเนื้อหาของลิงก์มีการเปลี่ยนแปลง
หรือเมื่อใช้ target_path
ให้ประกาศ output
ด้วย declare_symlink()
) ในกรณีนี้ สัญลักษณ์ลิงก์จะชี้ไปยัง target_path
Bazel จะไม่แก้ไขลิงก์สัญลักษณ์ และเอาต์พุตของการดำเนินการนี้จะใช้งานไม่ได้ก็ต่อเมื่อเนื้อหาข้อความของลิงก์สัญลักษณ์ (นั่นคือค่าของ readlink()
) เปลี่ยนแปลงเท่านั้น โดยเฉพาะอย่างยิ่ง สามารถใช้คำสั่งนี้เพื่อสร้างลิงก์สัญลักษณ์ที่ไม่มีการอ้างอิง
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
output
|
ไฟล์
ต้องระบุ เอาต์พุตของการดำเนินการนี้ |
target_file
|
File หรือ None
ค่าเริ่มต้นคือ None คือไฟล์ที่ลิงก์สัญลักษณ์เอาต์พุตจะชี้ไป |
target_path
|
สตริง หรือ None
ค่าเริ่มต้นคือ None เส้นทางที่แน่นอนซึ่งลิงก์สัญลักษณ์เอาต์พุตจะชี้ไป โดยไม่มีการทำให้เป็นมาตรฐานหรือการประมวลผลอื่นๆ |
is_executable
|
bool;
ค่าเริ่มต้นคือ False ใช้ได้กับ target_file เท่านั้น ไม่ใช่ target_path หากเป็น "จริง" เมื่อดำเนินการ ระบบจะตรวจสอบเส้นทางของ target_file เพื่อยืนยันว่าสามารถเรียกใช้ได้ และจะรายงานข้อผิดพลาดหากเรียกใช้ไม่ได้ การตั้งค่า is_executable เป็น False ไม่ได้หมายความว่าเป้าหมายจะไม่สามารถเรียกใช้ได้ เพียงแต่ไม่มีการยืนยันเท่านั้นฟีเจอร์นี้ใช้กับ |
progress_message
|
สตริง หรือ None
ค่าเริ่มต้นคือ None ข้อความความคืบหน้าที่จะแสดงต่อผู้ใช้ระหว่างการสร้าง |
template_dict
TemplateDict actions.template_dict()
เขียน
None
actions.write(output, content, is_executable=False)
expand_template
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
output
|
ไฟล์
ต้องระบุ เป็นไฟล์เอาต์พุต |
content
|
string หรือ Args
ต้องระบุ เนื้อหาของไฟล์ อาจเป็นสตริงหรือออบเจ็กต์ actions.args()
|
is_executable
|
bool;
ค่าเริ่มต้นคือ False ระบุว่าไฟล์เอาต์พุตควรเป็นไฟล์ปฏิบัติการหรือไม่ |