การดำเนินการ

รายงานปัญหา ดูแหล่งที่มา ตอนกลางคืน · 7.3 · 7.2 · 7.1 · 7.0 · 6.5

โมดูลที่มีฟังก์ชันสำหรับสร้างการดำเนินการ เข้าถึงโมดูลนี้โดยใช้ ctx.actions

สมาชิก

args

Args actions.args()

แสดงผลออบเจ็กต์ Args ที่ใช้เพื่อสร้างบรรทัดคำสั่งที่ประหยัดหน่วยความจำได้

declare_directory

File actions.declare_directory(filename, *, sibling=None)

ประกาศว่ากฎหรือองค์ประกอบสร้างไดเรกทอรีด้วยชื่อที่ระบุในแพ็กเกจปัจจุบัน คุณต้องสร้างการดำเนินการที่สร้างไดเรกทอรี เนื้อหาของไดเรกทอรีจะเข้าถึงจาก Starlark โดยตรงไม่ได้ แต่สามารถขยายในคำสั่งการดำเนินการด้วย 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
ไฟล์ที่อยู่ในไดเรกทอรีเดียวกับไฟล์ที่สร้างใหม่ ไฟล์ต้องอยู่ในแพ็กเกจปัจจุบัน

File actions.declare_symlink(filename, *, sibling=None)

ประกาศว่ากฎหรือแง่มุมสร้างลิงก์สัญลักษณ์ที่มีชื่อที่ระบุในแพ็กเกจปัจจุบัน คุณต้องสร้างการดำเนินการที่สร้างลิงก์สัญลักษณ์นี้ Bazel จะไม่ยกเลิกการอ้างอิงลิงก์สัญลักษณ์นี้และจะโอนไปยังแซนด์บ็อกซ์หรือผู้ดำเนินการระยะไกลโดยถอดเสียง ระบบยังไม่รองรับ Symlink ภายในอาร์ติแฟกต์ต้นไม้ในขณะนี้

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
filename ต้องระบุ
หากไม่มี "พี่น้อง" ที่ระบุ เส้นทางของลิงก์สัญลักษณ์ใหม่ที่เกี่ยวข้องกับแพ็กเกจปัจจุบัน หรือจะเป็นชื่อฐานของไฟล์ก็ได้ ('sibling' จะกำหนดไดเรกทอรี)
sibling ไฟล์ หรือ None; ค่าเริ่มต้นคือ None
ไฟล์ที่อาศัยอยู่ในไดเรกทอรีเดียวกับลิงก์สัญลักษณ์ที่ประกาศใหม่

do_nothing

None actions.do_nothing(mnemonic, inputs=[])

สร้างการดำเนินการที่ว่างเปล่าซึ่งไม่เรียกใช้คำสั่งหรือสร้างเอาต์พุตใดๆ แต่มีประโยชน์สำหรับการแทรก "การดำเนินการเพิ่มเติม"

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
mnemonic ต้องระบุ
คำอธิบายการดำเนินการแบบ 1 คำ เช่น 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 ต้องระบุ
ซึ่งเป็นไฟล์เอาต์พุตที่เป็นไฟล์ข้อความที่เข้ารหัส UTF-8
substitutions ค่าเริ่มต้นคือ {}
การแทนที่ที่ต้องทำเมื่อขยายเทมเพลต
is_executable ค่าเริ่มต้นคือ 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 sequence ของไฟล์ จำเป็น
รายการไฟล์เอาต์พุตของการดำเนินการ
inputs sequence ของไฟล์ หรือ depset; ค่าเริ่มต้นคือ []
แสดงรายการหรือคืนค่าไฟล์อินพุตของการดำเนินการ
unused_inputs_list ไฟล์ หรือ None; ค่าเริ่มต้นคือ None
ไฟล์ที่มีรายการอินพุตที่การดำเนินการไม่ได้ใช้

