कार्रवाइयां बनाने के लिए फ़ंक्शन उपलब्ध कराने वाला मॉड्यूल. ctx.actions
का इस्तेमाल करके, इस मॉड्यूल को ऐक्सेस करें.
सदस्य
- args
- declare_directory
- declare_file
- declare_symlink
- do_nothing
- expand_template
- run
- run_shell
- symlink
- template_dict
- लिखें
args
Args actions.args()
declare_directory
File actions.declare_directory(filename, *, sibling=None)
Args.add_all()
की मदद से, इसे ऐक्शन कमांड में बड़ा किया जा सकता है. declare_directory के कॉन्टेंट में सिर्फ़ सामान्य फ़ाइलें और डायरेक्ट्री हो सकती हैं.
पैरामीटर
पैरामीटर | ब्यौरा |
---|---|
filename
|
string;
required अगर कोई 'सिबलिंग' नहीं दी गई है, तो मौजूदा पैकेज के हिसाब से नई डायरेक्ट्री का पाथ. इसके अलावा, फ़ाइल के लिए कोई बेस नेम ('सिबलिंग' किसी डायरेक्ट्री को तय करता है). |
sibling
|
फ़ाइल; या None ;
डिफ़ॉल्ट वैल्यू None है यह फ़ाइल, नई डायरेक्ट्री के साथ उसी डायरेक्ट्री में मौजूद होती है. फ़ाइल, मौजूदा पैकेज में होनी चाहिए. |
declare_file
File actions.declare_file(filename, *, sibling=None)
sibling
नहीं दिया गया है, तो फ़ाइल का नाम पैकेज डायरेक्ट्री के हिसाब से होता है. इसके अलावा, फ़ाइल उसी डायरेक्ट्री में होती है जिसमें sibling
होता है. फ़ाइलों को मौजूदा पैकेज के बाहर नहीं बनाया जा सकता.ध्यान रखें कि फ़ाइल का एलान करने के साथ-साथ, आपको एक ऐसी कार्रवाई भी बनानी होगी जो फ़ाइल को जनरेट करे. उस कार्रवाई को बनाने के लिए, कार्रवाई के कंस्ट्रक्शन फ़ंक्शन में दिखाए गए File
ऑब्जेक्ट को पास करना होगा.
ध्यान दें कि पहले से तय की गई आउटपुट फ़ाइलों को इस फ़ंक्शन का इस्तेमाल करके, तय करने की ज़रूरत नहीं होती. साथ ही, ऐसा नहीं किया जा सकता. इसके बजाय, ctx.outputs
से उनके File
ऑब्जेक्ट पाए जा सकते हैं. इस्तेमाल का उदाहरण देखें.
पैरामीटर
पैरामीटर | ब्यौरा |
---|---|
filename
|
string;
required अगर कोई 'सिबलिंग' नहीं दी गई है, तो नई फ़ाइल का पाथ, मौजूदा पैकेज के हिसाब से. इसके अलावा, किसी फ़ाइल के लिए बेस नेम ('सिबलिंग' से डायरेक्ट्री का पता चलता है). |
sibling
|
File; या None ;
डिफ़ॉल्ट वैल्यू None है यह एक ऐसी फ़ाइल होती है जो नई फ़ाइल वाली डायरेक्ट्री में मौजूद होती है. फ़ाइल, मौजूदा पैकेज में होनी चाहिए. |
declare_symlink
File actions.declare_symlink(filename, *, sibling=None)
पैरामीटर
पैरामीटर | ब्यौरा |
---|---|
filename
|
string;
required अगर कोई 'सिबलिंग' नहीं दिया गया है, तो मौजूदा पैकेज के हिसाब से नए सिंबल लिंक का पाथ. इसके अलावा, फ़ाइल के लिए कोई बेस नेम ('सिबलिंग' किसी डायरेक्ट्री को तय करता है). |
sibling
|
फ़ाइल; या None ;
डिफ़ॉल्ट वैल्यू None है यह एक ऐसी फ़ाइल होती है जो नई डिक्लेयर की गई सिंबॉलिक लिंक वाली डायरेक्ट्री में मौजूद होती है. |
do_nothing
None
actions.do_nothing(mnemonic, inputs=[])
पैरामीटर
पैरामीटर | ब्यौरा |
---|---|
mnemonic
|
string;
required कार्रवाई के बारे में एक शब्द में जानकारी. उदाहरण के लिए, CppCompile या GoLink. |
inputs
|
File का sequence या depset;
डिफ़ॉल्ट रूप से [] होता है कार्रवाई के इनपुट फ़ाइलों की सूची. |
expand_template
None
actions.expand_template(template, output, substitutions={}, is_executable=False, computed_substitutions=unbound)
substitutions
डिक्शनरी का इस्तेमाल करके बदला जाएगा. बदलाव उसी क्रम में किए जाएंगे जिस क्रम में उन्हें तय किया गया है. जब भी डिक्शनरी की कोई कुंजी, टेंप्लेट में दिखती है (या पिछले बदलाव का कोई नतीजा दिखता है), तो उसे उससे जुड़ी वैल्यू से बदल दिया जाता है. कुंजियों के लिए कोई खास सिंटैक्स नहीं है. उदाहरण के लिए, टकराव से बचने के लिए कर्ली ब्रेसिज़ का इस्तेमाल किया जा सकता है (जैसे, {KEY}
). इस्तेमाल का उदाहरण देखें.
पैरामीटर
पैरामीटर | ब्यौरा |
---|---|
template
|
फ़ाइल;
ज़रूरी है यह टेंप्लेट फ़ाइल है. इसे UTF-8 कोड वाली टेक्स्ट फ़ाइल में बदला गया है. |
output
|
फ़ाइल;
ज़रूरी है यह आउटपुट फ़ाइल है. यह UTF-8 कोड में बदली गई टेक्स्ट फ़ाइल होती है. |
substitutions
|
dict;
डिफ़ॉल्ट रूप से {} होता है टेंप्लेट को बड़ा करते समय किए जाने वाले बदलाव. |
is_executable
|
bool;
डिफ़ॉल्ट रूप से 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
|
sequence of Files;
ज़रूरी है कार्रवाई की आउटपुट फ़ाइलों की सूची. |
inputs
|
sequence of Files; या depset;
डिफ़ॉल्ट रूप से [] होता है कार्रवाई के इनपुट फ़ाइलों की सूची या depset. |
unused_inputs_list
|
File या None ;
डिफ़ॉल्ट तौर पर None होता है ऐसी फ़ाइल जिसमें कार्रवाई के लिए इस्तेमाल नहीं किए गए इनपुट की सूची होती है. इस फ़ाइल का कॉन्टेंट, आम तौर पर कार्रवाई के आउटपुट में से एक होता है. यह उन इनपुट फ़ाइलों की सूची से मेल खाता है जिनका इस्तेमाल, कार्रवाई पूरी होने तक नहीं किया गया था. उन फ़ाइलों में किए गए किसी भी बदलाव से, कार्रवाई के आउटपुट पर कोई असर नहीं पड़ना चाहिए. |
executable
|
File या string या FilesToRunProvider;
ज़रूरी है यह वह एक्ज़ीक्यूटेबल फ़ाइल है जिसे कार्रवाई के ज़रिए कॉल किया जाना है. |
tools
|
sequence या depset;
डिफ़ॉल्ट रूप से unbound होता है कार्रवाई के लिए ज़रूरी टूल की सूची या depset. टूल, अतिरिक्त रनफ़ाइल वाले इनपुट होते हैं. ये कार्रवाई के लिए अपने-आप उपलब्ध हो जाते हैं. सूची दिए जाने पर, यह फ़ाइलों, FilesToRunProvider इंस्टेंस या फ़ाइलों के depsets का अलग-अलग कलेक्शन हो सकता है. सूची में मौजूद ऐसी फ़ाइलें जो सीधे तौर पर ctx.executable से आती हैं उनके रनफ़ाइल अपने-आप जुड़ जाएंगी. डेटासेट दिए जाने पर, उसमें सिर्फ़ फ़ाइलें होनी चाहिए. दोनों ही मामलों में, depsets में मौजूद फ़ाइलों को runfiles के लिए ctx.executable के साथ क्रॉस-रेफ़रंस नहीं किया जाता है. |
arguments
|
sequence;
डिफ़ॉल्ट तौर पर [] होता है ऐक्शन के कमांड लाइन आर्ग्युमेंट. यह स्ट्रिंग या actions.args() ऑब्जेक्ट की सूची होनी चाहिए.
|
mnemonic
|
string या None ;
डिफ़ॉल्ट रूप से None होता है कार्रवाई के बारे में एक शब्द में जानकारी. उदाहरण के लिए, CppCompile या GoLink. |
progress_message
|
string या None ;
डिफ़ॉल्ट तौर पर None होता है बिल्ड के दौरान उपयोगकर्ता को दिखाने के लिए प्रोग्रेस मैसेज. उदाहरण के लिए, "foo.cc को foo.o बनाने के लिए कंपाइल किया जा रहा है". मैसेज में %{label} , %{input} या %{output} पैटर्न शामिल हो सकते हैं. इन्हें लेबल स्ट्रिंग, पहले इनपुट या आउटपुट के पाथ से बदल दिया जाता है. स्टैटिक स्ट्रिंग के बजाय पैटर्न का इस्तेमाल करें, क्योंकि ये ज़्यादा असरदार होते हैं.
|
use_default_shell_env
|
bool;
डिफ़ॉल्ट रूप से False होता है कार्रवाई को डिफ़ॉल्ट शेल एनवायरमेंट का इस्तेमाल करना चाहिए या नहीं. इसमें ओएस पर निर्भर कुछ वैरिएबल के साथ-साथ, --action_env के ज़रिए सेट किए गए वैरिएबल भी शामिल होते हैं.अगर |
env
|
dict; या None ;
डिफ़ॉल्ट तौर पर None होता है यह एनवायरमेंट वैरिएबल की डिक्शनरी सेट करता है. अगर |
execution_requirements
|
dict; या None ;
डिफ़ॉल्ट रूप से None होता है कार्रवाई को शेड्यूल करने के लिए जानकारी. काम की कुंजियों के लिए, टैग देखें. |
input_manifests
|
sequence या None ;
डिफ़ॉल्ट तौर पर None होता है लेगसी आर्ग्युमेंट. ध्यान नहीं दिया गया. |
exec_group
|
string या None ;
डिफ़ॉल्ट रूप से None होता है यह दिए गए एक्ज़ीक्यूशन ग्रुप के एक्ज़ीक्यूशन प्लैटफ़ॉर्म पर कार्रवाई करता है. अगर कोई भी नहीं है, तो टारगेट के डिफ़ॉल्ट एक्ज़ीक्यूशन प्लैटफ़ॉर्म का इस्तेमाल करता है. |
shadowed_action
|
Action;
डिफ़ॉल्ट तौर पर None होता है यह कार्रवाई, शैडो ऐक्शन के दिए गए इनपुट और एनवायरमेंट का इस्तेमाल करके की जाती है. इनपुट और एनवायरमेंट को ऐक्शन के इनपुट की सूची और एनवायरमेंट में जोड़ा जाता है. ऐक्शन एनवायरमेंट, शैडो ऐक्शन के किसी भी एनवायरमेंट वैरिएबल को ओवरराइट कर सकता है. अगर कोई भी नहीं है, तो सिर्फ़ कार्रवाई के इनपुट और दिए गए एनवायरमेंट का इस्तेमाल करता है. |
resource_set
|
कॉलेबल; या None ;
डिफ़ॉल्ट तौर पर None होता है यह एक कॉलबैक फ़ंक्शन है, जो संसाधन सेट डिक्शनरी दिखाता है. इसका इस्तेमाल, एक्ज़ीक्यूशन के समय संसाधन के इस्तेमाल का अनुमान लगाने के लिए किया जाता है. ऐसा तब होता है, जब यह कार्रवाई स्थानीय तौर पर की जाती है. यह फ़ंक्शन, दो पोज़ीशनल आर्ग्युमेंट स्वीकार करता है: ओएस के नाम को दिखाने वाली स्ट्रिंग (जैसे, "osx") और कार्रवाई के लिए इनपुट की संख्या को दिखाने वाला पूर्णांक. डिक्शनरी में ये एंट्री हो सकती हैं. इनमें से हर एंट्री, फ़्लोट या पूर्णांक हो सकती है:
अगर इस पैरामीटर को कॉलबैक, टॉप-लेवल का होना चाहिए. Lambda और नेस्ट किए गए फ़ंक्शन की अनुमति नहीं है. |
toolchain
|
Label; या string; या None ;
डिफ़ॉल्ट रूप से unbound होता है इस कार्रवाई में इस्तेमाल किए गए एक्ज़ीक्यूटेबल या टूल का टूलचेन टाइप. अगर एक्ज़ीक्यूटेबल और टूल, टूलचेन से नहीं आ रहे हैं, तो इस पैरामीटर को `None` पर सेट करें. अगर एक्ज़ीक्यूटेबल और टूल, टूलचेन से आ रहे हैं, तो टूलचेन का टाइप सेट होना चाहिए, ताकि कार्रवाई सही एक्ज़ीक्यूशन प्लैटफ़ॉर्म पर हो. ध्यान दें कि इस कार्रवाई को बनाने वाले नियम को, अपने '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
|
sequence of Files;
ज़रूरी है कार्रवाई की आउटपुट फ़ाइलों की सूची. |
inputs
|
sequence of Files; या depset;
डिफ़ॉल्ट रूप से [] होता है कार्रवाई के इनपुट फ़ाइलों की सूची या depset. |
tools
|
sequence of Files; या depset;
डिफ़ॉल्ट रूप से unbound होता है कार्रवाई के लिए ज़रूरी टूल की सूची या depset. टूल, अतिरिक्त रनफ़ाइल वाले इनपुट होते हैं. ये कार्रवाई के लिए अपने-आप उपलब्ध हो जाते हैं. इस सूची में, Files या FilesToRunProvider इंस्टेंस शामिल हो सकते हैं. |
arguments
|
sequence;
डिफ़ॉल्ट तौर पर [] होता है ऐक्शन के कमांड लाइन आर्ग्युमेंट. यह स्ट्रिंग या actions.args() ऑब्जेक्ट की सूची होनी चाहिए.Bazel, इस एट्रिब्यूट में मौजूद एलिमेंट को कमांड के लिए आर्ग्युमेंट के तौर पर पास करता है. कमांड, शेल वैरिएबल सब्स्टिट्यूशन जैसे कि अगर |
mnemonic
|
string या None ;
डिफ़ॉल्ट रूप से None होता है कार्रवाई के बारे में एक शब्द में जानकारी. उदाहरण के लिए, CppCompile या GoLink. |
command
|
string; या sequence of strings;
ज़रूरी है यह शेल कमांड को एक्ज़ीक्यूट करने के लिए होता है. यह स्ट्रिंग (सुझाया गया) या स्ट्रिंग का क्रम (अब इस्तेमाल नहीं किया जा सकता) हो सकता है. अगर (अब इस्तेमाल नहीं किया जा सकता) अगर Bazel, कमांड को उसी शेल में एक्ज़ीक्यूट करता है जिसका इस्तेमाल वह genrules के लिए करता है. |
progress_message
|
string या None ;
डिफ़ॉल्ट तौर पर None होता है बिल्ड के दौरान उपयोगकर्ता को दिखाने के लिए प्रोग्रेस मैसेज. उदाहरण के लिए, "foo.cc को foo.o बनाने के लिए कंपाइल किया जा रहा है". मैसेज में %{label} , %{input} या %{output} पैटर्न शामिल हो सकते हैं. इन्हें लेबल स्ट्रिंग, पहले इनपुट या आउटपुट के पाथ से बदल दिया जाता है. स्टैटिक स्ट्रिंग के बजाय पैटर्न का इस्तेमाल करें, क्योंकि ये ज़्यादा असरदार होते हैं.
|
use_default_shell_env
|
bool;
डिफ़ॉल्ट रूप से False होता है कार्रवाई को डिफ़ॉल्ट शेल एनवायरमेंट का इस्तेमाल करना चाहिए या नहीं. इसमें ओएस पर निर्भर कुछ वैरिएबल के साथ-साथ, --action_env के ज़रिए सेट किए गए वैरिएबल भी शामिल होते हैं.अगर |
env
|
dict; या None ;
डिफ़ॉल्ट तौर पर None होता है यह एनवायरमेंट वैरिएबल की डिक्शनरी सेट करता है. अगर |
execution_requirements
|
dict; या None ;
डिफ़ॉल्ट रूप से None होता है कार्रवाई को शेड्यूल करने के लिए जानकारी. काम की कुंजियों के लिए, टैग देखें. |
input_manifests
|
sequence या None ;
डिफ़ॉल्ट तौर पर None होता है लेगसी आर्ग्युमेंट. ध्यान नहीं दिया गया. |
exec_group
|
string या None ;
डिफ़ॉल्ट रूप से None होता है यह दिए गए एक्ज़ीक्यूशन ग्रुप के एक्ज़ीक्यूशन प्लैटफ़ॉर्म पर कार्रवाई करता है. अगर कोई भी नहीं है, तो टारगेट के डिफ़ॉल्ट एक्ज़ीक्यूशन प्लैटफ़ॉर्म का इस्तेमाल करता है. |
shadowed_action
|
कार्रवाई;
डिफ़ॉल्ट रूप से None होता है यह कार्रवाई, शैडो ऐक्शन के खोजे गए इनपुट का इस्तेमाल करके की जाती है. इन इनपुट को ऐक्शन के इनपुट की सूची में जोड़ा जाता है. अगर कोई भी इनपुट नहीं है, तो सिर्फ़ ऐक्शन के इनपुट का इस्तेमाल करता है. |
resource_set
|
कॉलेबल; या None ;
डिफ़ॉल्ट तौर पर None होता है अगर इसे स्थानीय तौर पर चलाया जाता है, तो संसाधन के इस्तेमाल का अनुमान लगाने के लिए कॉलबैक फ़ंक्शन. ctx.actions.run() देखें.
|
toolchain
|
Label; या string; या None ;
डिफ़ॉल्ट रूप से unbound होता है इस कार्रवाई में इस्तेमाल किए गए एक्ज़ीक्यूटेबल या टूल का टूलचेन टाइप. अगर एक्ज़ीक्यूटेबल और टूल, टूलचेन से नहीं आ रहे हैं, तो इस पैरामीटर को `None` पर सेट करें. अगर एक्ज़ीक्यूटेबल और टूल, टूलचेन से आ रहे हैं, तो टूलचेन का टाइप सेट होना चाहिए, ताकि कार्रवाई सही एक्ज़ीक्यूशन प्लैटफ़ॉर्म पर हो. ध्यान दें कि इस कार्रवाई को बनाने वाले नियम को, अपने '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
एट्रिब्यूट की वैल्यू से output
एट्रिब्यूट की वैल्यू का टाइप मेल खाना चाहिए. इससे सिमलिंक, target_file
पर पॉइंट करेगा. सिमलिंक के टारगेट या उसके कॉन्टेंट में बदलाव होने पर, Bazel इस कार्रवाई के आउटपुट को अमान्य कर देता है.
इसके अलावा, target_path
का इस्तेमाल करते समय, declare_symlink()
के साथ output
का एलान करें. इस मामले में, सिमलंक target_path
की ओर इशारा करता है. Bazel कभी भी सिमलंक को हल नहीं करता है. इस कार्रवाई का आउटपुट सिर्फ़ तब अमान्य होता है, जब सिमलंक के टेक्स्ट कॉन्टेंट (यानी कि readlink()
की वैल्यू) में बदलाव होता है. खास तौर पर, इसका इस्तेमाल डैंगलिंग सिमलंक बनाने के लिए किया जा सकता है.
पैरामीटर
पैरामीटर | ब्यौरा |
---|---|
output
|
फ़ाइल;
ज़रूरी है यह इस कार्रवाई का आउटपुट है. |
target_file
|
File; या None ;
डिफ़ॉल्ट तौर पर None होता है वह फ़ाइल जिस पर आउटपुट सिंबल लिंक पॉइंट करेगा. |
target_path
|
string; या None ;
डिफ़ॉल्ट तौर पर None होता है वह सटीक पाथ जिस पर आउटपुट सिंबल लिंक पॉइंट करेगा. इसमें कोई बदलाव या अन्य प्रोसेसिंग नहीं की जाती है. |
is_executable
|
bool;
डिफ़ॉल्ट रूप से False होता है इसका इस्तेमाल सिर्फ़ target_file के साथ किया जा सकता है, target_path के साथ नहीं. अगर यह वैल्यू 'सही है' पर सेट है, तो कार्रवाई पूरी होने पर target_file के पाथ की जांच की जाती है. इससे यह पुष्टि की जाती है कि इसे एक्ज़ीक्यूट किया जा सकता है. अगर ऐसा नहीं होता है, तो गड़बड़ी की सूचना दी जाती है. is_executable को 'गलत है' पर सेट करने का मतलब यह नहीं है कि टारगेट को लागू नहीं किया जा सकता. इसका मतलब सिर्फ़ यह है कि पुष्टि नहीं की जाती.
|
progress_message
|
string; या None ;
डिफ़ॉल्ट तौर पर None है बिल्ड के दौरान उपयोगकर्ता को दिखाने के लिए प्रोग्रेस मैसेज. |
template_dict
TemplateDict actions.template_dict()
मेरी मदद करो
None
actions.write(output, content, is_executable=False)
expand_template
का इस्तेमाल करें.
पैरामीटर
पैरामीटर | ब्यौरा |
---|---|
output
|
File;
required यह आउटपुट फ़ाइल है. |
content
|
string; or Args;
ज़रूरी है फ़ाइल का कॉन्टेंट. यह एक स्ट्रिंग या actions.args() ऑब्जेक्ट हो सकता है.
|
is_executable
|
bool;
डिफ़ॉल्ट रूप से False होता है यह तय करता है कि आउटपुट फ़ाइल को एक्ज़ीक्यूट किया जा सकता है या नहीं. |