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

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

กฎ

action_listener

ดูแหล่งที่มาของกฎ
action_listener(name, aspect_hints, compatible_with, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, extra_actions, features, licenses, mnemonics, package_metadata, 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" ]

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

extra_action

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

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

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

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

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

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

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

Attributes
name

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

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

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

สตริง; ต้องระบุ

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

เช่น genrule cmd attribute โดยมี ความแตกต่างดังนี้

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

  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 นี้

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

tools

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

รายการtoolการอ้างอิงสำหรับกฎนี้

ดูข้อมูลเพิ่มเติมได้ที่คำจำกัดความของการอ้างอิง

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

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