सदस्य
- depset
- existing_rule
- existing_rules
- exports_files
- glob
- module_name
- module_version
- package
- 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वैल्यू को ऊपर बताए गए तरीके से बदलकर दिखाया जाता है.- जिन एट्रिब्यूट के लिए नियम को इंस्टैंशिएट करते समय कोई वैल्यू नहीं दी गई थी और जिनकी डिफ़ॉल्ट वैल्यू का हिसाब लगाया गया है उन्हें नतीजे में शामिल नहीं किया जाता. (विश्लेषण के चरण तक, डिफ़ॉल्ट वैल्यू का हिसाब नहीं लगाया जा सकता.).
अगर हो सके, तो इस फ़ंक्शन का इस्तेमाल न करें. इससे 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() को सपोर्ट करता है.
ध्यान दें: अगर हो सके, तो इस फ़ंक्शन का इस्तेमाल न करें. इससे 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_group
None package_group(name, packages=[], includes=[])visibility एट्रिब्यूट में किया जा सकता है.
पैरामीटर
| पैरामीटर | ब्यौरा |
|---|---|
name
|
string;
ज़रूरी है इस नियम के लिए यूनीक नाम. |
packages
|
sequence of strings;
डिफ़ॉल्ट रूप से []होता है इस ग्रुप में मौजूद पैकेज की पूरी सूची. |
includes
|
स्ट्रिंग का क्रम;
डिफ़ॉल्ट वैल्यू []है इस पैकेज ग्रुप में शामिल किए गए अन्य पैकेज ग्रुप. |
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(), उस .bzl फ़ाइल के पैकेज के कॉन्टेक्स्ट का इस्तेमाल करता है जिसने इसे कॉल किया है. यह BUILD फ़ाइल के पैकेज के कॉन्टेक्स्ट का इस्तेमाल नहीं करता. Label() का इस्तेमाल तब करें, जब आपको किसी ऐसे तय टारगेट का रेफ़रंस देना हो जिसे मैक्रो में हार्डकोड किया गया है. जैसे, कंपाइलर. package_relative_label() का इस्तेमाल तब करें, जब आपको BUILD फ़ाइल से मिली लेबल स्ट्रिंग को package_relative_label() ऑब्जेक्ट में बदलना हो.Label (BUILD फ़ाइल या कॉल करने वाली .bzl फ़ाइल के अलावा, किसी अन्य पैकेज के कॉन्टेक्स्ट में स्ट्रिंग को Label में बदलने का कोई तरीका नहीं है. इसलिए, बाहरी मैक्रो को हमेशा लेबल स्ट्रिंग के बजाय, लेबल ऑब्जेक्ट को इनर मैक्रो में पास करना चाहिए.)
पैरामीटर
| पैरामीटर | ब्यौरा |
|---|---|
input
|
स्ट्रिंग; या लेबल;
ज़रूरी है इनपुट लेबल स्ट्रिंग या लेबल ऑब्जेक्ट. अगर कोई Label ऑब्जेक्ट पास किया जाता है, तो उसे वैसे ही लौटा दिया जाता है. |
repo_name
string repo_name()
repository_name
string repository_name()
--+incompatible_enable_deprecated_label_apis Deprecated. को सेट करना होगा. इसके बजाय,
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() को कॉल करना ज़रूरी नहीं है. इस सेटिंग को 'सही है' पर सेट करने से, इस फ़ंक्शन को उस मामले में इस्तेमाल किया जा सकता है. |