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

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

declare_file

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

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

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

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

พารามิเตอร์

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

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

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

พารามิเตอร์

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

do_nothing

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

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

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
mnemonic string; required
คำอธิบายการดำเนินการ 1 คำ เช่น CppCompile หรือ GoLink
inputs sequence ของ 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 dict ค่าเริ่มต้นคือ {}
การแทนที่ที่จะทำเมื่อขยายเทมเพลต
is_executable bool; ค่าเริ่มต้นคือ False
ระบุว่าควรให้ไฟล์เอาต์พุตเป็นไฟล์ที่เรียกใช้งานได้หรือไม่
computed_substitutions TemplateDict; ค่าเริ่มต้นคือ unbound
การแทนที่ที่จะทำเมื่อขยายเทมเพลต

map_directory

None actions.map_directory(*, input_directories, additional_inputs={}, output_directories, tools, additional_params={}, execution_requirements=None, exec_group=None, toolchain=None, use_default_shell_env=False, env=None, mnemonic=None, implementation)

สร้างการดำเนินการหลายอย่างตามไฟล์ในไดเรกทอรีอินพุตอย่างน้อย 1 รายการ เพื่อส่งออกไดเรกทอรีเอาต์พุตอย่างน้อย 1 รายการ

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
input_directories dict ของ Files; required
พจนานุกรมที่แมปสตริงกับไดเรกทอรีอินพุตตามที่ประกาศโดย ctx.actions.declare_directory() (อนุญาตให้ใช้เฉพาะไดเรกทอรีเป็นค่าที่นี่) ค่าจะระบุไดเรกทอรีที่เราต้องการขยายเพื่อเข้าถึงไฟล์ในฟังก์ชันการติดตั้งใช้งาน คีย์ (สตริง) ทำหน้าที่เป็นตัวระบุเพื่อให้ง่ายต่อการอ้างอิงไดเรกทอรีที่เฉพาะเจาะจงในฟังก์ชันการใช้งาน
additional_inputs dict; ค่าเริ่มต้นคือ {}
พจนานุกรมของการแมปสตริงกับอินพุตเพิ่มเติม (อนุญาตเฉพาะไฟล์, FilesToRunProvider(s) และ Depset(s) ที่นี่) ค่าจะระบุอินพุตเพิ่มเติมที่เราต้องการให้การดำเนินการที่สร้างขึ้นโดยฟังก์ชันการติดตั้งใช้งานเข้าถึงได้ คีย์ (สตริง) ทำหน้าที่เป็นตัวระบุเพื่อให้ง่ายต่อการอ้างอิงอินพุตที่เฉพาะเจาะจงจากภายในฟังก์ชันการติดตั้งใช้งาน
output_directories dict ของ Files; required
พจนานุกรมที่แมปสตริงกับไดเรกทอรีเอาต์พุตตามที่ประกาศโดย ctx.actions.declare_directory() ค่าจะระบุไดเรกทอรีเอาต์พุตที่เราต้องการสร้างโดยการดำเนินการที่สร้างขึ้นจากฟังก์ชันการติดตั้งใช้งาน คีย์ (สตริง) ทำหน้าที่เป็นตัวระบุเพื่อให้ง่ายต่อการอ้างอิงไดเรกทอรีเอาต์พุตที่เฉพาะเจาะจงจากภายในฟังก์ชันการใช้งาน
tools dict; required
พจนานุกรมที่แมปสตริงกับเครื่องมือ (อนุญาตเฉพาะไฟล์, FilesToRunProvider(s) และ Depset(s) ที่นี่) ค่าจะระบุเครื่องมือที่เราต้องการให้เข้าถึงได้สำหรับการดำเนินการที่สร้างขึ้นโดยฟังก์ชันการติดตั้งใช้งาน คีย์ (สตริง) ทำหน้าที่เป็นตัวระบุเพื่อให้ง่ายต่อการอ้างอิงเครื่องมือที่เฉพาะเจาะจงจากภายในฟังก์ชันการติดตั้งใช้งาน
additional_params dict; ค่าเริ่มต้นคือ {}
การแมปพจนานุกรมของสตริงกับพารามิเตอร์เพิ่มเติม ค่าจะระบุพารามิเตอร์เพิ่มเติมที่เราต้องการให้ฟังก์ชันการติดตั้งใช้งานเข้าถึงได้ ซึ่งอาจใช้เพื่อมีอิทธิพลต่อลักษณะการทำงานของฟังก์ชัน คีย์ (สตริง) ทำหน้าที่เป็นตัวระบุเพื่อให้ง่ายต่อการอ้างอิงพารามิเตอร์ที่เฉพาะเจาะจงจากภายในฟังก์ชันการติดตั้งใช้งาน
execution_requirements dict หรือ None; ค่าเริ่มต้นคือ None
ข้อมูลสำหรับการกำหนดเวลาการดำเนินการที่สร้างขึ้น ดูคีย์ที่มีประโยชน์ได้ในแท็ก
exec_group string หรือ None ค่าเริ่มต้นคือ None
เรียกใช้การดำเนินการที่สร้างขึ้นในแพลตฟอร์มการดำเนินการของกลุ่มการดำเนินการที่ระบุ หากไม่มี ให้ใช้แพลตฟอร์มการดำเนินการเริ่มต้นของเป้าหมาย
toolchain ป้ายกำกับ หรือสตริง หรือNone ค่าเริ่มต้นคือ None

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

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

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

