सदस्य
- depset
- existing_rule
- existing_rules
- exports_files
- glob
- module_name
- module_version
- package
- package_default_visibility
- package_group
- package_name
- package_relative_label
- repo_name
- repository_name
- select
- सबपैकेज
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 के इनडायरेक्ट एलिमेंट बन जाएंगे. |
existing_rule
unknown existing_rule(name)
None दिखाता है.यहां, बदलाव न किया जा सकने वाला डिक्शनरी जैसा ऑब्जेक्ट का मतलब, बदलाव न किया जा सकने वाला ऐसा ऑब्जेक्ट x है जो डिक्शनरी जैसे इटरेशन, len(x), name in x, x[name], x.get(name), x.items(), x.keys(), और x.values() के साथ काम करता है.
नतीजे में हर एट्रिब्यूट के लिए एक एंट्री होती है. हालांकि, इसमें निजी एट्रिब्यूट (जिनके नाम किसी अक्षर से शुरू नहीं होते) और कुछ ऐसे लेगसी एट्रिब्यूट टाइप शामिल नहीं होते जिन्हें दिखाया नहीं जा सकता. इसके अलावा, डिक्शनरी में नियम के इंस्टेंस के name और kind के लिए एंट्री भी शामिल होती हैं. उदाहरण के लिए, 'cc_binary'.
नतीजे की वैल्यू, एट्रिब्यूट की वैल्यू को इस तरह दिखाती हैं:
- str, int, और bool टाइप की विशेषताओं को वैसे ही दिखाया जाता है.
- लेबल को
':foo'फ़ॉर्मैट वाली स्ट्रिंग में बदल दिया जाता है. यह फ़ॉर्मैट, एक ही पैकेज में मौजूद टारगेट के लिए होता है. वहीं, अलग-अलग पैकेज में मौजूद टारगेट के लिए, लेबल को'//pkg:name'फ़ॉर्मैट वाली स्ट्रिंग में बदल दिया जाता है. - सूचियों को टपल के तौर पर दिखाया जाता है. साथ ही, डिक्शनरी को नई और बदली जा सकने वाली डिक्शनरी में बदल दिया जाता है. इनके एलिमेंट को भी उसी तरीके से बार-बार बदला जाता है.
selectवैल्यू को ऊपर बताए गए तरीके से बदलकर दिखाया जाता है.- जिन एट्रिब्यूट के लिए नियम को इंस्टैंशिएट करते समय कोई वैल्यू नहीं दी गई थी और जिनकी डिफ़ॉल्ट वैल्यू का हिसाब लगाया गया है उन्हें नतीजे में शामिल नहीं किया जाता. (विश्लेषण के चरण तक, डिफ़ॉल्ट वैल्यू का हिसाब नहीं लगाया जा सकता.).
अगर हो सके, तो इस फ़ंक्शन का इस्तेमाल सिर्फ़ नियम फ़ाइनलाइज़र सिंबॉलिक मैक्रो के लागू करने वाले फ़ंक्शन में करें. हमारा सुझाव है कि इस फ़ंक्शन का इस्तेमाल अन्य संदर्भों में न करें. साथ ही, Bazel की आने वाली रिलीज़ में इसे बंद कर दिया जाएगा. इससे BUILD फ़ाइलें कमज़ोर हो जाती हैं और क्रम पर निर्भर हो जाती हैं. यह भी ध्यान रखें कि यह, नियम एट्रिब्यूट की वैल्यू को इंटरनल फ़ॉर्म से Starlark में बदलने वाले दो अन्य कन्वर्ज़न से थोड़ा अलग होता है: एक का इस्तेमाल कंप्यूट की गई डिफ़ॉल्ट वैल्यू के लिए किया जाता है और दूसरे का इस्तेमाल ctx.attr.foo के लिए किया जाता है.
पैरामीटर
| पैरामीटर | ब्यौरा |
|---|---|
name
|
string;
ज़रूरी है टारगेट का नाम. |
existing_rules
unknown existing_rules()
existing_rule(name) से मिलेगा.यहां, बदलाव न किया जा सकने वाला डिक्शनरी जैसा ऑब्जेक्ट का मतलब, बदलाव न किया जा सकने वाला ऐसा ऑब्जेक्ट x है जो डिक्शनरी जैसे इटरेशन, len(x), name in x, x[name], x.get(name), x.items(), x.keys(), और x.values() के साथ काम करता है.
अगर हो सके, तो इस फ़ंक्शन का इस्तेमाल सिर्फ़ नियम फ़ाइनलाइज़र सिंबॉलिक मैक्रो के लागू करने वाले फ़ंक्शन में करें. हमारा सुझाव है कि इस फ़ंक्शन का इस्तेमाल अन्य संदर्भों में न करें. साथ ही, Bazel की आने वाली रिलीज़ में इसे बंद कर दिया जाएगा. इससे BUILD फ़ाइलें कमज़ोर हो जाती हैं और क्रम पर निर्भर हो जाती हैं.
exports_files
None exports_files(srcs, visibility=None, licenses=None)पैरामीटर
| पैरामीटर | ब्यौरा |
|---|---|
srcs
|
स्ट्रिंग का क्रम;
ज़रूरी है एक्सपोर्ट की जाने वाली फ़ाइलों की सूची. |
visibility
|
sequence; या None;
डिफ़ॉल्ट वैल्यू Noneहै विज़िबिलिटी का एलान किया जा सकता है. फ़ाइलें, चुने गए लोगों को दिखेंगी. अगर फ़ाइलों के दिखने की सेटिंग नहीं दी गई है, तो वे हर पैकेज में दिखेंगी. |
licenses
|
स्ट्रिंग का क्रम; या None;
डिफ़ॉल्ट वैल्यू Noneहै लाइसेंस तय किए जाने हैं. |
glob
sequence glob(include=[], exclude=[], exclude_directories=1, allow_empty=unbound)
- यह
includeमें मौजूद कम से कम एक पैटर्न से मेल खाता हो. exclude(डिफ़ॉल्ट[]) में मौजूद किसी भी पैटर्न से मेल नहीं खाता.
exclude_directories आर्ग्युमेंट चालू है (1 पर सेट है), तो डायरेक्ट्री टाइप की फ़ाइलों को नतीजों में शामिल नहीं किया जाएगा (डिफ़ॉल्ट 1).
पैरामीटर
| पैरामीटर | ब्यौरा |
|---|---|
include
|
स्ट्रिंग का क्रम;
डिफ़ॉल्ट वैल्यू []है शामिल किए जाने वाले ग्लोब पैटर्न की सूची. |
exclude
|
स्ट्रिंग का क्रम;
डिफ़ॉल्ट वैल्यू []है ग्लोब पैटर्न की वह सूची जिसे शामिल नहीं करना है. |
exclude_directories
|
int;
डिफ़ॉल्ट रूप से 1होता है यह फ़्लैग करता है कि डायरेक्ट्री को बाहर रखना है या नहीं. |
allow_empty
|
डिफ़ॉल्ट वैल्यू unboundहै क्या हम ग्लोब पैटर्न को किसी भी चीज़ से मैच करने की अनुमति देते हैं. अगर `allow_empty` की वैल्यू False है, तो शामिल किए गए हर पैटर्न का किसी न किसी पैटर्न से मेल खाना ज़रूरी है. साथ ही, `exclude` पैटर्न से मेल खाने वाले पैटर्न को हटाने के बाद, फ़ाइनल नतीजे में कुछ न कुछ मौजूद होना चाहिए. |
module_name
string module_name()
module_ctx.modules में दिखने वाले module.name फ़ील्ड की तरह ही होता है.
इसमें None मिल सकता है.
module_version
string module_version()
module_ctx.modules में दिखने वाले module.version फ़ील्ड की तरह ही होता है.
इसमें None मिल सकता है.
पैकेज
unknown package(**kwargs)
load() स्टेटमेंट के ठीक बाद होना चाहिए.
पैरामीटर
| पैरामीटर | ब्यौरा |
|---|---|
kwargs
|
ज़रूरी है कि लागू होने वाले आर्ग्युमेंट के लिए, Build Encyclopedia में package() फ़ंक्शन देखें.
|
package_default_visibility
List package_default_visibility()
package() पैरामीटर की वैल्यू है. इसे पैकेज को शामिल करने के लिए बढ़ाया गया है.default_visibility
package_group
None package_group(*, name, packages=[], includes=[])visibility एट्रिब्यूट में दिया जा सकता है.
पैरामीटर
| पैरामीटर | ब्यौरा |
|---|---|
name
|
string;
ज़रूरी है इस नियम के लिए यूनीक नाम. |
packages
|
sequence of strings;
डिफ़ॉल्ट रूप से []होता है इस ग्रुप में मौजूद पैकेज की पूरी सूची. |
includes
|
sequence of strings;
डिफ़ॉल्ट वैल्यू []है इस पैकेज ग्रुप में शामिल अन्य पैकेज ग्रुप. |
package_name
string package_name()
some/package/BUILD में इसकी वैल्यू some/package होगी. अगर BUILD फ़ाइल, .bzl फ़ाइल में तय किए गए किसी फ़ंक्शन को कॉल करती है, तो package_name(), कॉलर BUILD फ़ाइल पैकेज से मेल खाएगा. रूट पैकेज के लिए, वैल्यू हमेशा एक खाली स्ट्रिंग होगी.
package_relative_label
Label package_relative_label(input)
BUILD फ़ाइल के लिए होता है जिसके लिए मौजूदा मैक्रो चल रहा है. अगर इनपुट पहले से ही Label है, तो उसे बिना किसी बदलाव के दिखाया जाता है.इस फ़ंक्शन को सिर्फ़ BUILD फ़ाइल और सीधे या किसी दूसरे तरीके से कॉल किए गए मैक्रो का आकलन करते समय कॉल किया जा सकता है. इसे (उदाहरण के लिए) नियम लागू करने वाले फ़ंक्शन में कॉल नहीं किया जा सकता.
इस फ़ंक्शन का नतीजा, Label वैल्यू के बराबर होता है. यह वैल्यू, BUILD फ़ाइल में एलान किए गए टारगेट के लेबल-वैल्यू वाले एट्रिब्यूट को दी गई स्ट्रिंग से मिलती है.
इस्तेमाल से जुड़ी जानकारी: इस फ़ंक्शन और Label() फ़ंक्शन के बीच का अंतर यह है कि Label(), BUILD फ़ाइल के पैकेज के कॉन्टेक्स्ट का इस्तेमाल करता है, न कि .bzl फ़ाइल के पैकेज के कॉन्टेक्स्ट का. Label() का इस्तेमाल तब करें, जब आपको किसी ऐसे तय टारगेट का रेफ़रंस देना हो जिसे मैक्रो में हार्डकोड किया गया है. जैसे, कंपाइलर. package_relative_label() का इस्तेमाल तब करें, जब आपको BUILD फ़ाइल से मिली लेबल स्ट्रिंग को Label ऑब्जेक्ट में बदलना हो. (BUILD फ़ाइल या कॉल करने वाली .bzl फ़ाइल के अलावा, किसी अन्य पैकेज के कॉन्टेक्स्ट में स्ट्रिंग को Label में बदलने का कोई तरीका नहीं है. इसलिए, बाहरी मैक्रो को हमेशा लेबल स्ट्रिंग के बजाय, लेबल ऑब्जेक्ट को इनर मैक्रो में पास करना चाहिए.) ctx.package_relative_label(), नियम या पहलू को लागू करने वाले फ़ंक्शन में एक जैसी सुविधा देता है.
पैरामीटर
| पैरामीटर | ब्यौरा |
|---|---|
input
|
string; या Label;
ज़रूरी है इनपुट लेबल स्ट्रिंग या लेबल ऑब्जेक्ट. अगर कोई Label ऑब्जेक्ट पास किया जाता है, तो उसे वैसे ही लौटा दिया जाता है. |
repo_name
string repo_name()
repository_name
string repository_name()
--+incompatible_enable_deprecated_label_apis अब इस्तेमाल नहीं किया जा सकता. को सेट करना होगा. इसके बजाय,
repo_name का इस्तेमाल करें. इसमें फ़ालतू ऐट-साइन नहीं होता है. हालांकि, यह बाकी मामलों में एक जैसा काम करता है.यह उस रिपॉज़िटरी का कैननिकल नाम है जिसमें फ़िलहाल पैकेज का आकलन किया जा रहा है. इसके पहले एक ऐट-साइन (@) लगा होता है. उदाहरण के लिए, WORKSPACE स्टैंज़ा local_repository(name='local', path=...) से बनाए गए पैकेज में, इसे @local पर सेट किया जाएगा. मुख्य रिपॉज़िटरी में मौजूद पैकेज के लिए, इसे @ पर सेट किया जाएगा.
चुनें
unknown select(x, no_match_error='')
select() एक हेल्पर फ़ंक्शन है, जो नियम के एट्रिब्यूट को कॉन्फ़िगर किया जा सकने वाला बनाता है. ज़्यादा जानकारी के लिए, एनसाइक्लोपीडिया बनाना लेख पढ़ें.
पैरामीटर
| पैरामीटर | ब्यौरा |
|---|---|
x
|
dict;
ज़रूरी है एक डिक्शनरी, जो कॉन्फ़िगरेशन की शर्तों को वैल्यू पर मैप करती है. हर कुंजी एक लेबल या लेबल स्ट्रिंग होती है, जो config_setting या constraint_value इंस्टेंस की पहचान करती है. स्ट्रिंग के बजाय लेबल का इस्तेमाल कब करना है, यह जानने के लिए मैक्रो के बारे में दस्तावेज़ देखें. अगर --incompatible_resolve_select_keys_eagerly चालू है, तो कुंजियों को Label ऑब्जेक्ट में बदला जाता है. ये ऑब्जेक्ट, उस फ़ाइल के पैकेज से जुड़े होते हैं जिसमें select को कॉल किया गया है.
|
no_match_error
|
string;
डिफ़ॉल्ट रूप से ''होता है अगर कोई शर्त पूरी नहीं होती है, तो रिपोर्ट करने के लिए, गड़बड़ी का कस्टम मैसेज (वैकल्पिक). |
सबपैकेज
sequence subpackages(*, include, exclude=[], allow_empty=False)
पैरामीटर
| पैरामीटर | ब्यौरा |
|---|---|
include
|
sequence of strings;
required सबपैकेज स्कैन में शामिल करने के लिए, ग्लोब पैटर्न की सूची. |
exclude
|
स्ट्रिंग का क्रम;
डिफ़ॉल्ट वैल्यू []है यह सबपैकेज स्कैन से बाहर रखे जाने वाले ग्लोब पैटर्न की सूची होती है. |
allow_empty
|
bool;
डिफ़ॉल्ट रूप से Falseहोता है अगर कॉल से खाली सूची मिलती है, तो क्या हमें फ़ेल होना चाहिए. डिफ़ॉल्ट रूप से, खाली सूची से पता चलता है कि BUILD फ़ाइल में संभावित गड़बड़ी है. इसमें subpackages() को कॉल करना ज़रूरी नहीं है. इस सेटिंग को 'सही है' पर सेट करने से, इस फ़ंक्शन को उस मामले में काम करने की अनुमति मिलती है. |