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

กฎ

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)

คำเตือน: การดำเนินการเพิ่มเติมเลิกใช้งานแล้ว โปรดใช้ aspects แทน

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

อาร์กิวเมนต์ของกฎนี้จะจับคู่ Mnemonics ของการดำเนินการกับกฎ 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

Name; required

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

extra_actions

List of labels; required

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

List of strings; required

รายการการช่วยจำการดำเนินการที่ 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)

คำเตือน: การดำเนินการเพิ่มเติมเลิกใช้งานแล้ว โปรดใช้ aspects แทน

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

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

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

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

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

Attributes
name

Name; required

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

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

String; required

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

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

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

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

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

    วิธีนี้ใช้แทน $(location) แต่มีขอบเขตต่างกัน

out_templates

List of strings; optional

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

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

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

requires_action_output

Boolean; optional; default is False

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

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

tools

List of labels; optional

รายการทรัพยากร Dependency tool ของกฎนี้

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

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

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