เนื้อหาของไฟล์นี้ (โดยทั่วไปเป็นหนึ่งในเอาต์พุตของการดำเนินการ) สอดคล้องกับรายการไฟล์อินพุตที่ไม่ได้ใช้ระหว่างการดำเนินการทั้งหมด การเปลี่ยนแปลงในไฟล์เหล่านั้นต้องไม่ส่งผลต่อเอาต์พุตของการดำเนินการไม่ว่าในทางใดก็ตาม

executable ไฟล์ หรือ string หรือ FilesToRunProvider จำเป็น
ไฟล์ปฏิบัติการที่จะเรียกใช้โดยการดำเนินการ
tools sequence; หรือ depset ค่าเริ่มต้นคือ unbound
แสดงรายการหรือเลิกใช้เครื่องมือที่การดำเนินการนี้ต้องใช้ เครื่องมือเป็นอินพุตพร้อมไฟล์เรียกใช้เพิ่มเติมที่พร้อมใช้งานกับการดำเนินการโดยอัตโนมัติ เมื่อมีการระบุรายการ อาจมีคอลเล็กชันที่หลากหลายของอินสแตนซ์ Files, FilesToRunProvider หรือ Depset ของ Files ระบบจะเพิ่มไฟล์รันไทม์ของไฟล์ที่อยู่ในรายการโดยตรงและมาจาก ctx.executable โดยอัตโนมัติ เมื่อระบุ Depset แล้ว ไฟล์ดังกล่าวต้องมีเฉพาะ Files เท่านั้น ในทั้ง 2 กรณี ไฟล์ที่อยู่ใน Depset จะไม่ได้รับการเปรียบเทียบกับ ctx.executable สำหรับ Runfiles
arguments sequence; ค่าเริ่มต้นคือ []
อาร์กิวเมนต์บรรทัดคำสั่งของการดำเนินการ ต้องเป็นรายการสตริงหรือออบเจ็กต์ actions.args()
mnemonic สตริง หรือ None ค่าเริ่มต้นคือ None
คำอธิบายการดำเนินการแบบ 1 คำ เช่น CppCompile หรือ GoLink
progress_message string; หรือ None; ค่าเริ่มต้นคือ None
ข้อความความคืบหน้าที่จะแสดงต่อผู้ใช้ในระหว่างบิลด์ เช่น "คอมไพล์ foo.cc เพื่อสร้าง foo.o" ข้อความอาจมีรูปแบบ %{label}, %{input} หรือ %{output} ซึ่งแทนที่ด้วยสตริงป้ายกำกับ อินพุตแรก หรือเส้นทางของเอาต์พุตตามลำดับ แนะนำให้ใช้รูปแบบแทนสตริงแบบคงที่ เนื่องจากรูปแบบมีประสิทธิภาพมากกว่า
use_default_shell_env ค่าเริ่มต้นคือ False
การดำเนินการควรใช้สภาพแวดล้อมเชลล์เริ่มต้นหรือไม่ ซึ่งประกอบด้วยตัวแปรที่ขึ้นอยู่กับระบบปฏิบัติการ 2-3 รายการ รวมถึงตัวแปรที่ตั้งค่าผ่าน --action_env

หากตั้งค่า use_default_shell_env และ env เป็น True ค่าที่ตั้งไว้ใน env จะเขียนทับสภาพแวดล้อมของ Shell เริ่มต้นหากเปิดใช้ --incompatible_merge_fixed_and_default_shell_env (ค่าเริ่มต้น) หากไม่ได้เปิดใช้ธง ระบบจะไม่สนใจ env

env dict หรือ None ค่าเริ่มต้นคือ None
กําหนดพจนานุกรมของตัวแปรสภาพแวดล้อม

หากทั้ง use_default_shell_env และ env ตั้งค่าเป็น True ค่าที่ตั้งไว้ใน env จะเขียนทับสภาพแวดล้อมเชลล์เริ่มต้นหากเปิดใช้ --incompatible_merge_fixed_and_default_shell_env (ค่าเริ่มต้น) หากไม่ได้เปิดใช้ Flag ระบบจะไม่สนใจ env

