กฎการดำเนินการเพิ่มเติม

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

กฎ

action_listener

ดูแหล่งที่มาของกฎ
action_listener(name, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, extra_actions, features, licenses, mnemonics, restricted_to, tags, target_compatible_with, testonly, visibility)

คำเตือน: มีการเลิกใช้งานการดำเนินการเพิ่มเติม ใช้ แง่มุม แทน

กฎ action_listener จะไม่สร้างเอาต์พุตใดๆ เลย แต่ช่วยให้นักพัฒนาเครื่องมือสามารถแทรก extra_action ลงในระบบบิลด์ ด้วยการแมปจากการดำเนินการไปยัง extra_action

อาร์กิวเมนต์ของกฎนี้แมปการดำเนินการความทรงจำกับ extra_action

ระบุตัวเลือก --experimental_action_listener=<label>, บิลด์จะใช้ action_listener ที่ระบุเพื่อแทรก extra_action ลงในกราฟบิลด์

ตัวอย่าง

action_listener(
    name = "index_all_languages",
    mnemonics = [
        "Javac",
        "CppCompile",
        "Python",
    ],
    extra_actions = [":indexer"],
)

action_listener(
    name = "index_java",
    mnemonics = ["Javac"],
    extra_actions = [":indexer"],
)

extra_action(
    name = "indexer",
    tools = ["//my/tools:indexer"],
    cmd = "$(location //my/tools:indexer)" +
          "--extra_action_file=$(EXTRA_ACTION_FILE)",
)

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

Attributes
name

ชื่อ ต้องระบุ

ชื่อที่ไม่ซ้ำกันสำหรับเป้าหมายนี้

extra_actions

รายการป้ายกำกับ ต้องระบุ

รายการเป้าหมาย extra_action รายการ action_listener นี้ควรเพิ่มลงในกราฟบิลด์ เช่น [ "//my/tools:analyzer" ]
mnemonics

รายการสตริง ต้องระบุ

รายการความทรงจำการดำเนินการที่ action_listener นี้ควรฟัง เช่น [ "Javac" ]

การช่วยจำไม่ใช่อินเทอร์เฟซสาธารณะ และเรารับประกันไม่ได้ว่าความทรงจำและการกระทำเหล่านั้นจะไม่เปลี่ยนแปลง

extra_action

ดูแหล่งที่มาของกฎ
extra_action(name, data, cmd, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, out_templates, requires_action_output, restricted_to, tags, target_compatible_with, testonly, toolchains, tools, visibility)

คำเตือน: มีการเลิกใช้งานการดำเนินการเพิ่มเติม ใช้ แง่มุม แทน

กฎ extra_action ไม่ได้สร้างเอาต์พุตที่มีความหมาย เมื่อระบุเป็นเป้าหมายบิลด์ปกติ แต่ช่วยให้นักพัฒนาเครื่องมือ เพื่อแทรกการดำเนินการเพิ่มเติมลงในกราฟบิลด์ที่ซ่อนการดำเนินการที่มีอยู่

ดูรายละเอียดใน action_listener เกี่ยวกับวิธีเปิดใช้ extra_action

extra_action ทำงานเป็นบรรทัดคำสั่ง เครื่องมือบรรทัดคำสั่งจะมี สิทธิ์เข้าถึงไฟล์ที่มีบัฟเฟอร์โปรโตคอลเป็น $(EXTRA_ACTION_FILE) โดยมีข้อมูลโดยละเอียดเกี่ยวกับการดำเนินการดั้งเดิมที่เป็นเพียงเงามืด นอกจากนี้ยังมีสิทธิ์เข้าถึงไฟล์อินพุตทั้งหมดที่การดำเนินการเดิมมีสิทธิ์เข้าถึงด้วย โปรดดู extra_actions_base.proto เพื่อดูรายละเอียดเกี่ยวกับข้อมูลที่เก็บไว้ในบัฟเฟอร์โปรโตคอล ไฟล์ Proto แต่ละรายการ มีข้อความ ExtraActionInfo

