कार्रवाइयां

समस्या की शिकायत करें सोर्स देखें Nightly · 7.4 .

कार्रवाइयां बनाने के लिए फ़ंक्शन देने वाला मॉड्यूल. ctx.actions का इस्तेमाल करके इस मॉड्यूल को ऐक्सेस करें.

सदस्य

args

Args actions.args()

यह एक Args ऑब्जेक्ट दिखाता है. इसका इस्तेमाल, कम मेमोरी वाली कमांड लाइन बनाने के लिए किया जा सकता है.

declare_directory

File actions.declare_directory(filename, *, sibling=None)

इससे पता चलता है कि नियम या एस्पेक्ट, मौजूदा पैकेज में दिए गए नाम की डायरेक्ट्री बनाता है. आपको एक ऐसी कार्रवाई बनानी होगी जो डायरेक्ट्री जनरेट करती हो. डायरेक्ट्री के कॉन्टेंट को Starlark से सीधे तौर पर ऐक्सेस नहीं किया जा सकता. हालांकि, Args.add_all() की मदद से, ऐक्शन कमांड में कॉन्टेंट को बड़ा किया जा सकता है. declare_directory के बड़े किए गए कॉन्टेंट में सिर्फ़ सामान्य फ़ाइलें और डायरेक्ट्री हो सकती हैं.

पैरामीटर

पैरामीटर ब्यौरा
filename ज़रूरी है
अगर कोई 'सिबलिंग' नहीं दिया गया है, तो मौजूदा पैकेज के हिसाब से नई डायरेक्ट्री का पाथ. अगर ऐसा नहीं है, तो फ़ाइल का बेस नेम ('सिबलिंग' किसी डायरेक्ट्री की जानकारी देता है).
sibling File या None; डिफ़ॉल्ट रूप से None
फ़ाइल होती है जो उसी डायरेक्ट्री में मौजूद होती है जिसमें हाल ही में एलान किया गया है. फ़ाइल, मौजूदा पैकेज में होनी चाहिए.

declare_file

File actions.declare_file(filename, *, sibling=None)

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

याद रखें कि फ़ाइल का एलान करने के अलावा, आपको एक ऐसी कार्रवाई भी अलग से बनानी होगी जो फ़ाइल को उत्सर्जित करती है. इस कार्रवाई को बनाने के लिए, लौटाए गए File ऑब्जेक्ट को कार्रवाई के कंस्ट्रक्शन फ़ंक्शन में पास करना होगा.

ध्यान दें कि पहले से तय की गई आउटपुट फ़ाइलों का एलान, इस फ़ंक्शन का इस्तेमाल करके नहीं किया जा सकता. साथ ही, इनका एलान भी नहीं किया जा सकता. इसके बजाय, ctx.outputs से उनके File ऑब्जेक्ट पाए जा सकते हैं. इस्तेमाल का उदाहरण देखें.

पैरामीटर

पैरामीटर ब्यौरा
filename ज़रूरी है
अगर कोई 'सिबलिंग' नहीं दिया गया है, तो मौजूदा पैकेज के हिसाब से नई फ़ाइल का पाथ. अगर ऐसा नहीं है, तो फ़ाइल का बेस नेम ('सिबलिंग' से डायरेक्ट्री तय होती है).
sibling फ़ाइल या None; डिफ़ॉल्ट रूप से None
ऐसी फ़ाइल जो नई फ़ाइल के साथ एक ही डायरेक्ट्री में मौजूद हो. फ़ाइल, मौजूदा पैकेज में होनी चाहिए.

File actions.declare_symlink(filename, *, sibling=None)

इससे पता चलता है कि नियम या आसपेक्ट, मौजूदा पैकेज में दिए गए नाम के साथ एक सिमलिंक बनाता है. आपको एक ऐसी कार्रवाई बनानी होगी जो यह सिंबल लिंक जनरेट करे. Bazel इस सिमलिंक का रेफ़रंस कभी नहीं हटाएगा. साथ ही, इसे सैंडबॉक्स या रिमोट एक्ज़ीक्यूटर में हूबहू ट्रांसफ़र कर देगा. फ़िलहाल, ट्री आर्टफ़ैक्ट में सिमलینک का इस्तेमाल नहीं किया जा सकता.

पैरामीटर

