अतिरिक्त कार्रवाइयों के नियम

नियम

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

तर्क

एट्रिब्यूट
name

Name; required

इस टारगेट के लिए यूनीक नाम.

extra_actions

List of labels; required

extra_action टारगेट की सूची इस action_listener को बिल्ड ग्राफ़ में जोड़ना चाहिए. उदाहरण के लिए, [ "//my/tools:analyzer" ].
mnemonics

List of strings; required

इस 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 मैसेज होता है.

अन्य सभी कार्रवाइयों की तरह ही, अतिरिक्त कार्रवाइयां सैंडबॉक्स होती हैं और इन्हें उसी हिसाब से डिज़ाइन किया जाना चाहिए.

तर्क

एट्रिब्यूट
name

Name; required

इस टारगेट के लिए यूनीक नाम.

आप action_listener नियमों के extra_actions तर्क में, label इस नियम को देख सकते हैं.
cmd

String; required

चलाने के लिए निर्देश.

नीचे दिए गए अंतर के साथ genrole 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 के इनपुट के तौर पर मौजूद होना ज़रूरी है.

'सही है' (डिफ़ॉल्ट तौर पर गलत) होने पर, extra_action यह मान सकता है कि मूल कार्रवाई के आउटपुट उसके इनपुट के हिस्से के रूप में उपलब्ध हैं.

tools

List of labels; optional

इस नियम के लिए tool डिपेंडेंसी की सूची.

ज़्यादा जानकारी के लिए, डिपेंडेंसी की परिभाषा देखें.

बिल्ड सिस्टम यह पक्का करता है कि ये ज़रूरी शर्तें extra_action कमांड चलाने से पहले बनाई गई हों. इन्हें hostकॉन्फ़िगरेशन का इस्तेमाल करके बनाया जाता है, क्योंकि बिल्ड के दौरान ही इन्हें टूल के तौर पर चलाया जाता है. किसी व्यक्तिगत tools टारगेट //x:y का पाथ $(location //x:y) का इस्तेमाल करके हासिल किया जा सकता है.

सभी टूल और उनका डेटा डिपेंडेंसी एक ही ट्री में मिला दिया जाता है. इसमें कमांड, रिलेटिव पाथ का इस्तेमाल कर सकता है. वर्किंग डायरेक्ट्री उसी यूनिफ़ाइड ट्री की रूट होगी.