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

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

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

สมาชิก

อาร์กิวเมนต์

Args actions.args()

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

declare_directory

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

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

พารามิเตอร์

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

declare_file

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

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

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

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

พารามิเตอร์

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

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

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

พารามิเตอร์

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

do_nothing

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

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

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
mnemonic ต้องระบุ
คำอธิบายการดำเนินการแบบ 1 คำ เช่น CppCompile หรือ GoLink
inputs sequence ของไฟล์ หรือ 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 โดยตรงจะได้รับการเพิ่ม Runfile โดยอัตโนมัติ เมื่อระบุ Depset แล้ว ไฟล์ดังกล่าวต้องมีเฉพาะ Files เท่านั้น ในทั้ง 2 กรณี ไฟล์ที่อยู่ใน Depset จะไม่ได้รับการเปรียบเทียบกับ ctx.executable สำหรับ Runfiles
arguments sequence; ค่าเริ่มต้นคือ []
อาร์กิวเมนต์บรรทัดคำสั่งของการดำเนินการ ต้องเป็นรายการสตริงหรือออบเจ็กต์ actions.args()
mnemonic string; หรือ None; ค่าเริ่มต้นคือ None
คำอธิบายการดำเนินการแบบ 1 คำ เช่น CppCompile หรือ GoLink
progress_message string; หรือ 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 (ค่าเริ่มต้น) หากไม่ได้เปิดใช้ธง ระบบจะไม่สนใจ 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 ป้ายกำกับ หรือ 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 sequence ของไฟล์ หรือ depset; ค่าเริ่มต้นคือ []
แสดงรายการหรือคืนค่าไฟล์อินพุตของการดำเนินการ
tools sequence ของไฟล์ หรือ depset; ค่าเริ่มต้นคือ unbound
แสดงรายการหรือเลิกใช้เครื่องมือที่การดำเนินการนี้ต้องใช้ เครื่องมือเป็นอินพุตพร้อมไฟล์เรียกใช้เพิ่มเติมที่พร้อมใช้งานกับการดำเนินการโดยอัตโนมัติ รายการอาจมีอินสแตนซ์ Files หรือ FilesToRunProvider ก็ได้
arguments sequence; ค่าเริ่มต้นคือ []
อาร์กิวเมนต์บรรทัดคำสั่งของการดำเนินการ ต้องเป็นรายการสตริงหรือออบเจ็กต์ actions.args()

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

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

mnemonic string; หรือ None; ค่าเริ่มต้นคือ None
คำอธิบายการดำเนินการแบบ 1 คำ เช่น 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 เริ่มต้นซึ่งประกอบด้วยตัวแปรขึ้นอยู่กับระบบปฏิบัติการไม่กี่รายการและตัวแปรที่ตั้งค่าผ่าน --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 ป้ายกำกับ หรือ 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 ไฟล์ หรือ 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
ไฟล์เอาต์พุตควรเป็นไฟล์ปฏิบัติการหรือไม่