पैरामीटर ब्यौरा
filename ज़रूरी है
अगर कोई 'सिबलिंग' नहीं दिया गया है, तो मौजूदा पैकेज के हिसाब से नए सिमलंक का पाथ. अगर ऐसा नहीं है, तो फ़ाइल का बेस नेम ('सिबलिंग' किसी डायरेक्ट्री की जानकारी देता है).
sibling फ़ाइल या None; डिफ़ॉल्ट रूप से यह None होती है
यह ऐसी फ़ाइल होती है जो उसी डायरेक्ट्री में मौजूद होती है जिसमें नया सिमलिंक मौजूद है.

do_nothing

None actions.do_nothing(mnemonic, inputs=[])

ऐसी खाली कार्रवाई बनाता है जो न तो कोई निर्देश देती है और न ही कोई आउटपुट देती है. हालांकि, यह कार्रवाई 'अतिरिक्त कार्रवाइयां' शामिल करने के लिए काम की होती है.

पैरामीटर

पैरामीटर ब्यौरा
mnemonic ज़रूरी है
कार्रवाई के बारे में एक शब्द में जानकारी, जैसे कि CppCompile या GoLink.
inputs फ़ाइल का क्रम या डिप्सेट; डिफ़ॉल्ट []
कार्रवाई की इनपुट फ़ाइलों की सूची है.

expand_template

None actions.expand_template(template, output, substitutions={}, is_executable=False, computed_substitutions=unbound)

टेंप्लेट एक्सपैंशन ऐक्शन बनाता है. जब कार्रवाई होगी, तो यह टेंप्लेट के आधार पर एक फ़ाइल जनरेट करेगी. टेम्प्लेट के हिस्सों को substitutions डिक्शनरी का इस्तेमाल करके बदला जाएगा. बदलावों को उसी क्रम में बदला जाएगा जिस क्रम में उन्हें बदलने के लिए कहा गया है. जब भी टेंप्लेट में डिक्शनरी की कोई कुंजी दिखती है या किसी पहले बदलाव का नतीजा दिखता है, तो उसे उससे जुड़ी वैल्यू से बदल दिया जाता है. कुंजियों के लिए कोई खास सिंटैक्स नहीं है. उदाहरण के लिए, {KEY} जैसे नामों के टकराव से बचने के लिए, कर्ली ब्रैकेट का इस्तेमाल किया जा सकता है. इस्तेमाल का उदाहरण देखें.

पैरामीटर

पैरामीटर ब्यौरा
template ज़रूरी है
टेंप्लेट फ़ाइल, जो UTF-8 कोड में बदली गई टेक्स्ट फ़ाइल होती है.
output ज़रूरी है
आउटपुट फ़ाइल, जो UTF-8 कोड में बदली गई टेक्स्ट फ़ाइल होती है.
substitutions डिफ़ॉल्ट रूप से, {}
टेंप्लेट को बड़ा करते समय किए जाने वाले बदलाव.
is_executable डिफ़ॉल्ट रूप से False
होता है क्या आउटपुट फ़ाइल को चलाया जा सकता है.
computed_substitutions TemplateDict; unbound
टेंप्लेट को बड़ा करते समय दिए जाने वाले विकल्प डिफ़ॉल्ट हैं.

रन

None actions.run(outputs, inputs=[], unused_inputs_list=None, executable, tools=unbound, arguments=[], mnemonic=None, progress_message=None, use_default_shell_env=False, env=None, execution_requirements=None, input_manifests=None, exec_group=None, shadowed_action=None, resource_set=None, toolchain=unbound)

ऐसी कार्रवाई बनाता है जो किसी एक्सीक्यूटेबल को चलाता है. इस्तेमाल का उदाहरण देखें.

पैरामीटर

पैरामीटर ब्यौरा
outputs फ़ाइल का क्रम; ज़रूरी है
कार्रवाई की आउटपुट फ़ाइलों की सूची.
inputs फ़ाइल का क्रम या डिप्सेट; डिफ़ॉल्ट []
कार्रवाई की इनपुट फ़ाइलों की सूची या डेसेट है.
unused_inputs_list फ़ाइल या None; डिफ़ॉल्ट तौर पर None
ऐसी फ़ाइल जिसमें उन इनपुट की सूची होती है जिनका इस्तेमाल कार्रवाई में नहीं किया जाता.

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