execution_requirements dict หรือ None ค่าเริ่มต้นคือ None
ข้อมูลสำหรับการกำหนดเวลาการดำเนินการ ดูคีย์ที่มีประโยชน์ในแท็ก
input_manifests sequence; หรือ None; ค่าเริ่มต้นคือ None
(ทดลอง) ตั้งค่าข้อมูลเมตาของไฟล์อินพุตสำหรับการเรียกใช้ ซึ่งมักสร้างขึ้นโดยresolve_command
exec_group สตริง หรือ None ค่าเริ่มต้นคือ None
ทําการบนแพลตฟอร์มการดําเนินการของกลุ่ม exec ที่ระบุ หากไม่มี จะใช้แพลตฟอร์มการเรียกใช้เริ่มต้นของเป้าหมาย
shadowed_action การดำเนินการ ค่าเริ่มต้นคือ None
เรียกใช้การดำเนินการโดยใช้อินพุตและสภาพแวดล้อมของการดำเนินการที่ถูกซ้อนที่ระบุที่เพิ่มลงในรายการอินพุตและสภาพแวดล้อมของการดำเนินการ สภาพแวดล้อมการดำเนินการสามารถเขียนทับตัวแปรสภาพแวดล้อมของการดำเนินการที่ถูกซ้อนได้ หากไม่มี ให้ใช้เฉพาะอินพุตของการดำเนินการและสภาพแวดล้อมที่ระบุ
resource_set callable หรือ None; ค่าเริ่มต้นคือ None
เป็นฟังก์ชัน Callback ที่แสดงผลพจนานุกรมชุดทรัพยากร ซึ่งใช้ในการประมาณการใช้ทรัพยากร ณ เวลาดำเนินการหากการดําเนินการนี้ทํางานในเครื่อง

ฟังก์ชันนี้ยอมรับอาร์กิวเมนต์ตำแหน่ง 2 รายการ ได้แก่ สตริงที่มีชื่อระบบปฏิบัติการ (เช่น "osx") และจำนวนเต็มที่แสดงถึงจำนวนอินพุตของการทำงาน พจนานุกรมที่แสดงผลอาจมีรายการต่อไปนี้ ซึ่งแต่ละรายการอาจเป็น float หรือ int

  • "cpu": จำนวน CPU ค่าเริ่มต้น 1
  • "memory": เป็น MB โดยค่าเริ่มต้นคือ 250
  • "local_test": จํานวนการทดสอบในเครื่อง เริ่มต้นที่ 1

หากตั้งค่าพารามิเตอร์นี้เป็น None หรือ --experimental_action_resource_set เป็นเท็จ ระบบจะใช้ค่าเริ่มต้น

ฟังก์ชัน Callback ต้องเป็นระดับบนสุด (ไม่อนุญาตให้ใช้ฟังก์ชัน LAMBDA และฟังก์ชันที่ฝัง)

toolchain Label หรือ string หรือ None ค่าเริ่มต้นคือ unbound

ประเภท Toolchain ของไฟล์ปฏิบัติการหรือเครื่องมือที่ใช้ในการดำเนินการนี้ ต้องตั้งค่าพารามิเตอร์ เพื่อให้การดำเนินการนั้นดำเนินการบนแพลตฟอร์มการดำเนินการที่ถูกต้อง

ปัจจุบันค่านี้ไม่มีผล แต่เราขอแนะนำให้ตั้งค่าเมื่อใช้ชุดเครื่องมือ เนื่องจากจะต้องใช้ค่านี้ในรุ่น Bazel ในอนาคต

โปรดทราบว่ากฎที่สร้างการดำเนินการนี้จะต้องกำหนด Toolchain นี้ภายใน "rule()" ด้วย