เช่นเดียวกับการดำเนินการอื่นๆ ทั้งหมด การดำเนินการเพิ่มเติมจะได้รับแซนด์บ็อกซ์และควรออกแบบมาเพื่อรองรับการดำเนินการดังกล่าว

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

Attributes
name

ชื่อ ต้องระบุ

ชื่อที่ไม่ซ้ำกันสำหรับเป้าหมายนี้

คุณอาจอ้างอิงกฎนี้โดยใช้ label ในอาร์กิวเมนต์ extra_actions จากกฎ action_listener ข้อ
cmd

String; ต้องระบุ

คำสั่งที่จะเรียกใช้

เช่นเดียวกับแอตทริบิวต์ genrule cmd พร้อมกับข้อมูลต่อไปนี้ ความแตกต่าง:

  1. ไม่มีการขยายป้ายกำกับฮิวริสติก ระบบจะขยายเฉพาะป้ายกำกับที่ใช้ $(ตำแหน่ง ...) เท่านั้น

  2. ระบบจะใช้บัตรผ่านเพิ่มเติมกับสตริงเพื่อแทนที่ทั้งหมด รายการเอาต์พุตที่สร้างจาก out_templates รายการทั้งหมดของ $(output out_template) จะถูกแทนที่ด้วยเส้นทางไปยังไฟล์ที่มี label กำกับไว้

    เช่น out_template $(ACTION_ID).analysis สามารถจับคู่กับ $(output $(ACTION_ID).analysis)

    อันที่จริง ค่านี้เป็นการแทนที่เดียวกันกับ $(location) แต่ใช้ขอบเขตต่างกัน

out_templates

รายการสตริง ค่าเริ่มต้นคือ []

รายการเทมเพลตสำหรับไฟล์ที่สร้างโดยคำสั่ง extra_action

เทมเพลตสามารถใช้ตัวแปรต่อไปนี้

  • $(ACTION_ID) ซึ่งเป็นรหัสที่ระบุ extra_action นี้โดยไม่ซ้ำกัน ใช้เพื่อสร้างไฟล์เอาต์พุตที่ไม่ซ้ำกัน

requires_action_output

บูลีน ค่าเริ่มต้นคือ False

บ่งบอกว่า extra_action นี้ต้องการเอาต์พุตของ การดำเนินการดั้งเดิมที่จะแสดงเป็นอินพุตของ extra_action นี้

เมื่อเป็นจริง (ค่าเริ่มต้นเป็นเท็จ) ส่วนเกินสามารถสันนิษฐานได้ว่า เอาต์พุตจากการดำเนินการดั้งเดิมพร้อมใช้งานโดยเป็นส่วนหนึ่งของอินพุต

tools

รายการป้ายกำกับ ค่าเริ่มต้นคือ []

รายการทรัพยากร Dependency tool สำหรับกฎนี้

ดูคำจำกัดความของการขึ้นต่อกันสำหรับข้อมูลเพิ่มเติม

ระบบบิลด์จะดูแลให้มีการสร้างข้อกำหนดเบื้องต้นเหล่านี้ก่อนเรียกใช้ คำสั่ง extra_action จะสร้างขึ้นโดยใช้ execการกำหนดค่า เนื่องจากต้องเรียกใช้เป็นเครื่องมือในระหว่างบิลด์ เส้นทางของบุคคล รับ //x:y เป้าหมาย tools รายการได้โดยใช้ $(location //x:y)

เครื่องมือทั้งหมดและทรัพยากร Dependency ทั้งหมดจะรวมอยู่ในแผนผังเดียว ที่คำสั่งสามารถใช้เส้นทางแบบสัมพัทธ์ได้ ไดเรกทอรีที่ใช้งานได้จะ เป็นรากของโครงสร้างที่เป็นหนึ่งเดียว