executable File; या string; या FilesToRunProvider; ज़रूरी
कार्रवाई से कॉल की जाने वाली एक्ज़ीक्यूटेबल फ़ाइल.
tools सीक्वेंस या डिप्सेट; डिफ़ॉल्ट रूप से unbound
कार्रवाई के लिए ज़रूरी सभी टूल की सूची या सूची होती है. टूल, अतिरिक्त रनफ़ाइलों के साथ इनपुट होते हैं. ये ऐक्शन के लिए अपने-आप उपलब्ध हो जाते हैं. सूची उपलब्ध कराने पर, यह Files, FilesToRunProvider इंस्टेंस या Files के डेपसेट का अलग-अलग तरह का कलेक्शन हो सकता है. जो फ़ाइलें सीधे सूची में हैं और ctx.executable से आती हैं उनकी रनफ़ाइल अपने-आप जुड़ जाएंगी. अगर कोई डिप्सेट दिया जाता है, तो उसमें सिर्फ़ फ़ाइलें होनी चाहिए. दोनों मामलों में, depset में मौजूद फ़ाइलों को runfile के लिए, ctx.executable के साथ क्रॉस-रेफ़रंस नहीं किया जाता.
arguments sequence; डिफ़ॉल्ट रूप से []
होता है ऐक्शन के कमांड लाइन आर्ग्युमेंट. यह स्ट्रिंग या actions.args() ऑब्जेक्ट की सूची होनी चाहिए.
mnemonic स्ट्रिंग या None; डिफ़ॉल्ट रूप से None
कार्रवाई का एक शब्द का ब्यौरा, जैसे कि CppCompile या GoLink.
progress_message string; या None; डिफ़ॉल्ट रूप से यह None
प्रोग्रेस मैसेज होता है, जिसे बिल्ड के दौरान उपयोगकर्ता को दिखाया जाता है. उदाहरण के लिए, "foo.o बनाने के लिए foo.cc को कंपाइल किया जा रहा है". इस मैसेज में %{label}, %{input} या %{output} पैटर्न हो सकते हैं. इन्हें लेबल स्ट्रिंग, पहले इनपुट या आउटपुट के पाथ से बदल दिया जाता है. स्टैटिक स्ट्रिंग के बजाय पैटर्न का इस्तेमाल करें, क्योंकि ये ज़्यादा असरदार होते हैं.
use_default_shell_env डिफ़ॉल्ट रूप से, False
क्या कार्रवाई को डिफ़ॉल्ट शेल एनवायरमेंट का इस्तेमाल करना चाहिए. इसमें ओएस पर निर्भर कुछ वैरिएबल के साथ-साथ, --action_env के ज़रिए सेट किए गए वैरिएबल शामिल होते हैं.

अगर use_default_shell_env और env, दोनों को True पर सेट किया जाता है और --incompatible_merge_fixed_and_default_shell_env को चालू (डिफ़ॉल्ट) किया जाता है, तो env में सेट की गई वैल्यू, डिफ़ॉल्ट शेल एनवायरमेंट को ओवरराइट कर देंगी. अगर फ़्लैग चालू नहीं है, तो env को अनदेखा कर दिया जाता है.

env dict या None; डिफ़ॉल्ट None
है एनवायरमेंट वैरिएबल की डिक्शनरी सेट करता है.

अगर use_default_shell_env और env, दोनों को True पर सेट किया जाता है, तो --incompatible_merge_fixed_and_default_shell_env चालू होने पर (डिफ़ॉल्ट), env में सेट की गई वैल्यू, शेल के डिफ़ॉल्ट एनवायरमेंट को बदल देंगी. अगर फ़्लैग चालू नहीं है, तो env को अनदेखा कर दिया जाता है.