เมื่อตั้งค่าทั้งพารามิเตอร์ `toolchain` และ `exec_group` ระบบจะใช้ `exec_group` ข้อผิดพลาดจะปรากฏขึ้นในกรณีที่ "exec_group" ไม่ได้ระบุค่าเดียวกัน

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)

สร้างการดำเนินการที่เรียกใช้คำสั่ง Shell ดูตัวอย่างการใช้งาน

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
outputs sequence ของไฟล์ จำเป็น
รายการไฟล์เอาต์พุตของการดำเนินการ
inputs ลําดับของไฟล์หรือ depset ค่าเริ่มต้นคือ []
ลิสต์หรือ depset ของไฟล์อินพุตของการดำเนินการ
tools sequence ของไฟล์ หรือ depset; ค่าเริ่มต้นคือ unbound
แสดงรายการหรือเลิกใช้เครื่องมือที่การดำเนินการนี้ต้องใช้ เครื่องมือคืออินพุตที่มีไฟล์เรียกใช้เพิ่มเติมซึ่งพร้อมใช้งานสําหรับการดำเนินการโดยอัตโนมัติ รายการอาจมีอินสแตนซ์ Files หรือ FilesToRunProvider ก็ได้
arguments sequence; ค่าเริ่มต้นคือ []
อาร์กิวเมนต์บรรทัดคำสั่งของการดำเนินการ ต้องเป็นรายการสตริงหรือออบเจ็กต์ actions.args()

Bazel จะส่งองค์ประกอบในแอตทริบิวต์นี้เป็นอาร์กิวเมนต์ไปยังคําสั่ง คําสั่งจะเข้าถึงอาร์กิวเมนต์เหล่านี้ได้โดยใช้การแทนที่ตัวแปรเชลล์ เช่น $1, $2 ฯลฯ โปรดทราบว่าเนื่องจากออบเจ็กต์ Args จะถูกผสานก่อนการจัดทำดัชนี หากมีออบเจ็กต์ Args ที่มีขนาดที่ไม่รู้จัก สตริงต่อๆ ไปทั้งหมดจะอยู่ในช่วงที่ไม่คาดคิด การใช้ $@ (เพื่อเรียกอาร์กิวเมนต์ทั้งหมด) ร่วมกับออบเจ็กต์ Args ที่มีขนาดไม่แน่นอนอาจเป็นประโยชน์

ในกรณีที่ command เป็นรายการสตริง ระบบอาจไม่ใช้พารามิเตอร์นี้

mnemonic สตริง หรือ None ค่าเริ่มต้นคือ None
คำอธิบายการดำเนินการแบบ 1 คำ เช่น CppCompile หรือ GoLink
command string; หรือลำดับของสตริง จำเป็น
คำสั่ง Shell ที่จะดำเนินการ ซึ่งอาจเป็นสตริง (แนะนำ) หรือลำดับสตริง (เลิกใช้งานแล้ว)

หาก command เป็นสตริง ระบบจะดำเนินการกับ command ราวกับว่าใช้ sh -c <command> "" <arguments> กล่าวคือ ระบบจะทําให้องค์ประกอบใน arguments พร้อมใช้งานสําหรับคําสั่งเป็น $1, $2 (หรือ %1, %2 หากใช้แบทช์ของ Windows) เป็นต้น หาก arguments มีออบเจ็กต์ actions.args() ระบบจะใส่เนื้อหาของออบเจ็กต์ต่อท้ายบรรทัดคำสั่งทีละรายการ เพื่อให้ $i อ้างอิงสตริงแต่ละรายการภายในออบเจ็กต์ Args ได้ โปรดทราบว่าหากส่งออบเจ็กต์ Args ที่มีขนาดที่ไม่รู้จักเป็นส่วนหนึ่งของ arguments สตริงจะอยู่ในดัชนีที่ไม่รู้จัก ในกรณีนี้ การแทนที่เชลล์ $@ (เรียกอาร์กิวเมนต์ทั้งหมด) อาจเป็นประโยชน์

