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

รายงานปัญหา ดูแหล่งที่มา

กฎ

การดําเนินการ_มีรายชื่อ

ดูแหล่งที่มาของกฎ
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 ไฟล์ต้นแบบแต่ละไฟล์มีข้อความ ExtraActionInfo

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

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

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

Name; required

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

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

String; required

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

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

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

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

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

tools

List of labels; optional

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

ดูข้อมูลเพิ่มเติมในคําจํากัดความของทรัพยากร Dependency

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

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