execution_requirements dict या None; डिफ़ॉल्ट रूप से यह None
कार्रवाई शेड्यूल करने की जानकारी है. काम की कुंजियों के लिए, टैग देखें.
input_manifests sequence या None; डिफ़ॉल्ट रूप से None
होता है (प्रयोग के तौर पर उपलब्ध) इनपुट रनफ़ाइल का मेटाडेटा सेट करता है. आम तौर पर, ये resolve_command से जनरेट होते हैं.
exec_group string; या None; डिफ़ॉल्ट रूप से यह None होता है
दिए गए exec ग्रुप के एक्ज़ीक्यूशन प्लैटफ़ॉर्म पर कार्रवाई करता है. अगर कोई नहीं है, तो टारगेट के डिफ़ॉल्ट रनटाइम प्लैटफ़ॉर्म का इस्तेमाल किया जाता है.
shadowed_action कार्रवाई; डिफ़ॉल्ट रूप से None
होता है कार्रवाई की इनपुट सूची और एनवायरमेंट में जोड़े गए, शैडो की गई कार्रवाई के इनपुट और एनवायरमेंट का इस्तेमाल करके कार्रवाई को चलाता है. कार्रवाई एनवायरमेंट, शैडो की गई किसी भी कार्रवाई के एनवायरमेंट वैरिएबल को ओवरराइट कर सकता है. अगर इनमें से कोई नहीं है, तो सिर्फ़ कार्रवाई के इनपुट और दिए गए एनवायरमेंट का इस्तेमाल किया जाता है.
resource_set callable; या None; डिफ़ॉल्ट तौर पर None
यह एक कॉलबैक फ़ंक्शन है, जो रिसॉर्स सेट की डिक्शनरी दिखाता है. इसका इस्तेमाल, इस ऐक्शन को स्थानीय तौर पर चलाने पर, रिसॉर्स के इस्तेमाल का अनुमान लगाने के लिए किया जाता है.

यह फ़ंक्शन दो पोज़िशनल आर्ग्युमेंट स्वीकार करता है: ओएस का नाम बताने वाली स्ट्रिंग (उदाहरण के लिए, "osx") और कार्रवाई के इनपुट की संख्या बताने वाला पूर्णांक. दी गई डिक्शनरी में ये एंट्री हो सकती हैं. इनमें से हर एंट्री, फ़्लोट या इंट हो सकती है:

  • "cpu": सीपीयू की संख्या; डिफ़ॉल्ट तौर पर 1
  • "memory": एमबी में; डिफ़ॉल्ट 250
  • "local_test": स्थानीय टेस्ट की संख्या; डिफ़ॉल्ट तौर पर 1

अगर यह पैरामीटर None पर सेट है या --experimental_action_resource_set गलत है, तो डिफ़ॉल्ट वैल्यू का इस्तेमाल किया जाता है.

कॉलबैक टॉप-लेवल का होना चाहिए. इसमें लैम्ब्डा और नेस्ट किए गए फ़ंक्शन इस्तेमाल नहीं किए जा सकते.

toolchain लेबल; या स्ट्रिंग; या None; डिफ़ॉल्ट तौर पर unbound

इस कार्रवाई में इस्तेमाल किए जाने वाले एक्ज़ीक्यूटेबल या टूल का टूलचेन टाइप. पैरामीटर सेट होना चाहिए, ताकि ऐक्शन सही प्लैटफ़ॉर्म पर लागू हो.

फ़िलहाल, यह कोई काम नहीं करता. हालांकि, हमारा सुझाव है कि टूलचेन का इस्तेमाल करते समय इसे सेट करें, क्योंकि आने वाले समय में Bazel के रिलीज़ में इसकी ज़रूरत होगी.

ध्यान दें कि इस कार्रवाई को बनाने वाले नियम को अपने 'rule()' फ़ंक्शन में इस टूलचेन की जानकारी देनी होगी.

जब `toolchain` और `exec_group`, दोनों पैरामीटर सेट होते हैं, तो `exec_group` का इस्तेमाल किया जाएगा. अगर `exec_group` में यह जानकारी नहीं दी गई है, तो गड़बड़ी का मैसेज दिखता है.

run_shell

None actions.run_shell(outputs, inputs=[], tools=unbound, arguments=[], mnemonic=None, command, progress_message=None, use_default_shell_env=False, env=None, execution_requirements=None, input_manifests=None, exec_group=None, shadowed_action=None, resource_set=None, toolchain=unbound)

एक ऐसी कार्रवाई बनाता है जो शेल कमांड चलाता है. इस्तेमाल का उदाहरण देखें.

पैरामीटर

पैरामीटर ब्यौरा
outputs फ़ाइल का क्रम; ज़रूरी है
कार्रवाई की आउटपुट फ़ाइलों की सूची.
inputs फ़ाइल या depset का क्रम; डिफ़ॉल्ट तौर पर []
होता है कार्रवाई की इनपुट फ़ाइलों की सूची या depset.
tools फ़ाइल या depset का क्रम; डिफ़ॉल्ट रूप से unbound
होता है कार्रवाई के लिए ज़रूरी टूल की सूची या depset. टूल, अतिरिक्त रनफ़ाइलों के साथ इनपुट होते हैं. ये ऐक्शन के लिए अपने-आप उपलब्ध हो जाते हैं. इस सूची में Files या FilesToRunProvider के इंस्टेंस शामिल हो सकते हैं.
arguments क्रम; डिफ़ॉल्ट तौर पर, []
कार्रवाई के कमांड लाइन आर्ग्युमेंट होते हैं. यह स्ट्रिंग या actions.args() ऑब्जेक्ट की सूची होनी चाहिए.