โปรดทราบว่ากฎที่สร้างการดำเนินการเหล่านี้ต้องกำหนดเครื่องมือนี้ภายในฟังก์ชัน "rule()"

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

use_default_shell_env bool; ค่าเริ่มต้นคือ False
ไม่ว่าการดำเนินการที่สร้างขึ้นควรใช้สภาพแวดล้อมเชลล์เริ่มต้นหรือไม่ ซึ่งประกอบด้วยตัวแปรที่ขึ้นอยู่กับระบบปฏิบัติการ 2-3 ตัว รวมถึงตัวแปรที่ตั้งค่าผ่าน --action_env

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

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

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

mnemonic สตริง หรือ None; ค่าเริ่มต้นคือ None
คำอธิบายแบบคำเดียวของการดำเนินการที่สร้างขึ้น เช่น CppCompile หรือ GoLink
implementation ฟังก์ชัน ต้องระบุ
ฟังก์ชัน Starlark ที่จะเรียกใช้หลังจากสร้างไดเรกทอรีอินพุตเพื่อสร้างการดำเนินการ ที่ส่งออกไฟล์ไปยังไดเรกทอรีเอาต์พุตที่ระบุ ฟังก์ชันนี้จะส่งอาร์กิวเมนต์ต่อไปนี้
  • template_ctx (เชิงตำแหน่ง): ออบเจ็กต์ template_ctx ที่ใช้สร้างการดำเนินการได้
  • input_directories (คีย์เวิร์ดเท่านั้น): พจนานุกรมที่แมปจากคีย์สตริงของอาร์กิวเมนต์ input_directories ของ actions.map_directory() ไปยังออบเจ็กต์ ExpandedDirectory ที่สอดคล้องกันของค่าเหล่านั้น
  • output_directories (คีย์เวิร์ดเท่านั้น): ค่าของอาร์กิวเมนต์ output_directories ของ actions.map_directory(); พจนานุกรม ที่แมปจากสตริงไปยังไดเรกทอรีเอาต์พุต
  • additional_inputs (คีย์เวิร์ดเท่านั้น): ค่าของอาร์กิวเมนต์ additional_inputs ของ actions.map_directory(); การแมปพจนานุกรมจากสตริงไปยังไฟล์อินพุต
  • tools (คีย์เวิร์ดเท่านั้น): ค่าของอาร์กิวเมนต์ tools ของ actions.map_directory(); พจนานุกรมที่แมปจากสตริงไปยังเครื่องมือ
  • additional_params (คีย์เวิร์ดเท่านั้น): ค่าของอาร์กิวเมนต์ additional_params ของ actions.map_directory(); พจนานุกรมที่แมปจากสตริงไปยังสตริง บูลีน หรือจำนวนเต็ม
ฟังก์ชันนี้ต้องเป็นฟังก์ชันระดับบนสุด ซึ่งหมายความว่าไม่อนุญาตให้ใช้ Lambda และฟังก์ชันที่ซ้อนกัน

โฮมรัน

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

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

executable File หรือ string หรือ FilesToRunProvider ต้องระบุ
ไฟล์ที่เรียกใช้งานได้ซึ่งการดำเนินการจะเรียกใช้
tools sequence หรือ depset ค่าเริ่มต้นคือ unbound
รายการหรือ depset ของเครื่องมือที่การดำเนินการต้องการ เครื่องมือคืออินพุตที่เรียกใช้งานได้ซึ่งอาจมีไฟล์ที่เรียกใช้ของตัวเองซึ่งจะพร้อมใช้งานสำหรับการดำเนินการโดยอัตโนมัติ

เมื่อมีการระบุรายการ รายการนั้นอาจเป็นคอลเล็กชันแบบผสมของรายการต่อไปนี้

  • File วินาที
  • อินสแตนซ์ FilesToRunProvider รายการ
  • depset ของ File
Fileจาก ctx.executable และ FilesToRunProvider ที่อยู่ในรายการโดยตรงจะได้รับการเพิ่มไฟล์ที่เรียกใช้โดยอัตโนมัติ ระบบจะเพิ่มเครื่องมือทั้งหมดเป็นอินพุตโดยนัย

