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

กฎ

การดําเนินการ_รายการ

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)",
)

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

แอตทริบิวต์
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(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 จะไม่ให้ผลลัพธ์ที่มีความหมายเมื่อระบุเป็นเป้าหมายบิลด์ปกติ แต่จะทําให้นักพัฒนาซอฟต์แวร์เครื่องมือแทรกการดําเนินการอื่นๆ ลงในกราฟบิลด์ที่ซ้อนการดําเนินการที่มีอยู่แทนได้

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

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

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

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

แอตทริบิวต์
name

Name; required

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

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

String; required

คําสั่งสําหรับเรียกใช้

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

  1. ไม่มีการขยายป้ายกํากับการเรียนรู้ ขยายเฉพาะป้ายกํากับที่ใช้ $(ตําแหน่ง ...) เท่านั้น

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

    เช่น เทมเพลต $(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 นี้

เมื่อเป็น True (ค่าเริ่มต้นเป็น False) คําสั่ง additional_action อาจอนุมานว่าเอาต์พุตของการทํางานเริ่มแรกพร้อมใช้งานเป็นส่วนหนึ่งของอินพุต

tools

List of labels; optional

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

โปรดดูคําจํากัดความของการขึ้นต่อกันเพื่อดูข้อมูลเพิ่มเติม

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

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