Bazel, इस एट्रिब्यूट में मौजूद एलिमेंट को आर्ग्युमेंट के तौर पर कमांड को पास करता है. कमांड, $1, $2 वगैरह जैसे शेल वैरिएबल सबस्टिट्यूशन का इस्तेमाल करके इन आर्ग्युमेंट को ऐक्सेस कर सकता है. ध्यान दें कि इंडेक्स करने से पहले, Args ऑब्जेक्ट को फ़्लैट कर दिया जाता है. अगर Args ऑब्जेक्ट का साइज़ पता नहीं है, तो उसके बाद की सभी स्ट्रिंग, अनुमानित इंडेक्स पर होंगी. अनिश्चित साइज़ वाले Args ऑब्जेक्ट के साथ, $@ (सभी आर्ग्युमेंट वापस पाने के लिए) का इस्तेमाल करने से आपको मदद मिल सकती है.

अगर command, स्ट्रिंग की सूची है, तो हो सकता है कि इस पैरामीटर का इस्तेमाल न किया जा सके.

mnemonic string; या None; डिफ़ॉल्ट तौर पर None
कार्रवाई से जुड़ी एक शब्द की जानकारी होती है. उदाहरण के लिए, CppCompile या GoLink.
command स्ट्रिंग या स्ट्रिंग का क्रम; शेल कमांड को चलाने के लिए ज़रूरी
है. यह एक स्ट्रिंग (प्राथमिकता दी जाती है) या स्ट्रिंग का क्रम (इस्तेमाल से रोका गया) हो सकता है.

अगर command एक स्ट्रिंग है, तो उसे ऐसे एक्ज़ीक्यूट किया जाता है जैसे sh -c <command> "" <arguments> करता है -- इसका मतलब है कि arguments में एलिमेंट $1, $2 (या Windows बैच का इस्तेमाल करने पर %1, %2) वगैरह के तौर पर उपलब्ध कराए जाते हैं. अगर arguments में कोई actions.args() ऑब्जेक्ट मौजूद है, तो उसका कॉन्टेंट कमांड लाइन में एक-एक करके जोड़ दिया जाता है. इससे $i किसी Args ऑब्जेक्ट में अलग-अलग स्ट्रिंग का रेफ़रंस दे सकता है. ध्यान दें कि अगर arguments के हिस्से के तौर पर, किसी ऐसे Args ऑब्जेक्ट को पास किया जाता है जिसका साइज़ पता नहीं है, तो स्ट्रिंग अज्ञात इंडेक्स पर होंगी. ऐसे में, $@ शेल सबस्टिट्यूशन (सभी आर्ग्युमेंट वापस पाएं) काम का हो सकता है.

(अब काम नहीं करता) अगर command, स्ट्रिंग का क्रम है, तो पहला आइटम वह एक्सीक्यूटेबल है जिसे चलाना है और बाकी आइटम उसके आर्ग्युमेंट हैं. अगर इस फ़ॉर्म का इस्तेमाल किया जाता है, तो arguments पैरामीटर नहीं दिया जाना चाहिए. ध्यान दें कि इस फ़ॉर्म का इस्तेमाल नहीं किया जा सकता. इसे जल्द ही हटा दिया जाएगा. यह `--incompatible_run_shell_command_string` के साथ बंद है. यह पुष्टि करने के लिए कि आपका कोड काम करता है या नहीं, इस फ़्लैग का इस्तेमाल करें.

बेज़ल, आदेश को अंजाम देने के लिए उसी शेल का इस्तेमाल करते हैं, जैसे कि जेनरूल के लिए करते हैं.

