सभी .bzl फ़ाइलों में उपलब्ध वैश्विक तरीके.
सदस्य
- analysis_test_transition
- aspect
- configuration_field
- depset
- exec_group
- exec_transition
- macro
- module_extension
- provider
- repository_rule
- rule
- select
- subrule
- tag_class
- visibility
analysis_test_transition
transition analysis_test_transition(settings)
यह विश्लेषण-टेस्ट नियम की डिपेंडेंसी पर लागू करने के लिए, कॉन्फ़िगरेशन ट्रांज़िशन बनाता है. यह ट्रांज़िशन सिर्फ़ उन नियमों के एट्रिब्यूट पर लागू किया जा सकता है जिनमें analysis_test = True
है. इस तरह के नियमों की सुविधाएं सीमित होती हैं. उदाहरण के लिए, उनके डिपेंडेंसी ट्री का साइज़ सीमित होता है. इसलिए, transition()
का इस्तेमाल करके बनाए गए ट्रांज़िशन की तुलना में, इस फ़ंक्शन का इस्तेमाल करके बनाए गए ट्रांज़िशन के दायरे की संभावना सीमित होती है.
इस फ़ंक्शन को मुख्य रूप से Analysis Test Framework की मुख्य लाइब्रेरी को आसान बनाने के लिए डिज़ाइन किया गया है. सबसे सही तरीके जानने के लिए, इसका दस्तावेज़ (या इसे लागू करने का तरीका) देखें.
पैरामीटर
पैरामीटर | ब्यौरा |
---|---|
settings
|
dict;
ज़रूरी है एक डिक्शनरी, जिसमें ऐसे कॉन्फ़िगरेशन सेटिंग की जानकारी होती है जिन्हें इस कॉन्फ़िगरेशन ट्रांज़िशन की मदद से सेट किया जाना चाहिए. इसमें मौजूद बटन, बिल्ड सेटिंग के लेबल (बिल्ड प्रोसेस के दौरान इस्तेमाल होने वाले विशिष्ट कॉन्फ़िगरेशन विकल्पों से जुड़े, पूरी जानकारी देने वाले नाम या आइडेंटिफ़ायर) हैं और इसकी वैल्यू, ट्रांज़िशन के बाद की नई वैल्यू हैं. किसी भी अन्य सेटिंग में कोई बदलाव नहीं हुआ है. इसका इस्तेमाल करके, उन खास कॉन्फ़िगरेशन सेटिंग के बारे में बताएं जिन्हें विश्लेषण टेस्ट पास करने के लिए सेट करना ज़रूरी है. |
aspect
Aspect aspect(implementation, attr_aspects=[], toolchains_aspects=[], attrs={}, required_providers=[], required_aspect_providers=[], provides=[], requires=[], fragments=[], host_fragments=[], toolchains=[], incompatible_use_toolchain_transition=False, doc=None, *, apply_to_generating_rules=False, exec_compatible_with=[], exec_groups=None, subrules=[])
पैरामीटर
पैरामीटर | ब्यौरा |
---|---|
implementation
|
function;
ज़रूरी है यह एक Starlark फ़ंक्शन है, जो इस आसपेक्ट को लागू करता है. इसमें दो पैरामीटर होते हैं: Target (वह टारगेट जिस पर आसपेक्ट लागू किया जाता है) और ctx (वह नियम कॉन्टेक्स्ट जिससे टारगेट बनाया जाता है). टारगेट के एट्रिब्यूट, ctx.rule फ़ील्ड के ज़रिए उपलब्ध होते हैं. विश्लेषण के दौरान, इस फ़ंक्शन का आकलन किया जाता है. ऐसा, किसी टारगेट के लिए किसी आसपेक्ट को हर बार लागू करने के लिए किया जाता है.
|
attr_aspects
|
स्ट्रिंग का क्रम;
डिफ़ॉल्ट रूप से [] होता है एट्रिब्यूट के नामों की सूची. यह आसपेक्ट इन नामों वाले टारगेट के एट्रिब्यूट में बताई गई डिपेंडेंसी के साथ लागू होता है. आम तौर पर, deps और exports वैल्यू का इस्तेमाल किया जाता है. सूची में एक स्ट्रिंग "*" भी शामिल हो सकती है, ताकि इसे टारगेट की सभी डिपेंडेंसी के साथ लागू किया जा सके.
|
toolchains_aspects
|
sequence;
डिफ़ॉल्ट तौर पर [] होता है टूल चेन के टाइप की सूची. यह आसपेक्ट, उन टारगेट टूल चेन पर लागू होता है जो इन टूल चेन टाइप से मेल खाते हैं. |
attrs
|
dict;
डिफ़ॉल्ट रूप से {} होता है यह एक डिक्शनरी है, जिसमें आसपेक्ट के सभी एट्रिब्यूट की जानकारी होती है. यह एट्रिब्यूट के नाम को attr.label या attr.string जैसे एट्रिब्यूट ऑब्जेक्ट से मैप करता है. attr मॉड्यूल देखें. आसपेक्ट एट्रिब्यूट, लागू करने वाले फ़ंक्शन के लिए ctx पैरामीटर के फ़ील्ड के तौर पर उपलब्ध होते हैं.
ऐसे एट्रिब्यूट जिनकी वैल्यू का पता साफ़ तौर पर चलता है, उनका टाइप एट्रिब्यूट की वैल्यू सबमिट करने पर, |
required_providers
|
sequence;
डिफ़ॉल्ट तौर पर यह [] होता है इस एट्रिब्यूट की मदद से, आसपेक्ट को सिर्फ़ उन टारगेट तक सीमित किया जा सकता है जिनके नियमों में, ज़रूरी सेवा देने वाली कंपनियों का विज्ञापन होता है. यह वैल्यू, सेवा देने वाली कंपनियों की एक सूची होनी चाहिए. इसमें सेवा देने वाली कंपनियों की सूची या अलग-अलग कंपनियों की जानकारी शामिल हो सकती है, लेकिन दोनों नहीं. उदाहरण के लिए, [[FooInfo], [BarInfo], [BazInfo, QuxInfo]] मान्य वैल्यू है, जबकि [FooInfo, BarInfo, [BazInfo, QuxInfo]] मान्य नहीं है.सेवा देने वाली कंपनियों की नेस्ट नहीं की गई सूची, अपने-आप एक ऐसी सूची में बदल जाएगी जिसमें सेवा देने वाली कंपनियों की एक सूची हो. इसका मतलब है कि किसी नियम (उदाहरण के लिए, |
required_aspect_providers
|
sequence;
डिफ़ॉल्ट तौर पर इसकी वैल्यू [] होती है इस एट्रिब्यूट की मदद से, इस आसपेक्ट को दूसरे आसपेक्ट की जांच करने की अनुमति मिलती है. यह वैल्यू, सेवा देने वाली कंपनियों की एक सूची होनी चाहिए. इसमें सेवा देने वाली कंपनियों की सूची या अलग-अलग कंपनियों की जानकारी शामिल हो सकती है, लेकिन दोनों नहीं. उदाहरण के लिए, [[FooInfo], [BarInfo], [BazInfo, QuxInfo]] मान्य वैल्यू है, जबकि [FooInfo, BarInfo, [BazInfo, QuxInfo]] मान्य नहीं है.सेवा देने वाली कंपनियों की नेस्ट नहीं की गई सूची, अपने-आप एक ऐसी सूची में बदल जाएगी जिसमें सेवा देने वाली कंपनियों की एक सूची हो. इसका मतलब है कि किसी दूसरे आसपेक्ट (जैसे, |
provides
|
sequence;
डिफ़ॉल्ट तौर पर [] होता है सेवा देने वाली उन कंपनियों की सूची जिन्हें लागू करने वाले फ़ंक्शन को दिखाना चाहिए. अगर लागू करने वाले फ़ंक्शन में, यहां दी गई सूची में शामिल किसी भी तरह के प्रोवाइडर को रिटर्न वैल्यू से हटा दिया जाता है, तो यह गड़बड़ी होती है. हालांकि, लागू करने वाले फ़ंक्शन की रिटर्न वैल्यू में ऐसे अन्य प्रोवाइडर भी मिल सकते हैं जो यहां नहीं दिए गए हैं. सूची का हर एलिमेंट, |
requires
|
sequence of Aspects;
डिफ़ॉल्ट रूप से [] होता है इस आसपेक्ट से पहले, लागू किए जाने वाले आसपेक्ट की सूची. |
fragments
|
sequence of strings;
डिफ़ॉल्ट रूप से [] होता है उन कॉन्फ़िगरेशन फ़्रैगमेंट के नामों की सूची जिनकी टारगेट कॉन्फ़िगरेशन में, आसपेक्ट को ज़रूरत होती है. |
host_fragments
|
sequence of strings;
डिफ़ॉल्ट तौर पर यह [] होता है कॉन्फ़िगरेशन के उन फ़्रैगमेंट के नामों की सूची जिनकी होस्ट कॉन्फ़िगरेशन में, आसपेक्ट को ज़रूरत होती है. |
toolchains
|
sequence;
डिफ़ॉल्ट तौर पर, यह [] होता है अगर यह सेट है, तो इस आसपेक्ट के लिए ज़रूरी टूल चेन का सेट. इस सूची में, स्ट्रिंग, लेबल या StarlarkToolchainTypeApi ऑब्जेक्ट, किसी भी कॉम्बिनेशन में शामिल हो सकते हैं. मौजूदा प्लैटफ़ॉर्म की जांच करके टूल चेन मिलेंगे. साथ ही, ctx.toolchain के ज़रिए, इन टूल चेन को आसपेक्ट लागू करने के लिए उपलब्ध कराया जाएगा.
|
incompatible_use_toolchain_transition
|
bool;
डिफ़ॉल्ट तौर पर False होता है अब इस्तेमाल नहीं किया जाता. इसे हटा दिया जाना चाहिए. |
doc
|
स्ट्रिंग या None ;
डिफ़ॉल्ट तौर पर None होता है दस्तावेज़ जनरेट करने वाले टूल से निकाले जा सकने वाले आसपेक्ट की जानकारी. |
apply_to_generating_rules
|
bool;
डिफ़ॉल्ट तौर पर False है अगर यह 'सही' है, तो आउटपुट फ़ाइल पर लागू किए जाने पर, आसपेक्ट उसकी बजाय आउटपुट फ़ाइल को जनरेट करने वाले नियम पर लागू होगा. उदाहरण के लिए, मान लें कि कोई आसपेक्ट, एट्रिब्यूट `deps` के ज़रिए ट्रांज़िटिव तौर पर प्रसारित होता है और इसे टारगेट `alpha` पर लागू किया जाता है. मान लें कि `alpha` में `deps = [':beta_output']` है, जहां `beta_output`, टारगेट `beta` का तय किया गया आउटपुट है. मान लें कि `beta` में, अपने एक `deps` के तौर पर टारगेट `charlie` है. अगर आसपेक्ट के लिए `apply_to_generating_rules=True` है, तो आसपेक्ट `alpha`, `beta`, और `charlie` के ज़रिए प्रसारित होगा. अगर यह False है, तो आसपेक्ट सिर्फ़ `alpha` पर प्रसारित होगा. डिफ़ॉल्ट रूप से गलत. |
exec_compatible_with
|
sequence of strings;
डिफ़ॉल्ट रूप से [] होता है यह, एक्ज़ीक्यूशन प्लैटफ़ॉर्म पर मौजूद उन पाबंदियों की सूची है जो इस आसपेक्ट के सभी इंस्टेंस पर लागू होती हैं |
exec_groups
|
dict या None ;
डिफ़ॉल्ट तौर पर None होता है एक डिक्शनरी, जिसमें एक्ज़ीक्यूशन ग्रुप का नाम (स्ट्रिंग) exec_group में बदला जाता है. अगर यह सेट है, तो आसपेक्ट, एक ही इंस्टेंस में कई एक्ज़ीक्यूशन प्लैटफ़ॉर्म पर ऐक्शन चला सकता है. ज़्यादा जानकारी के लिए, एक्ज़ीक्यूशन ग्रुप का दस्तावेज़ देखें.
|
subrules
|
sequence of Subrules;
डिफ़ॉल्ट रूप से [] होता है एक्सपेरिमेंटल: इस आसपेक्ट में इस्तेमाल किए गए सबनियमों की सूची. |
configuration_field
LateBoundDefault configuration_field(fragment, name)
इस्तेमाल का उदाहरण:
नियम एट्रिब्यूट तय करना:
'_foo': attr.label(default=configuration_field(fragment='java', name='toolchain'))
नियम लागू करने के दौरान ऐक्सेस करना:
def _rule_impl(ctx): foo_info = ctx.attr._foo ...
पैरामीटर
पैरामीटर | ब्यौरा |
---|---|
fragment
|
string;
ज़रूरी है उस कॉन्फ़िगरेशन फ़्रैगमेंट का नाम जिसमें लेट-बाउंड वैल्यू शामिल है. |
name
|
string;
ज़रूरी है उस वैल्यू का नाम जो कॉन्फ़िगरेशन फ़्रैगमेंट से मिलने वाला है. |
depset
depset depset(direct=None, order="default", *, transitive=None)
direct
पैरामीटर, depset के डायरेक्ट एलिमेंट की सूची है. वहीं, transitive
पैरामीटर, उन depset की सूची है जिनके एलिमेंट, बनाए गए depset के इनडायरेक्ट एलिमेंट बन जाते हैं. depset को सूची में बदलने पर, एलिमेंट किस क्रम में दिखाए जाते हैं, यह order
पैरामीटर से तय होता है. ज़्यादा जानकारी के लिए, Depsets की खास जानकारी देखें.
किसी depset के सभी एलिमेंट (डायरेक्ट और इनडायरेक्ट) एक ही तरह के होने चाहिए, जैसा कि एक्सप्रेशन type(x)
से मिलता है.
हैश-आधारित सेट का इस्तेमाल, बार-बार होने वाली गड़बड़ियों को हटाने के लिए किया जाता है. इसलिए, किसी डिपेंडेंसी सेट के सभी एलिमेंट को हैश किया जा सकता है. हालांकि, फ़िलहाल सभी कन्स्ट्रक्टर में इस इनवैरिएंट की जांच लगातार नहीं की जाती. लगातार जांच करने की सुविधा चालू करने के लिए, --incompatible_always_check_depset_elements फ़्लैग का इस्तेमाल करें. आने वाले समय में रिलीज़ होने वाले वर्शन में, यह सुविधा डिफ़ॉल्ट रूप से चालू रहेगी. समस्या 10313 देखें.
इसके अलावा, फ़िलहाल एलिमेंट में बदलाव करने की गुंजाइश नहीं होनी चाहिए. हालांकि, आने वाले समय में इस पाबंदी को हटा दिया जाएगा.
बनाए गए depset का क्रम, उसके transitive
depsets के क्रम के साथ काम करना चाहिए. "default"
ऑर्डर, किसी भी अन्य ऑर्डर के साथ काम करता है. अन्य सभी ऑर्डर, सिर्फ़ अपने साथ काम करते हैं.
पैरामीटर
पैरामीटर | ब्यौरा |
---|---|
direct
|
sequence या None ;
डिफ़ॉल्ट तौर पर None होता है किसी depset के डायरेक्ट एलिमेंट की सूची. |
order
|
string;
डिफ़ॉल्ट तौर पर "default" होता है नए depset के लिए ट्रैवर्सल की रणनीति. संभावित वैल्यू के लिए, यहां देखें. |
transitive
|
sequence of depsets; या None ;
डिफ़ॉल्ट रूप से None होता है उन depset की सूची जिनके एलिमेंट, depset के इनडायरेक्ट एलिमेंट बन जाएंगे. |
exec_group
exec_group exec_group(toolchains=[], exec_compatible_with=[])
पैरामीटर
पैरामीटर | ब्यौरा |
---|---|
toolchains
|
sequence;
डिफ़ॉल्ट तौर पर [] होता है यह टूल चेन का वह सेट होता है जो इस एक्ज़ीक्यूशन ग्रुप के लिए ज़रूरी होता है. इस सूची में, स्ट्रिंग, लेबल या StarlarkToolchainTypeApi ऑब्जेक्ट, किसी भी कॉम्बिनेशन में शामिल हो सकते हैं. |
exec_compatible_with
|
sequence of strings;
डिफ़ॉल्ट तौर पर [] होता है यह, एक्ज़ीक्यूशन प्लैटफ़ॉर्म पर पाबंदियों की सूची होती है. |
exec_transition
transition exec_transition(implementation, inputs, outputs)
transition()
का एक खास वर्शन, जिसका इस्तेमाल एक्ज़ीक्यूशन ट्रांज़िशन तय करने के लिए किया जाता है. सबसे सही तरीके जानने के लिए, इसका दस्तावेज़ (या इसे लागू करने का तरीका) देखें. इसका इस्तेमाल सिर्फ़ Bazel के इन-बिल्ट फ़ंक्शन से किया जा सकता है.
पैरामीटर
पैरामीटर | ब्यौरा |
---|---|
implementation
|
कॉलेबल;
ज़रूरी है |
inputs
|
sequence of strings;
ज़रूरी है |
outputs
|
sequence of strings;
ज़रूरी है |
macro
macro macro(implementation, attrs={}, inherit_attrs=None, finalizer=False, doc=None)
BUILD
फ़ाइलों या मैक्रो (लेगसी या
सिंबल) में टारगेट तय करने के लिए बुलाया जा सकता है. ऐसा एक से ज़्यादा टारगेट के लिए किया जा सकता है.
macro(...)
से मिली वैल्यू को .bzl फ़ाइल में मौजूद किसी ग्लोबल वैरिएबल को असाइन करना ज़रूरी है. ग्लोबल वैरिएबल का जो नाम होगा, वही मैक्रो सिंबल का नाम होगा.
सिंबल मैक्रो इस्तेमाल करने के बारे में पूरी जानकारी के लिए, मैक्रो देखें.
पैरामीटर
पैरामीटर | ब्यौरा |
---|---|
implementation
|
function;
ज़रूरी है यह मैक्रो लागू करने वाला Starlark फ़ंक्शन है. मैक्रो के एट्रिब्यूट की वैल्यू, लागू करने वाले फ़ंक्शन को कीवर्ड आर्ग्युमेंट के तौर पर पास की जाती हैं. लागू करने वाले फ़ंक्शन में, कम से कम दो नाम वाले पैरामीटर, name और visibility होने चाहिए. अगर मैक्रो में एट्रिब्यूट इनहेरिट होते हैं (यहां inherit_attrs देखें), तो उसमें **kwargs अवशेष कीवर्ड पैरामीटर होना चाहिए.
आम तौर पर, लागू करने वाले फ़ंक्शन में, ऐसे किसी भी एट्रिब्यूट के लिए नाम वाला पैरामीटर होना चाहिए जिसकी जांच, बदलाव या "मुख्य" टारगेट को पास करने के लिए मैक्रो को ज़रूरत होती है. वहीं, "बल्क" इनहेरिट किए गए एट्रिब्यूट, जिन्हें "मुख्य" टारगेट को बिना बदलाव के पास किया जाएगा उन्हें लागू करने वाले फ़ंक्शन से कोई वैल्यू नहीं मिलनी चाहिए. इसके बजाय, लागू करने वाला फ़ंक्शन, नियम या मैक्रो सिंबल को कॉल करके टारगेट की जानकारी देता है. किसी सिंबल वाले मैक्रो से तय किए गए किसी भी टारगेट या अंदरूनी सिंबल वाले मैक्रो का नाम, डिफ़ॉल्ट रूप से, किसी सिंबल मैक्रो से तय किए गए टारगेट (इसमें वह Starlark फ़ंक्शन भी शामिल है जिसे मैक्रो का लागू करने वाला फ़ंक्शन ट्रांज़िटिव तरीके से कॉल करता है) सिर्फ़ उस पैकेज में दिखते हैं जिसमें मैक्रो की जानकारी देने वाली .bzl फ़ाइल होती है. सिंबल वाले मैक्रो को कॉल करने वाले व्यक्ति के साथ-साथ बाहरी लोगों को भी टारगेट दिखाने के लिए, लागू करने वाले फ़ंक्शन को नीचे दिए गए एपीआई, मैक्रो लागू करने वाले फ़ंक्शन और उस Starlark फ़ंक्शन में उपलब्ध नहीं हैं जिसे यह ट्रांज़िटिव तरीके से कॉल करता है:
|
attrs
|
dict;
डिफ़ॉल्ट रूप से {} होता है इस मैक्रो के साथ काम करने वाले एट्रिब्यूट की डिक्शनरी, जो rule.attrs से मिलती-जुलती है. कुंजियां, एट्रिब्यूट के नाम होती हैं और वैल्यू, attr.label_list(...) (attr मॉड्यूल देखें) या None जैसे एट्रिब्यूट ऑब्जेक्ट होती हैं. None एंट्री का मतलब है कि मैक्रो में उस नाम का कोई एट्रिब्यूट नहीं है. भले ही, उसे inherit_attrs के ज़रिए इनहेरिट किया गया हो (नीचे देखें).
खास जिन एट्रिब्यूट के नाम मेमोरी के इस्तेमाल को सीमित करने के लिए, तय किए जा सकने वाले एट्रिब्यूट की संख्या की सीमा तय है. |
inherit_attrs
|
rule; या macro; या string; या None ;
डिफ़ॉल्ट रूप से None है यह कोई नियम का चिह्न, मैक्रो का चिह्न या पहले से मौजूद सामान्य एट्रिब्यूट की सूची का नाम (नीचे देखें) होता है. मैक्रो को एट्रिब्यूट इसी सूची से इनहेरिट करने चाहिए. अगर ध्यान दें कि अगर इनहेरिटेंस का तरीका इस तरह काम करता है:
जब किसी ऐसे एट्रिब्यूट को इनहेरिट किया जाता है जो ज़रूरी नहीं है, तो एट्रिब्यूट की डिफ़ॉल्ट वैल्यू को उदाहरण के लिए, नीचे दिया गया मैक्रो, def _my_cc_library_impl(name, visibility, tags, **kwargs): # Append a tag; tags attr was inherited from native.cc_library, and # therefore is None unless explicitly set by the caller of my_cc_library() my_tags = (tags or []) + ["my_custom_tag"] native.cc_library( name = name, visibility = visibility, tags = my_tags, **kwargs ) my_cc_library = macro( implementation = _my_cc_library_impl, inherit_attrs = native.cc_library, attrs = { "cxxopts": None, "copts": attr.string_list(default = ["-D_FOO"]), }, ) अगर आम तौर पर, मैक्रो को इनहेरिट किए गए और बदले नहीं गए एट्रिब्यूट को "मुख्य" नियम या मैक्रो सिंबल में पास करना चाहिए. आम तौर पर, इनहेरिट किए गए ज़्यादातर एट्रिब्यूट के लिए, लागू करने वाले फ़ंक्शन की पैरामीटर सूची में कोई पैरामीटर नहीं होगा. साथ ही, उन्हें |
finalizer
|
bool;
डिफ़ॉल्ट रूप से False होता है यह मैक्रो, नियम फ़ाइनलाइज़र है या नहीं. यह एक ऐसा मैक्रो होता है जिसका आकलन, पैकेज लोड होने के आखिर में किया जाता है. भले ही, वह BUILD फ़ाइल में कहीं भी हो. ऐसा तब किया जाता है, जब सभी नॉन-फ़ाइनलाइज़र टारगेट तय कर लिए जाते हैं.
सामान्य सिंबॉलिक मैक्रो के उलट, नियम फ़ाइनलाइज़र, मौजूदा पैकेज में तय किए गए नॉन-फ़ाइनलाइज़र नियम टारगेट के सेट की क्वेरी करने के लिए, |
doc
|
string; or None ;
डिफ़ॉल्ट रूप से None होता है मैक्रो की जानकारी, जिसे दस्तावेज़ जनरेट करने वाले टूल से निकाला जा सकता है. |
module_extension
unknown module_extension(implementation, *, tag_classes={}, doc=None, environ=[], os_dependent=False, arch_dependent=False)
use_extension
के साथ MODULE.bazel फ़ाइल में इस्तेमाल किया जा सके.
पैरामीटर
पैरामीटर | ब्यौरा |
---|---|
implementation
|
कॉलेबल;
ज़रूरी है यह वह फ़ंक्शन है जो इस मॉड्यूल एक्सटेंशन को लागू करता है. इसमें एक पैरामीटर होना चाहिए, module_ctx . उपलब्ध रिपॉज़िटरी का सेट तय करने के लिए, फ़ंक्शन को बिल्ड की शुरुआत में एक बार कॉल किया जाता है.
|
tag_classes
|
dict;
डिफ़ॉल्ट रूप से {} होता है यह एक्सटेंशन में इस्तेमाल की जाने वाली सभी टैग क्लास की जानकारी देने वाली डिक्शनरी है. यह टैग क्लास के नाम से tag_class ऑब्जेक्ट पर मैप करता है.
|
doc
|
string; या None ;
डिफ़ॉल्ट रूप से None होता है मॉड्यूल एक्सटेंशन की जानकारी, जिसे दस्तावेज़ जनरेट करने वाले टूल से निकाला जा सकता है. |
environ
|
sequence of strings;
डिफ़ॉल्ट तौर पर [] होता है एनवायरमेंट वैरिएबल की वह सूची उपलब्ध कराता है जिस पर यह मॉड्यूल एक्सटेंशन निर्भर करता है. अगर उस सूची में कोई एनवायरमेंट वैरिएबल बदलता है, तो एक्सटेंशन का फिर से आकलन किया जाएगा. |
os_dependent
|
bool;
डिफ़ॉल्ट रूप से False पर सेट होता है इससे पता चलता है कि यह एक्सटेंशन, ओएस पर निर्भर है या नहीं |
arch_dependent
|
bool;
डिफ़ॉल्ट रूप से False पर सेट होता है इससे पता चलता है कि यह एक्सटेंशन, आर्किटेक्चर पर निर्भर है या नहीं |
provider
unknown provider(doc=None, *, fields=None, init=None)
MyInfo = provider() ... def _my_library_impl(ctx): ... my_info = MyInfo(x = 2, y = 3) # my_info.x == 2 # my_info.y == 3 ...
सेवा देने वाली कंपनियों का इस्तेमाल करने के तरीके के बारे में पूरी जानकारी के लिए, नियम (सेवा देने वाली कंपनियां) देखें.
अगर init
तय नहीं किया गया है, तो Provider
को कॉल की जा सकने वाली वैल्यू के तौर पर दिखाता है.
अगर init
दिया गया है, तो यह दो एलिमेंट का ट्यूपल दिखाता है: Provider
की कॉल की जा सकने वाली वैल्यू और रॉ कंस्ट्रक्टर की कॉल की जा सकने वाली वैल्यू. ज़्यादा जानकारी के लिए, नियम (कस्टम प्रोवाइडर का कस्टम तरीके से शुरू होना) और नीचे init
पैरामीटर के बारे में चर्चा देखें.
पैरामीटर
पैरामीटर | ब्यौरा |
---|---|
doc
|
string; या None ;
डिफ़ॉल्ट तौर पर None है सेवा देने वाली कंपनी की जानकारी, जिसे दस्तावेज़ जनरेट करने वाले टूल से निकाला जा सकता है. |
fields
|
sequence of strings; या dict; या None ;
डिफ़ॉल्ट तौर पर None होता है अगर यह तय होता है, तो अनुमति वाले फ़ील्ड के सेट पर पाबंदी लगा दी जाती है. इन वैल्यू का इस्तेमाल किया जा सकता है:
|
init
|
कॉलेबल; या None ;
डिफ़ॉल्ट तौर पर None होता है प्रोवाइडर के फ़ील्ड की वैल्यू को पहले से प्रोसेस करने और इंस्टैंशिएशन के दौरान उनकी पुष्टि करने के लिए, एक वैकल्पिक कॉलबैक. अगर init दिया गया है, तो provider() दो एलिमेंट का ट्यूपल दिखाता है: सामान्य प्रोवाइडर सिंबल और रॉ कन्स्ट्रक्टर.इसके बारे में यहां पूरी जानकारी दी गई है. इस बारे में बेहतर तरीके से जानने और इस्तेमाल के उदाहरणों के लिए, नियम (प्रोवाइडर के कस्टम तरीके से शुरू होने की प्रोसेस) देखें. मान लें कि
init को कॉलबैक न किया गया हो, तो सिंबल P को कॉल करने पर, डिफ़ॉल्ट कंस्ट्रक्टर फ़ंक्शन c को कॉल किया जाता है. दूसरे शब्दों में, P(*args, **kwargs) c(*args, **kwargs) दिखाता है. उदाहरण के लिए,MyInfo = provider() m = MyInfo(foo = 1) m को m.foo == 1 वाला MyInfo इंस्टेंस बनाया जा सके.हालांकि, अगर
अहम जानकारी: ऊपर दिए गए चरणों से पता चलता है कि अगर इस तरह,
MyInfo, _new_myinfo = provider(init = ...) |
repository_rule
callable repository_rule(implementation, *, attrs=None, local=False, environ=[], configure=False, remotable=False, doc=None)
module_extension()
लागू करने वाले फ़ंक्शन से लोड और कॉल किया जा सके या use_repo_rule()
का इस्तेमाल किया जा सके.
पैरामीटर
पैरामीटर | ब्यौरा |
---|---|
implementation
|
कॉलेबल;
ज़रूरी है यह वह फ़ंक्शन है जो इस नियम को लागू करता है. इसमें एक पैरामीटर, repository_ctx होना चाहिए. फ़ंक्शन को नियम के हर इंस्टेंस के लिए, लोडिंग फ़ेज़ के दौरान कॉल किया जाता है.
|
attrs
|
dict या None ;
डिफ़ॉल्ट तौर पर None यह एक डिक्शनरी है, जिसमें डेटाबेस नियम के सभी एट्रिब्यूट की जानकारी होती है. यह एट्रिब्यूट के नाम को एट्रिब्यूट ऑब्जेक्ट से मैप करता है ( attr मॉड्यूल देखें). _ से शुरू होने वाले एट्रिब्यूट निजी होते हैं. इनका इस्तेमाल, किसी फ़ाइल में लेबल पर लागू होने वाली डिपेंडेंसी जोड़ने के लिए किया जा सकता है. डेटाबेस का नियम, जनरेट किए गए आर्टफ़ैक्ट पर निर्भर नहीं हो सकता. name एट्रिब्यूट अपने-आप जुड़ जाता है और इसकी वैल्यू सबमिट करने की ज़रूरत नहीं होती.
एट्रिब्यूट की वैल्यू सबमिट करने पर, |
local
|
bool;
डिफ़ॉल्ट False होता है यह बताते हैं यह नियम, सबकुछ स्थानीय सिस्टम से फ़ेच करता है और हर फ़ेच के बाद, इसका फिर से आकलन किया जाना चाहिए. |
environ
|
sequence of strings;
डिफ़ॉल्ट [] होता है अब इस्तेमाल नहीं किया जा सकता. इस पैरामीटर का इस्तेमाल बंद कर दिया गया है. इसके बजाय, repository_ctx.getenv पर माइग्रेट करें.इससे, एनवायरमेंट वैरिएबल की सूची मिलती है, जिस पर यह डेटाबेस नियम निर्भर करता है. अगर उस सूची में कोई एनवायरमेंट वैरिएबल बदलता है, तो डेटाबेस को फिर से फ़ेच किया जाएगा. |
configure
|
bool;
डिफ़ॉल्ट रूप से False होता है यह बताते हैं कि डेटाबेस, कॉन्फ़िगरेशन के मकसद से सिस्टम की जांच करता है |
remotable
|
bool;
डिफ़ॉल्ट रूप से False होता है एक्सपेरिमेंट के तौर पर उपलब्ध है. यह पैरामीटर एक्सपेरिमेंट के तौर पर उपलब्ध है. इसमें कभी भी बदलाव किया जा सकता है. कृपया इसके भरोसे न रहें. इसे एक्सपेरिमेंट के तौर पर चालू किया जा सकता है. इसके लिए, --experimental_repo_remote_exec को सेट करना होगा. यह रिमोट एक्ज़ीक्यूशन के साथ काम करता है |
doc
|
string या None ;
डिफ़ॉल्ट रूप से None है डेटाबेस के नियम की जानकारी, जिसे दस्तावेज़ जनरेट करने वाले टूल से निकाला जा सकता है. |
नियम
callable rule(implementation, *, test=unbound, attrs={}, outputs=None, executable=unbound, output_to_genfiles=False, fragments=[], host_fragments=[], _skylark_testable=False, toolchains=[], incompatible_use_toolchain_transition=False, doc=None, provides=[], dependency_resolution_rule=False, exec_compatible_with=[], analysis_test=False, build_setting=None, cfg=None, exec_groups=None, initializer=None, parent=None, extendable=None, subrules=[])
नियमों को .bzl फ़ाइल में ग्लोबल वैरिएबल को असाइन किया जाना चाहिए. जो ग्लोबल वैरिएबल का नाम होता है, वही नियम का नाम होता है.
जांच के नियमों का नाम _test
पर खत्म होना चाहिए. हालांकि, अन्य सभी नियमों का नाम ऐसा नहीं होना चाहिए. (यह पाबंदी सिर्फ़ नियमों पर लागू होती है, उनके टारगेट पर नहीं.)
पैरामीटर
पैरामीटर | ब्यौरा |
---|---|
implementation
|
function;
ज़रूरी है इस नियम को लागू करने वाले Starlark फ़ंक्शन में, सिर्फ़ एक पैरामीटर होना चाहिए: ctx. फ़ंक्शन को नियम के हर इंस्टेंस के लिए, विश्लेषण के फ़ेज़ के दौरान कॉल किया जाता है यह उपयोगकर्ता के दिए गए एट्रिब्यूट को ऐक्सेस कर सकता है. यह ऐक्शन बनाकर, तय किए गए सभी आउटपुट जनरेट करेगा. |
test
|
bool;
डिफ़ॉल्ट तौर पर unbound होता है यह नियम, जांच के लिए बनाया गया है या नहीं. इसका मतलब है कि क्या यह blaze test निर्देश का विषय हो सकता है. सभी टेस्ट नियमों को अपने-आप एक्ज़ीक्यूटेबल माना जाता है. किसी टेस्ट नियम के लिए, executable = True को साफ़ तौर पर सेट करना ज़रूरी नहीं है और ऐसा करने का सुझाव भी नहीं दिया जाता. डिफ़ॉल्ट रूप से, इसकी वैल्यू False होती है. ज़्यादा जानकारी के लिए, नियमों का पेज देखें.
|
attrs
|
dict;
डिफ़ॉल्ट तौर पर {} होता है नियम के सभी एट्रिब्यूट की जानकारी देने वाली डिक्शनरी. यह एट्रिब्यूट के नाम को एट्रिब्यूट ऑब्जेक्ट से मैप करता है ( attr मॉड्यूल देखें). _ से शुरू होने वाले एट्रिब्यूट निजी होते हैं. इनका इस्तेमाल, किसी लेबल पर लागू होने वाली डिपेंडेंसी को जोड़ने के लिए किया जा सकता है. name एट्रिब्यूट अपने-आप जुड़ जाता है और इसकी वैल्यू सबमिट करने की ज़रूरत नहीं होती. visibility , deprecation , tags , testonly , और features एट्रिब्यूट अपने-आप जुड़ जाते हैं और इन्हें बदला नहीं जा सकता. ज़्यादातर नियमों के लिए, कुछ ही एट्रिब्यूट की ज़रूरत होती है. मेमोरी के इस्तेमाल को सीमित करने के लिए, एट्रिब्यूट की संख्या तय की गई है.
एट्रिब्यूट की वैल्यू सबमिट करने पर, |
outputs
|
dict; या None ; या function;
डिफ़ॉल्ट रूप से None होता है अब इस्तेमाल नहीं किया जा सकता. यह पैरामीटर अब काम नहीं करता. इसे जल्द ही हटा दिया जाएगा. कृपया इसके भरोसे न रहें. --incompatible_no_rule_outputs_param के साथ, यह बंद है. इस फ़्लैग का इस्तेमाल करके पुष्टि करें कि आपके कोड, इस जल्द ही हटाए जाने वाले फ़ैसले से कोई दिक्कत नहीं होगी. इस पैरामीटर का इस्तेमाल बंद कर दिया गया है. इसके बजाय, OutputGroupInfo या attr.output का इस्तेमाल करने के लिए, नियमों को माइग्रेट करें. पहले से तय किए गए आउटपुट तय करने के लिए स्कीमा. इस आर्ग्युमेंट की वैल्यू, कोई डिक्शनरी या डिक्शनरी बनाने वाली कोई कॉलबैक फ़ंक्शन होती है. कॉलबैक, कैलकुलेट किए गए डिपेंडेंसी एट्रिब्यूट की तरह ही काम करता है: फ़ंक्शन के पैरामीटर के नाम, नियम के एट्रिब्यूट से मैच किए जाते हैं. उदाहरण के लिए, अगर आपने परिभाषा डिक्शनरी में हर एंट्री से, पहले से तय किया गया आउटपुट बनता है. इसमें, की एक आइडेंटिफ़ायर होती है और वैल्यू एक स्ट्रिंग टेंप्लेट होती है. इससे आउटपुट का लेबल तय होता है. नियम लागू करने वाले फ़ंक्शन में, आइडेंटिफ़ायर फ़ील्ड का नाम बन जाता है. इसका इस्तेमाल,
आम तौर पर, बदले जाने वाले वैल्यू के लिए सबसे ज़्यादा इस्तेमाल किया जाने वाला प्लेसहोल्डर |
executable
|
bool;
डिफ़ॉल्ट रूप से unbound होता है यह तय करता है कि इस नियम को लागू किया जा सकता है या नहीं. इसका मतलब है कि क्या यह blaze run निर्देश का विषय हो सकता है. यह डिफ़ॉल्ट रूप से False पर सेट होता है. ज़्यादा जानकारी के लिए, नियमों का पेज देखें.
|
output_to_genfiles
|
bool;
डिफ़ॉल्ट तौर पर, इसकी वैल्यू False होती है अगर इसकी वैल्यू 'सही' है, तो फ़ाइलें bin डायरेक्ट्री के बजाय genfiles डायरेक्ट्री में जनरेट होंगी. अगर आपको मौजूदा नियमों के साथ काम करने के लिए इसकी ज़रूरत नहीं है, तो इस फ़्लैग को सेट न करें. उदाहरण के लिए, C++ के लिए हेडर फ़ाइलें जनरेट करते समय. |
fragments
|
sequence of strings;
डिफ़ॉल्ट रूप से [] है उन कॉन्फ़िगरेशन फ़्रैगमेंट के नामों की सूची जिनकी टारगेट कॉन्फ़िगरेशन में नियम के लिए ज़रूरत होती है. |
host_fragments
|
sequence of strings;
डिफ़ॉल्ट रूप से [] होता है उन कॉन्फ़िगरेशन फ़्रैगमेंट के नामों की सूची जिनकी ज़रूरत होस्ट कॉन्फ़िगरेशन में नियम के लिए होती है. |
_skylark_testable
|
bool;
डिफ़ॉल्ट रूप से False (प्रयोग के तौर पर उपलब्ध) अगर यह 'सही' है, तो यह नियम Actions प्रोवाइडर के ज़रिए, उन नियमों की जांच के लिए अपनी कार्रवाइयों को ज़ाहिर करेगा जो इस पर निर्भर हैं. ctx.created_actions() को कॉल करके, नियम के लिए भी प्रोवाइडर उपलब्ध है.इसका इस्तेमाल सिर्फ़ Starlark नियमों के विश्लेषण के समय के व्यवहार की जांच करने के लिए किया जाना चाहिए. आने वाले समय में, इस फ़्लैग को हटाया जा सकता है. |
toolchains
|
sequence;
डिफ़ॉल्ट तौर पर [] सेट होता है अगर सेट किया जाता है, तो इस नियम के लिए ज़रूरी टूल चेन का सेट. इस सूची में, स्ट्रिंग, लेबल या StarlarkToolchainTypeApi ऑब्जेक्ट, किसी भी कॉम्बिनेशन में शामिल हो सकते हैं. मौजूदा प्लैटफ़ॉर्म की जांच करके टूल चेन ढूंढे जाएंगे और ctx.toolchain के ज़रिए नियम लागू करने के लिए उपलब्ध कराए जाएंगे.
|
incompatible_use_toolchain_transition
|
bool;
डिफ़ॉल्ट रूप से False होता है इस्तेमाल नहीं किया जाता. इसे हटा दिया जाना चाहिए. |
doc
|
स्ट्रिंग या None ;
डिफ़ॉल्ट रूप से None होता है नियम की जानकारी, जिसे दस्तावेज़ जनरेट करने वाले टूल से निकाला जा सकता है. |
provides
|
sequence;
डिफ़ॉल्ट रूप से [] होता है सेवा देने वाली उन कंपनियों की सूची जिन्हें लागू करने वाले फ़ंक्शन को दिखाना चाहिए. अगर लागू करने वाले फ़ंक्शन में, यहां दी गई सूची में शामिल किसी भी तरह के प्रोवाइडर को रिटर्न वैल्यू से हटा दिया जाता है, तो यह गड़बड़ी होती है. हालांकि, लागू करने वाले फ़ंक्शन की रिटर्न वैल्यू में ऐसे अन्य प्रोवाइडर भी मिल सकते हैं जो यहां नहीं दिए गए हैं. सूची का हर एलिमेंट, |
dependency_resolution_rule
|
bool;
डिफ़ॉल्ट तौर पर False होता है अगर सेट किया जाता है, तो नियम, एट्रिब्यूट के ज़रिए डिपेंडेंसी हो सकता है. साथ ही, इसे मटीरियलाइज़र में उपलब्ध के तौर पर भी मार्क किया जाता है. इस फ़्लैग सेट वाले नियमों के हर एट्रिब्यूट को, मेटालिज़र में भी उपलब्ध के तौर पर मार्क किया जाना चाहिए. ऐसा इसलिए है, ताकि मार्क किए गए नियम, मार्क नहीं किए गए नियमों पर निर्भर न हों. |
exec_compatible_with
|
स्ट्रिंग का क्रम;
डिफ़ॉल्ट रूप से [] होता है लागू करने वाले प्लैटफ़ॉर्म पर पाबंदियों की सूची, जो इस तरह के नियम के सभी टारगेट पर लागू होती हैं. |
analysis_test
|
bool;
डिफ़ॉल्ट रूप से False होता है अगर यह 'सही' है, तो इस नियम को विश्लेषण टेस्ट के तौर पर माना जाता है. ध्यान दें: विश्लेषण की जांच के नियमों को मुख्य तौर पर, Starlark की मुख्य लाइब्रेरी में दिए गए इन्फ़्रास्ट्रक्चर का इस्तेमाल करके तय किया जाता है. दिशा-निर्देशों के लिए, जांच करना लेख पढ़ें. अगर किसी नियम को विश्लेषण टेस्ट नियम के तौर पर तय किया जाता है, तो उसके एट्रिब्यूट पर analysis_test_transition का इस्तेमाल करके तय किए गए कॉन्फ़िगरेशन ट्रांज़िशन का इस्तेमाल किया जा सकता है. हालांकि, यह कुछ पाबंदियों के साथ काम करता है:
|
build_setting
|
BuildSetting या None ;
डिफ़ॉल्ट तौर पर None है अगर यह सेट है, तो यह बताता है कि यह नियम किस तरह का build setting है. config मॉड्यूल देखें. अगर यह सेट है, तो इस नियम में "build_setting_default" नाम का ज़रूरी एट्रिब्यूट अपने-आप जुड़ जाता है. यह एट्रिब्यूट, यहां दी गई वैल्यू के हिसाब से टाइप के साथ जुड़ता है.
|
cfg
|
डिफ़ॉल्ट रूप से None होता है अगर यह सेट है, तो यह उस कॉन्फ़िगरेशन ट्रांज़िशन को दिखाता है जिसपर विश्लेषण से पहले, नियम अपने कॉन्फ़िगरेशन पर लागू होगा. |
exec_groups
|
dict या None ;
डिफ़ॉल्ट रूप से None होता है एक डिक्शनरी, जिसमें एक्ज़ीक्यूशन ग्रुप का नाम (स्ट्रिंग) exec_group में बदला जाता है. अगर यह सेट होता है, तो नियमों को एक ही टारगेट में, कई एक्ज़ीक्यूशन प्लैटफ़ॉर्म पर कार्रवाइयां चलाने की अनुमति मिलती है. ज़्यादा जानकारी के लिए, एक्ज़ीक्यूशन ग्रुप का दस्तावेज़ देखें.
|
initializer
|
डिफ़ॉल्ट रूप से None होता है एक्सपेरिमेंटल: Stalark फ़ंक्शन, नियम के एट्रिब्यूट को शुरू करता है. फ़ंक्शन को नियम के हर इंस्टेंस के लिए, लोड होने के समय कॉल किया जाता है. इसे यह एट्रिब्यूट के नामों से, पसंदीदा वैल्यू वाली डिक्शनरी दिखाता है. जिन एट्रिब्यूट की वैल्यू नहीं दिखाई जाती उन पर कोई असर नहीं पड़ता. वैल्यू के तौर पर किसी एट्रिब्यूट की परिभाषा में दी गई डिफ़ॉल्ट वैल्यू से पहले, इनिशिएलाइज़र का आकलन किया जाता है. इसलिए, अगर इनिशलाइज़र के सिग्नेचर में कोई पैरामीटर डिफ़ॉल्ट वैल्यू के साथ है, तो यह एट्रिब्यूट की परिभाषा से डिफ़ॉल्ट वैल्यू को बदल देता है. हालांकि, इसी तरह, अगर किसी पैरामीटर के लिए डिफ़ॉल्ट वैल्यू नहीं दी गई है, तो उसे पैरामीटर के तौर पर इस्तेमाल करना ज़रूरी हो जाएगा. ऐसे मामलों में, एट्रिब्यूट की परिभाषा में डिफ़ॉल्ट/ज़रूरी सेटिंग को हटाना अच्छा होता है. जिन एट्रिब्यूट को मैनेज नहीं किया जाता उनके लिए एक्सटेंड किए गए नियमों के मामले में, सभी इनिशलाइज़र को चाइल्ड से लेकर पैरंट तक के क्रम में कॉल किया जाता है. हर इनिशलाइज़र को सिर्फ़ वे सार्वजनिक एट्रिब्यूट पास किए जाते हैं जिनके बारे में उसे पता होता है. |
parent
|
डिफ़ॉल्ट रूप से None पर सेट होता है एक्सपेरिमेंटल: Stalark का वह नियम जिसे एक्सटेंड किया गया है. सेट होने पर, सार्वजनिक एट्रिब्यूट और विज्ञापन देने वाली कंपनियों को मर्ज कर दिया जाता है. यह नियम, पैरंट से executable और test से मैच करता है. fragments , toolchains , exec_compatible_with , और exec_groups की वैल्यू मर्ज हो जाती हैं. लेगसी या ऐसे पैरामीटर सेट नहीं किए जा सकते जो काम नहीं कर रहे हैं. पैरंट के इनकमिंग कॉन्फ़िगरेशन ट्रांज़िशन cfg को, thisrule के इनकमिंग कॉन्फ़िगरेशन के बाद लागू किया जाता है.
|
extendable
|
bool; या Label; या string; या None ;
डिफ़ॉल्ट रूप से None होता है एक्सपेरिमेंटल: अनुमति वाली सूची का लेबल, जो यह तय करता है कि कौनसे नियम इस नियम को बढ़ा सकते हैं. इसे True/False पर भी सेट किया जा सकता है, ताकि समयसीमा बढ़ाने की अनुमति हमेशा दी जा सके या हमेशा से रोकी जा सके. Bazel, डिफ़ॉल्ट रूप से एक्सटेंशन को हमेशा अनुमति देता है. |
subrules
|
sequence of Subrules;
डिफ़ॉल्ट रूप से [] होता है एक्सपेरिमेंटल: इस नियम में इस्तेमाल किए गए सबनियमों की सूची. |
select
unknown select(x, no_match_error='')
select()
एक हेल्पर फ़ंक्शन है, जो नियम एट्रिब्यूट को कॉन्फ़िगर करने लायक बनाता है. ज़्यादा जानकारी के लिए, एनसाइक्लोपीडिया बनाना लेख पढ़ें.
पैरामीटर
पैरामीटर | ब्यौरा |
---|---|
x
|
dict;
ज़रूरी है एक डिक्शनरी, जो कॉन्फ़िगरेशन की शर्तों को वैल्यू पर मैप करती है. हर कुंजी एक लेबल या लेबल स्ट्रिंग होती है, जो config_setting या constraint_value इंस्टेंस की पहचान करती है. स्ट्रिंग के बजाय लेबल का इस्तेमाल कब करना है, यह जानने के लिए मैक्रो के बारे में दस्तावेज़ देखें. |
no_match_error
|
string;
डिफ़ॉल्ट रूप से '' होता है कोई शर्त मेल न खाने पर, रिपोर्ट करने के लिए वैकल्पिक कस्टम गड़बड़ी. |
सबनियम
Subrule subrule(implementation, attrs={}, toolchains=[], fragments=[], subrules=[])
पैरामीटर
पैरामीटर | ब्यौरा |
---|---|
implementation
|
function;
ज़रूरी है यह सबनियम लागू करने वाला Starlark फ़ंक्शन |
attrs
|
dict;
डिफ़ॉल्ट तौर पर {} होता है यह एक डिक्शनरी है, जिसमें सबनियम के सभी (निजी) एट्रिब्यूट की जानकारी होती है. सबनियमों में सिर्फ़ निजी लेबल वाले एट्रिब्यूट शामिल किए जा सकते हैं. जैसे, लेबल या लेबल-लिस्ट. इन लेबल से जुड़ी हल की गई वैल्यू, Bazel अपने-आप सबनियम के लागू करने वाले फ़ंक्शन में नाम वाले आर्ग्युमेंट के तौर पर भेज देता है. इसलिए, लागू करने वाले फ़ंक्शन को एट्रिब्यूट के नाम से मैच करने वाले नाम वाले पैरामीटर स्वीकार करने होंगे. इन वैल्यू के टाइप ये होंगे:
|
toolchains
|
sequence;
डिफ़ॉल्ट तौर पर [] सेट होता है अगर सेट किया जाता है, तो इस सबनियम के लिए ज़रूरी टूल चेन का सेट. इस सूची में, स्ट्रिंग, लेबल या StarlarkToolchainTypeApi ऑब्जेक्ट, किसी भी कॉम्बिनेशन में शामिल हो सकते हैं. मौजूदा प्लैटफ़ॉर्म की जांच करके टूल चेन ढूंढे जाएंगे और ctx.toolchains के ज़रिए सबनियम लागू करने के लिए उपलब्ध कराए जाएंगे. ध्यान दें कि अगर यह पैरामीटर सेट है, तो डेटा का इस्तेमाल करने वाले नियमों पर एईजी चालू होने चाहिए. अगर आपने अब तक एईजी पर माइग्रेट नहीं किया है, तो https://bazel.build/extending/auto-exec-groups#migration-aegs देखें.
|
fragments
|
sequence of strings;
डिफ़ॉल्ट [] होता है कॉन्फ़िगरेशन के उन फ़्रैगमेंट के नामों की सूची जिनकी टारगेट कॉन्फ़िगरेशन में सबनियम को ज़रूरत होती है |
subrules
|
sequence of Subrules;
डिफ़ॉल्ट [] होता है इस सबनियम के लिए ज़रूरी अन्य सबनियमों की सूची. |
tag_class
tag_class tag_class(attrs={}, *, doc=None)
पैरामीटर
पैरामीटर | ब्यौरा |
---|---|
attrs
|
dict;
डिफ़ॉल्ट रूप से {} होता है इस टैग क्लास के सभी एट्रिब्यूट की जानकारी देने के लिए डिक्शनरी. यह किसी एट्रिब्यूट के नाम को एट्रिब्यूट ऑब्जेक्ट से मैप करता है. attr मॉड्यूल देखें. ध्यान दें कि |
doc
|
string; या None ;
डिफ़ॉल्ट रूप से None होते हैं टैग क्लास की जानकारी, जिसे दस्तावेज़ जनरेट करने वाले टूल से निकाला जा सकता है. |
visibility
None
visibility(value)
फ़िलहाल, जिस .bzl मॉड्यूल को शुरू किया जा रहा है उसकी लोड विज़िबिलिटी सेट करता है.
मॉड्यूल के लोड होने की सेटिंग से यह तय होता है कि अन्य BUILD और .bzl फ़ाइलें उसे लोड कर सकती हैं या नहीं. (यह, .bzl सोर्स फ़ाइल के टारगेट के दिखने से अलग है. इससे यह तय होता है कि फ़ाइल, दूसरे टारगेट की डिपेंडेंसी के तौर पर दिख सकती है या नहीं.) लोड दिखने की सुविधा, पैकेज के लेवल पर काम करती है: किसी मॉड्यूल को लोड करने के लिए, लोड करने वाली फ़ाइल को उस पैकेज में होना चाहिए जिसे मॉड्यूल को दिखने की अनुमति दी गई है. किसी मॉड्यूल को उसके पैकेज में हमेशा लोड किया जा सकता है. भले ही, वह दिख रहा हो या नहीं.
visibility()
को हर .bzl फ़ाइल में सिर्फ़ एक बार और सिर्फ़ टॉप लेवल पर कॉल किया जा सकता है, न कि किसी फ़ंक्शन में. इस कॉल को load()
स्टेटमेंट और आर्ग्युमेंट तय करने के लिए ज़रूरी छोटे लॉजिक के ठीक नीचे रखना सबसे सही है.
अगर फ़्लैग --check_bzl_visibility
को 'गलत है' पर सेट किया जाता है, तो लोड विज़िबिलिटी के उल्लंघनों से चेतावनियां मिलेंगी, लेकिन बिल्ड पूरा हो जाएगा.
पैरामीटर
पैरामीटर | ब्यौरा |
---|---|
value
|
ज़रूरी है पैकेज की जानकारी देने वाली स्ट्रिंग की सूची या पैकेज की जानकारी देने वाली एक स्ट्रिंग. पैकेज की खास बातों के लिए, वही फ़ॉर्मैट इस्तेमाल किया जाता है जो
"@" सिंटैक्स का इस्तेमाल नहीं किया जा सकता. सभी खास बातों को मौजूदा मॉड्यूल के डेटाबेस के हिसाब से समझा जाता है. अगर ध्यान दें कि फ़्लैग |