(เลิกใช้งานแล้ว) หาก command เป็นสตริงตามลําดับ รายการแรกจะเป็นไฟล์ที่เรียกใช้ได้ และรายการที่เหลือจะเป็นอาร์กิวเมนต์ของไฟล์ หากใช้แบบฟอร์มนี้ ต้องระบุพารามิเตอร์ arguments โปรดทราบว่าเราจะเลิกใช้งานแบบฟอร์มนี้และจะนำออกในเร็วๆ นี้ ซึ่งปิดใช้ด้วย "--incompatible_run_shell_command_string" ใช้แฟล็กนี้เพื่อยืนยันว่าโค้ดใช้งานร่วมกันได้

Bazel ใช้เชลล์เดียวกันในการดำเนินการตามคำสั่งเช่นเดียวกับที่ใช้กับ genrule

progress_message สตริง หรือ None ค่าเริ่มต้นคือ None
ข้อความความคืบหน้าที่จะแสดงต่อผู้ใช้ระหว่างการสร้าง เช่น "กำลังคอมไพล์ foo.cc เพื่อสร้าง foo.o" ข้อความอาจมีรูปแบบ %{label}, %{input} หรือ %{output} ซึ่งระบบจะแทนที่ด้วยสตริงป้ายกำกับ อินพุตแรก หรือเส้นทางเอาต์พุตตามลำดับ ต้องการใช้รูปแบบแทนสตริงคงที่ เนื่องจากรูปแบบแรกมีประสิทธิภาพมากกว่า
use_default_shell_env ค่าเริ่มต้นคือ False
การดำเนินการควรใช้สภาพแวดล้อม Shell เริ่มต้นซึ่งประกอบด้วยตัวแปรขึ้นอยู่กับระบบปฏิบัติการไม่กี่รายการและตัวแปรที่ตั้งค่าผ่าน --action_env หรือไม่

หากตั้งค่า use_default_shell_env และ env เป็น True ค่าที่ตั้งไว้ใน env จะเขียนทับสภาพแวดล้อมของ Shell เริ่มต้นหากเปิดใช้ --incompatible_merge_fixed_and_default_shell_env (ค่าเริ่มต้น) หากไม่ได้เปิดใช้ Flag ระบบจะไม่สนใจ env

env dict; หรือ None; ค่าเริ่มต้นคือ None
ตั้งค่าพจนานุกรมของตัวแปรสภาพแวดล้อม

หากตั้งค่า use_default_shell_env และ env เป็น True ค่าที่ตั้งไว้ใน env จะเขียนทับสภาพแวดล้อมของ Shell เริ่มต้นหากเปิดใช้ --incompatible_merge_fixed_and_default_shell_env (ค่าเริ่มต้น) หากไม่ได้เปิดใช้ Flag ระบบจะไม่สนใจ env

execution_requirements dict หรือ None ค่าเริ่มต้นคือ None
ข้อมูลสำหรับการกำหนดเวลาการดำเนินการ ดูแท็กสำหรับคีย์ที่มีประโยชน์
input_manifests sequence หรือ None ค่าเริ่มต้นคือ None
(ทดลอง) ตั้งค่าข้อมูลเมตาของไฟล์รันไทม์อินพุต ซึ่งโดยปกติแล้วระบบจะสร้างจาก resolve_command
exec_group string; หรือ None; ค่าเริ่มต้นคือ None
เรียกใช้การดำเนินการบนแพลตฟอร์มการดำเนินการของกลุ่มผู้บริหารที่ระบุ หากไม่มี จะใช้แพลตฟอร์มการเรียกใช้เริ่มต้นของเป้าหมาย
shadowed_action การดำเนินการ ค่าเริ่มต้นคือ None
เรียกใช้การทำงานโดยใช้อินพุตที่ค้นพบของการดำเนินการที่ถูกซ้อนที่กำหนดลงในรายการอินพุตของการดำเนินการ หากไม่มี ให้ใช้เฉพาะอินพุตของการดำเนินการ
resource_set callable หรือ None ค่าเริ่มต้นคือ None
ฟังก์ชัน Callback สำหรับการประมาณการใช้ทรัพยากรหากเรียกใช้ในพื้นที่ โปรดดูctx.actions.run()
toolchain Label หรือ string หรือ None ค่าเริ่มต้นคือ unbound

