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

รายงานปัญหา ดูแหล่งที่มา

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

สำหรับสมาชิก

args

Args actions.args()

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

declare_directory

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

ประกาศว่ากฎหรือองค์ประกอบสร้างไดเรกทอรีด้วยชื่อที่ระบุในแพ็กเกจปัจจุบัน คุณต้องสร้างการดำเนินการที่สร้างไดเรกทอรี เนื้อหาของไดเรกทอรีไม่สามารถเข้าถึงได้จาก Starlark โดยตรง แต่สามารถขยายได้ด้วยคำสั่งการดำเนินการด้วย Args.add_all() เฉพาะไฟล์และไดเรกทอรีทั่วไปเท่านั้นที่จะอยู่ในเนื้อหาแบบขยายของ publisher_directory ได้

พารามิเตอร์

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

declare_file

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

ประกาศว่ากฎหรือองค์ประกอบจะสร้างไฟล์ด้วยชื่อไฟล์ที่กำหนด หากไม่ได้ระบุ sibling ชื่อไฟล์จะสัมพันธ์กับไดเรกทอรีแพ็กเกจ มิฉะนั้นไฟล์จะอยู่ในไดเรกทอรีเดียวกับ sibling ไม่สามารถสร้างไฟล์นอกแพ็กเกจปัจจุบัน

โปรดทราบว่านอกเหนือจากการประกาศไฟล์แล้ว คุณต้องสร้างการดำเนินการที่ปล่อยไฟล์แยกต่างหากด้วย การสร้างการดำเนินการดังกล่าวจะต้องส่งออบเจ็กต์ File ที่แสดงผลไปยังฟังก์ชันการสร้างของการดำเนินการ

โปรดทราบว่าไฟล์เอาต์พุตที่ประกาศล่วงหน้าไม่จําเป็นต้องมีการประกาศโดยใช้ฟังก์ชันนี้ คุณสามารถรับออบเจ็กต์ File ของผู้ใช้ได้จาก ctx.outputs แทน ดูตัวอย่างการใช้

พารามิเตอร์

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

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

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

พารามิเตอร์

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

do_nothing

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

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

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
mnemonic ต้องระบุ
คําอธิบายการดำเนินการแบบ 1 คำ เช่น CppCompile หรือ GoLink
inputs ลำดับ ของไฟล์หรือ 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
การแทนที่ที่จะทำเมื่อขยายเทมเพลต

run

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 ลำดับ ของไฟล์ ต้องระบุ
รายการไฟล์เอาต์พุตของการดำเนินการ
inputs ลำดับ ของไฟล์หรือ depset ค่าเริ่มต้นคือ []
รายการหรือการแยกไฟล์อินพุตของการดำเนินการ
unused_inputs_list ไฟล์ หรือ None ค่าเริ่มต้นคือ None
ไฟล์ซึ่งมีรายการอินพุตที่การดำเนินการไม่ได้ใช้

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

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

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

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

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

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

toolchain ป้ายกำกับ หรือสตริง หรือ 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 ลำดับ ของไฟล์ ต้องระบุ
รายการไฟล์เอาต์พุตของการดำเนินการ
inputs ลำดับ ของไฟล์หรือ depset ค่าเริ่มต้นคือ []
รายการหรือการแยกไฟล์อินพุตของการดำเนินการ
tools ลำดับ ของไฟล์หรือ depset ค่าเริ่มต้นคือ unbound
แสดงรายการหรือลดระดับเครื่องมือที่จำเป็นสำหรับการดำเนินการ เครื่องมือเป็นอินพุตพร้อมไฟล์เรียกใช้เพิ่มเติมที่พร้อมใช้งานกับการดำเนินการโดยอัตโนมัติ รายการอาจมีอินสแตนซ์ Files หรือ FilesToRunProvider ก็ได้
arguments sequence ค่าเริ่มต้นคือ []
อาร์กิวเมนต์บรรทัดคำสั่งของการดำเนินการ ต้องเป็นรายการสตริงหรือออบเจ็กต์ actions.args()

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

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

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

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

ฟีเจอร์นี้ไม่เหมาะกับ target_path เนื่องจากอาจไม่มีลิงก์สัญลักษณ์ที่อันตรายขณะสร้าง

progress_message string หรือ 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
ระบุว่าไฟล์เอาต์พุตควรเป็นไฟล์ปฏิบัติการหรือไม่