कार्रवाई के अतिरिक्त नियम

नियम

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)

चेतावनी: ज़्यादा कार्रवाइयां बंद कर दी गई हैं. इसके बजाय पहलों का इस्तेमाल करें.

action_listener नियम से कोई आउटपुट नहीं मिलता. इसके बजाय, यह टूल डेवलपर को डालने देता है extra_action एक बिल्ड सिस्टम में डाला गया है, ताकि कार्रवाई से मैप के बारे में बताया जा सकेextra_action चुनें.

इस नियम के तर्क, कार्रवाई के तरीकों को extra_action के नियमों के मुताबिक मैप करते हैं.

--experimental_action_listener=<label> विकल्प की जानकारी देने के लिए, बिल बनाने के लिए खास action_listener का इस्तेमाल किया जाएगा. इसके लिए, यह extra_actions को बिल्ड ग्राफ़.

उदाहरण

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

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

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

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

String; required

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

नीचे दिए गए अंतर वाले genrule cmd एट्रिब्यूट की तरह:

  1. लेबल की तुलना में लेबल को बड़ा नहीं किया जा सकता. सिर्फ़ $(location ...) का इस्तेमाल करने वाले लेबल को बड़ा किया जाता है.

  2. स्ट्रिंग पर एक और पास लागू किया जाता है, ताकि 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 के लिए इनपुट के तौर पर मौजूद मूल कार्रवाई के आउटपुट की ज़रूरत है.

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

tools

List of labels; optional

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

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

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

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