arguments ลำดับ ค่าเริ่มต้นคือ []
อาร์กิวเมนต์บรรทัดคำสั่งของการดำเนินการ ต้องเป็นรายการสตริงหรือออบเจ็กต์ actions.args()
mnemonic สตริง หรือ None ค่าเริ่มต้นคือ None
คำอธิบายการดำเนินการแบบคำเดียว เช่น CppCompile หรือ GoLink
progress_message สตริง หรือ 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 จะเขียนทับสภาพแวดล้อมเชลล์เริ่มต้น

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

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

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

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

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

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

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

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

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

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

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

โปรดทราบว่ากฎที่สร้างการดำเนินการนี้ต้องกำหนดเครื่องมือนี้ภายในฟังก์ชัน "rule()"

เมื่อตั้งค่าพารามิเตอร์ `toolchain` และ `exec_group` ทั้ง 2 รายการ ระบบจะใช้ `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 sequence ของ File หรือ depset ค่าเริ่มต้นคือ []
รายการหรือ depset ของไฟล์อินพุตของการดำเนินการ
tools ลำดับของ File หรือ depset ค่าเริ่มต้นคือ unbound
รายการหรือ depset ของเครื่องมือที่การดำเนินการต้องการ เครื่องมือคืออินพุตที่เรียกใช้งานได้ซึ่งอาจมีไฟล์ที่เรียกใช้ของตัวเองซึ่งจะพร้อมใช้งานสำหรับการดำเนินการโดยอัตโนมัติ

เมื่อมีการระบุรายการ รายการนั้นอาจเป็นคอลเล็กชันแบบผสมของรายการต่อไปนี้

  • File วินาที
  • อินสแตนซ์ FilesToRunProvider รายการ
  • depset ของ File
Fileจาก ctx.executable และ 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` ใช้ Flag นี้เพื่อยืนยันว่าโค้ดของคุณทำงานได้โดยไม่พึ่งพา API ที่กำลังจะถูกนำออก

Bazel ใช้เชลล์เดียวกันเพื่อเรียกใช้คำสั่งเช่นเดียวกับที่ใช้สำหรับ genrules

progress_message สตริง หรือ 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 จะเขียนทับสภาพแวดล้อมเชลล์เริ่มต้น

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

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

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

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

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

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

โปรดทราบว่ากฎที่สร้างการดำเนินการนี้ต้องกำหนดเครื่องมือนี้ภายในฟังก์ชัน "rule()"

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

None actions.symlink(*, output, target_file=None, target_path=None, target_type=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 จะไม่แก้ไขลิงก์สัญลักษณ์ และเอาต์พุตของการดำเนินการนี้จะใช้ไม่ได้ก็ต่อเมื่อเนื้อหาข้อความของลิงก์สัญลักษณ์ (นั่นคือค่าของ readlink()) เปลี่ยนแปลง โดยเฉพาะอย่างยิ่ง คุณสามารถใช้เพื่อสร้างซิมลิงก์ที่ไม่มีอยู่จริงได้

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
output ไฟล์ ต้องระบุ
เอาต์พุตของการดำเนินการนี้
target_file File หรือ None ค่าเริ่มต้นคือ None
ไฟล์ที่ซิมลิงก์เอาต์พุตจะชี้ไป
target_path string หรือ None ค่าเริ่มต้นคือ None
เส้นทางที่แน่นอนที่ซิมลิงก์เอาต์พุตจะชี้ไป ระบบจะไม่ใช้การปรับให้เป็นมาตรฐานหรือการประมวลผลอื่นๆ
target_type string หรือ None ค่าเริ่มต้นคือ None
ใช้ได้กับ target_path เท่านั้น ไม่ใช่ target_file หากระบุ ต้องเป็น "file" หรือ "directory" อย่างใดอย่างหนึ่ง ซึ่งระบุประเภทที่คาดไว้ของเส้นทางเป้าหมาย

ใน Windows การตั้งค่านี้จะกำหนดประเภทออบเจ็กต์ระบบไฟล์ที่จะสร้าง (Junction สำหรับไดเรกทอรี, Symlink สำหรับไฟล์) โดยไม่มีผลต่อระบบปฏิบัติการอื่นๆ

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, *, mnemonic=None, execution_requirements=None)

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

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
output ไฟล์ ต้องระบุ
ไฟล์เอาต์พุต
content สตริง หรือ Args ต้องระบุ
เนื้อหาของไฟล์ อาจเป็นสตริงหรือออบเจ็กต์ actions.args()
is_executable bool; ค่าเริ่มต้นคือ False
ระบุว่าควรให้ไฟล์เอาต์พุตเป็นไฟล์ที่เรียกใช้งานได้หรือไม่
mnemonic สตริง หรือ None ค่าเริ่มต้นคือ None
คำอธิบายการดำเนินการแบบคำเดียว เช่น CppCompile หรือ GoLink
execution_requirements dict หรือ None ค่าเริ่มต้นคือ None
ข้อมูลสำหรับการกำหนดเวลาการดำเนินการ ดูคีย์ที่มีประโยชน์ได้ในแท็ก