progress_message string; या None; डिफ़ॉल्ट रूप से यह None
प्रोग्रेस मैसेज होता है, जिसे बिल्ड के दौरान उपयोगकर्ता को दिखाया जाता है. उदाहरण के लिए, "foo.o बनाने के लिए foo.cc को कंपाइल किया जा रहा है". मैसेज में %{label}, %{input} या %{output} पैटर्न हो सकते हैं. इन्हें लेबल स्ट्रिंग, पहले इनपुट या आउटपुट के पाथ से बदला जाता है. स्टैटिक स्ट्रिंग के बजाय पैटर्न का इस्तेमाल करें, क्योंकि पहली स्ट्रिंग ज़्यादा असरदार होती हैं.
use_default_shell_env यह डिफ़ॉल्ट है False
कार्रवाई को डिफ़ॉल्ट शेल एनवायरमेंट का इस्तेमाल करना चाहिए या नहीं. इसमें, ओएस पर निर्भर कुछ वैरिएबल के साथ-साथ --action_env के ज़रिए सेट किए गए वैरिएबल शामिल होते हैं.

अगर use_default_shell_env और env, दोनों को True पर सेट किया जाता है, तो --incompatible_merge_fixed_and_default_shell_env चालू होने पर (डिफ़ॉल्ट), env में सेट की गई वैल्यू, शेल के डिफ़ॉल्ट एनवायरमेंट को बदल देंगी. अगर फ़्लैग चालू नहीं है, तो env को अनदेखा कर दिया जाता है.

env dict; या None; डिफ़ॉल्ट रूप से None
एनवायरमेंट वैरिएबल की डिक्शनरी को सेट करता है.

अगर use_default_shell_env और env, दोनों को True पर सेट किया जाता है, तो --incompatible_merge_fixed_and_default_shell_env चालू होने पर (डिफ़ॉल्ट), env में सेट की गई वैल्यू, शेल के डिफ़ॉल्ट एनवायरमेंट को बदल देंगी. अगर फ़्लैग चालू नहीं है, तो env को अनदेखा कर दिया जाता है.

execution_requirements dict या None; डिफ़ॉल्ट None
है कार्रवाई को शेड्यूल करने के लिए जानकारी. काम की कुंजियों के लिए, टैग देखें.
input_manifests sequence या None; डिफ़ॉल्ट रूप से None
होता है (प्रयोग के तौर पर उपलब्ध) इनपुट रनफ़ाइल का मेटाडेटा सेट करता है. आम तौर पर, ये resolve_command से जनरेट होते हैं.
exec_group स्ट्रिंग या None; डिफ़ॉल्ट None
है यह कार्रवाई, दिए गए एक्सेक्यूशन ग्रुप के एक्सेक्यूशन प्लैटफ़ॉर्म पर की जाती है. अगर कोई नहीं है, तो टारगेट के डिफ़ॉल्ट रनटाइम प्लैटफ़ॉर्म का इस्तेमाल किया जाता है.
shadowed_action कार्रवाई; डिफ़ॉल्ट रूप से None
होता है यह कार्रवाई की इनपुट सूची में जोड़े गए, शैडो की गई कार्रवाई के खोजे गए इनपुट का इस्तेमाल करके कार्रवाई को चलाता है. अगर इनमें से कोई नहीं है, तो सिर्फ़ कार्रवाई के इनपुट का इस्तेमाल करता है.
resource_set कॉल करने लायक; या None; डिफ़ॉल्ट None है
अगर स्थानीय तौर पर चलाया जाता है, तो संसाधन के इस्तेमाल का अनुमान लगाने के लिए यह कॉलबैक फ़ंक्शन होता है. ctx.actions.run() देखें.
toolchain लेबल या string; या None. डिफ़ॉल्ट रूप से, यह unbound
होता है

इस कार्रवाई में इस्तेमाल किए गए टूल या एक्सीक्यूटेबल का टूलचेन टाइप. पैरामीटर सेट होना चाहिए, ताकि ऐक्शन सही प्लैटफ़ॉर्म पर लागू हो.

फ़िलहाल, यह कोई काम नहीं करता. हालांकि, हमारा सुझाव है कि टूलचेन का इस्तेमाल करते समय इसे सेट करें, क्योंकि आने वाले समय में Bazel के रिलीज़ में इसकी ज़रूरत होगी.

ध्यान दें कि इस कार्रवाई को बनाने वाले नियम को अपने 'rule()' फ़ंक्शन में इस टूलचेन की जानकारी देनी होगी.

अगर `toolchain` और `exec_group` पैरामीटर, दोनों सेट हैं, तो `exec_group` का इस्तेमाल किया जाएगा. अगर `exec_group` में टूलचेन के बारे में नहीं बताया गया है, तो गड़बड़ी का मैसेज दिखता है.

