กฎ
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
อาร์กิวเมนต์ของกฎนี้จะแมปคําช่วยจําการดําเนินการกับกฎ 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" ]
Mnemonics ไม่ใช่อินเทอร์เฟซสาธารณะ ไม่มีการรับประกันว่าคําช่วยจําและการดําเนินการของคําช่วยจําจะไม่เปลี่ยนแปลง |
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 ไฟล์โปรโตแต่ละไฟล์จะมีข้อความ ExtraActionInfo
เช่นเดียวกับการดำเนินการอื่นๆ ทั้งหมด การดำเนินการเพิ่มเติมจะได้รับแซนด์บ็อกซ์และควรออกแบบมาเพื่อรองรับการดำเนินการดังกล่าว
อาร์กิวเมนต์
Attributes | |
---|---|
name |
ชื่อ ต้องระบุ ชื่อที่ไม่ซ้ำกันสําหรับเป้าหมายนี้ คุณอ้างอิงกฎนี้ได้โดยใช้label ในอาร์กิวเมนต์ extra_actions ของกฎ action_listener
|
cmd
|
สตริง ต้องระบุ คำสั่งที่จะเรียกใช้เช่น แอตทริบิวต์ cmd ของ genrule โดยมีความแตกต่างดังนี้
|
out_templates
|
รายการสตริง ค่าเริ่มต้นคือ extra_action
เทมเพลตสามารถใช้ตัวแปรต่อไปนี้
|
requires_action_output
|
บูลีน ค่าเริ่มต้นคือ extra_action นี้ต้องใช้เอาต์พุตของการดำเนินการเดิมเป็นอินพุตสำหรับ extra_action นี้
เมื่อเป็น "จริง" (ค่าเริ่มต้น false) Special_action จะถือว่ามีเอาต์พุตการดำเนินการดั้งเดิมเป็นส่วนหนึ่งของอินพุต |
tools
|
รายการป้ายกํากับ ค่าเริ่มต้นคือ tool ที่ต้องพึ่งพาสำหรับกฎนี้
ดูคำจำกัดความของการขึ้นต่อกันสำหรับข้อมูลเพิ่มเติม
ระบบบิลด์จะตรวจสอบว่าข้อกำหนดเบื้องต้นเหล่านี้สร้างขึ้นก่อนที่จะเรียกใช้คำสั่ง ระบบจะรวมเครื่องมือทั้งหมดและทรัพยากร Dependency ไว้ในแผนผังเดียวซึ่งคำสั่งใช้เส้นทางแบบสัมพัทธ์ได้ ไดเรกทอรีทํางานจะเป็นรูทของต้นไม้แบบรวมนั้น |