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

รายงานปัญหา ดูแหล่งที่มา Nightly · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

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

สมาชิก

args

Args actions.args()

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

declare_directory

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

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

พารามิเตอร์

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

declare_file

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

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

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

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

พารามิเตอร์

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

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

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

พารามิเตอร์

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

do_nothing

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

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

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
mnemonic string; required
คำอธิบายการดำเนินการ 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 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 ลำดับของไฟล์ ต้องระบุ
รายการไฟล์เอาต์พุตของการดำเนินการ
inputs ลำดับของไฟล์ หรือ depset ค่าเริ่มต้นคือ []
รายการหรือ depset ของไฟล์อินพุตของการดำเนินการ
unused_inputs_list File; or None; default is None
File containing list of inputs unused by the action.

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

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

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

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

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

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

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

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

toolchain ป้ายกำกับ หรือสตริง หรือNone ค่าเริ่มต้นคือ unbound

ประเภท Toolchain ของไฟล์ที่เรียกใช้งานได้หรือเครื่องมือที่ใช้ในการดำเนินการนี้

หากไฟล์ที่เรียกใช้งานได้และเครื่องมือไม่ได้มาจาก Toolchain ให้ตั้งค่าพารามิเตอร์นี้เป็น `None`

หากไฟล์ที่เรียกใช้งานได้และเครื่องมือมาจาก Toolchain คุณต้องตั้งค่าประเภท 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)

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

พารามิเตอร์

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

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

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

mnemonic สตริง หรือ None; ค่าเริ่มต้นคือ None
คำอธิบายการดำเนินการแบบคำเดียว เช่น CppCompile หรือ GoLink
command สตริง หรือลำดับของสตริง ต้องระบุ
คำสั่ง 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 bool; ค่าเริ่มต้นคือ False
ไม่ว่าการดำเนินการควรใช้สภาพแวดล้อมเชลล์เริ่มต้นหรือไม่ ซึ่งประกอบด้วยตัวแปรที่ขึ้นอยู่กับระบบปฏิบัติการ 2-3 ตัว รวมถึงตัวแปรที่ตั้งค่าผ่าน --action_env

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

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

ประเภท Toolchain ของไฟล์ที่เรียกใช้งานได้หรือเครื่องมือที่ใช้ในการดำเนินการนี้

หากไฟล์ที่เรียกใช้งานได้และเครื่องมือไม่ได้มาจาก Toolchain ให้ตั้งค่าพารามิเตอร์นี้เป็น `None`

หากไฟล์ที่เรียกใช้งานได้และเครื่องมือมาจาก Toolchain คุณต้องตั้งค่าประเภท 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 จะลบล้างเอาต์พุตของการดำเนินการนี้เมื่อใดก็ตามที่เป้าหมายของ Symlink หรือเนื้อหาของ Symlink เปลี่ยนแปลง

มิเช่นนั้น เมื่อใช้ target_path ให้ประกาศ output ด้วย declare_symlink()) ในกรณีนี้ Symlink จะชี้ไปยัง target_path Bazel จะไม่แก้ไข Symlink และเอาต์พุตของการดำเนินการนี้จะใช้ไม่ได้ก็ต่อเมื่อเนื้อหาข้อความของ Symlink (นั่นคือค่าของ readlink()) เปลี่ยนแปลง โดยเฉพาะอย่างยิ่ง คุณสามารถใช้คำสั่งนี้เพื่อสร้างซิมลิงก์ที่ไม่มีอยู่จริง

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
output ไฟล์ ต้องระบุ
เอาต์พุตของการดำเนินการนี้
target_file ไฟล์ หรือ None ค่าเริ่มต้นคือ None
ไฟล์ที่ซิมลิงก์เอาต์พุตจะชี้ไป
target_path สตริง หรือ None ค่าเริ่มต้นคือ None
เส้นทางที่แน่นอนที่ซิมลิงก์เอาต์พุตจะชี้ไป ระบบจะไม่ใช้การปรับให้เป็นมาตรฐานหรือการประมวลผลอื่นๆ
is_executable bool; ค่าเริ่มต้นคือ False
ใช้ได้กับ target_file เท่านั้น ไม่ใช่ target_path หากเป็นจริง เมื่อดำเนินการ ระบบจะตรวจสอบเส้นทางของ target_file เพื่อยืนยันว่าสามารถดำเนินการได้ และจะรายงานข้อผิดพลาดหากดำเนินการไม่ได้ การตั้งค่า is_executable เป็น False ไม่ได้หมายความว่าเป้าหมายไม่สามารถเรียกใช้งานได้ เพียงแต่ไม่มีการยืนยัน

ฟีเจอร์นี้ไม่เหมาะสำหรับ 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 required
เนื้อหาของไฟล์ อาจเป็นสตริงหรือออบเจ็กต์ actions.args()
is_executable bool; ค่าเริ่มต้นคือ False
ระบุว่าไฟล์เอาต์พุตควรเป็นไฟล์ปฏิบัติการหรือไม่