None actions.symlink(output, target_file=None, target_path=None, is_executable=False, progress_message=None)

यह एक ऐसी कार्रवाई बनाता है जो फ़ाइल सिस्टम में सिमलिंक लिखता है.

इस फ़ंक्शन को target_file या target_path में से किसी एक के साथ ही इस्तेमाल किया जाना चाहिए.

target_file का इस्तेमाल करते समय, declare_file() या declare_directory() के साथ output का एलान करें और target_file के टाइप से मैच करें. इससे सिमलिंक पॉइंट, target_file पर सेट हो जाता है. जब भी सिमलिन्क का टारगेट या उसका कॉन्टेंट बदलता है, तो Bazel इस कार्रवाई के आउटपुट को अमान्य कर देता है.

इसके अलावा, target_path का इस्तेमाल करते समय, declare_symlink() के साथ output का एलान करें. इस मामले में, सिमलंक target_path पर ले जाता है. Bazel, कभी भी सिर्फ़ लिंक को हल नहीं करता. इस कार्रवाई का आउटपुट सिर्फ़ तब अमान्य होता है, जब सिर्फ़ लिंक के टेक्स्ट कॉन्टेंट (यानी readlink() की वैल्यू) में बदलाव होता है. खास तौर पर, इसका इस्तेमाल डैंगलिंग सिंबललिंक बनाने के लिए किया जा सकता है.

पैरामीटर

पैरामीटर ब्यौरा
output ज़रूरी है
इस कार्रवाई का आउटपुट.
target_file फ़ाइल; या None; डिफ़ॉल्ट रूप से None
वह फ़ाइल होती है जिस पर आउटपुट सिमलिंक को ले जाया जाता है.
target_path स्ट्रिंग या None; डिफ़ॉल्ट रूप से None
वह सटीक पाथ जिस पर आउटपुट सिमलिंक ले जाएगा. इसमें नॉर्मलाइज़ेशन या कोई अन्य प्रोसेस लागू नहीं की जाती.
is_executable डिफ़ॉल्ट सेटिंग False है
इसे सिर्फ़ target_file के साथ इस्तेमाल किया जा सकता है, target_path के साथ नहीं. अगर सही है, तो कार्रवाई के लागू होने पर, target_file के पाथ की जांच करके यह पुष्टि की जाती है कि उसे एक्ज़ीक्यूट किया जा सकता है. अगर ऐसा नहीं है, तो उसे गड़बड़ी की सूचना दी जाती है. is_executable को 'गलत है' पर सेट करने का मतलब यह नहीं है कि टारगेट को एक्ज़ीक्यूट नहीं किया जा सकता. इसका मतलब सिर्फ़ यह है कि कोई पुष्टि नहीं हुई है.

target_path के लिए यह सुविधा काम की नहीं है, क्योंकि हो सकता है कि बिल्ड के समय डैंगलिंग सिंबललिंक मौजूद न हों.

progress_message string; या None; डिफ़ॉल्ट रूप से None
प्रोग्रेस मैसेज होता है, जो बिल्ड के दौरान उपयोगकर्ता को दिखाया जाता है.

template_dict

TemplateDict actions.template_dict()

यह फ़ंक्शन, मेमोरी का कम से कम इस्तेमाल करके टेंप्लेट को बड़ा करने के लिए, TemplateDict ऑब्जेक्ट दिखाता है.

write

None actions.write(output, content, is_executable=False)

फ़ाइल में डेटा लिखने की कार्रवाई बनाता है. कार्रवाई पूरी होने पर, यह दिए गए कॉन्टेंट को फ़ाइल में लिख देगा. इसका इस्तेमाल, विश्लेषण के चरण में उपलब्ध जानकारी का इस्तेमाल करके फ़ाइलें जनरेट करने के लिए किया जाता है. अगर फ़ाइल बड़ी है और उसमें बहुत ज़्यादा स्टैटिक कॉन्टेंट है, तो expand_template का इस्तेमाल करें.

पैरामीटर

पैरामीटर ब्यौरा
output ज़रूरी है
आउटपुट फ़ाइल.
content string या Args; ज़रूरी
फ़ाइल का कॉन्टेंट. यह स्ट्रिंग या actions.args() ऑब्जेक्ट हो सकता है.
is_executable डिफ़ॉल्ट रूप से False
होता है क्या आउटपुट फ़ाइल को चलाया जा सकता है.