ประเภท Toolchain ของไฟล์ปฏิบัติการหรือเครื่องมือที่ใช้ในการดำเนินการนี้ ต้องตั้งค่าพารามิเตอร์ เพื่อให้การดำเนินการนั้นดำเนินการบนแพลตฟอร์มการดำเนินการที่ถูกต้อง

ปัจจุบันค่านี้ไม่มีผล แต่เราขอแนะนำให้ตั้งค่าเมื่อใช้ชุดเครื่องมือ เนื่องจากจะต้องใช้ค่านี้ในรุ่น Bazel ในอนาคต

โปรดทราบว่ากฎที่สร้างการดำเนินการนี้จะต้องกำหนด Toolchain นี้ภายใน "rule()" ด้วย

เมื่อตั้งค่าทั้งพารามิเตอร์ `toolchain` และ `exec_group` ระบบจะใช้ `exec_group` ข้อผิดพลาดจะปรากฏขึ้นในกรณีที่ "exec_group" ไม่ได้ระบุค่าเดียวกัน Toolchain

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 string; หรือ None; ค่าเริ่มต้นคือ None
เส้นทางที่แน่นอนซึ่งลิงก์สัญลักษณ์เอาต์พุตจะชี้ไป โดยจะไม่มีการปรับให้เป็นมาตรฐานหรือการประมวลผลอื่นๆ
is_executable ค่าเริ่มต้นคือ False
ใช้ได้กับ target_file เท่านั้น ใช้กับ target_path ไม่ได้ หากเป็น "จริง" เมื่อดำเนินการ ระบบจะตรวจสอบเส้นทางของ target_file เพื่อยืนยันว่าสามารถเรียกใช้ได้ และจะรายงานข้อผิดพลาดหากเรียกใช้ไม่ได้ การตั้งค่า is_executable เป็น False ไม่ได้หมายความว่าเป้าหมายจะไม่สามารถเรียกใช้ได้ เพียงแต่ไม่มีการยืนยันเท่านั้น

ฟีเจอร์นี้ใช้กับ target_path ไม่ได้เนื่องจากอาจไม่มีลิงก์สัญลักษณ์ที่รอดำเนินการอยู่ ณ เวลาที่สร้าง

progress_message สตริง หรือ None ค่าเริ่มต้นคือ None
ข้อความความคืบหน้าที่จะแสดงต่อผู้ใช้ระหว่างการสร้าง

template_dict

TemplateDict actions.template_dict()

แสดงผลออบเจ็กต์ TemplateDict สำหรับการขยายเทมเพลตที่ประหยัดหน่วยความจำ

เขียน

None actions.write(output, content, is_executable=False)

สร้างการดำเนินการเขียนไฟล์ เมื่อทำงานดังกล่าว การดำเนินการจะเขียนเนื้อหาลงในไฟล์ ซึ่งจะใช้ในการสร้างไฟล์โดยใช้ข้อมูลที่มีอยู่ในขั้นตอนการวิเคราะห์ หากไฟล์มีขนาดใหญ่และมีเนื้อหาคงที่จำนวนมาก ให้ลองใช้ expand_template

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
output ต้องระบุ
ไฟล์เอาต์พุต
content string; หรือ Args จำเป็น
เนื้อหาในไฟล์ อาจเป็นสตริงหรือออบเจ็กต์ actions.args() ก็ได้
is_executable ค่าเริ่มต้นคือ False
ไฟล์เอาต์พุตควรเป็นไฟล์ปฏิบัติการหรือไม่