BUILD फ़ाइलों में उपलब्ध तरीके. ज़्यादा फ़ंक्शन और बिल्ड के नियमों के लिए, Build Encyclopedia भी देखें. इनका इस्तेमाल BUILD फ़ाइलों में भी किया जा सकता है.
सदस्य
- 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
दिखाता है.यहां, बदलाव नहीं किया जा सकने वाला dict-like ऑब्जेक्ट का मतलब है कि x
एक ऐसा ऑब्जेक्ट है जिसमें बदलाव नहीं किया जा सकता. यह dict-like इटरेशन, 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)
से मिलेगा.यहां, बदलाव नहीं किया जा सकने वाला dict-like ऑब्जेक्ट का मतलब है कि x
एक ऐसा ऑब्जेक्ट है जिसमें बदलाव नहीं किया जा सकता. यह dict-like इटरेशन, 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
|
sequence of strings;
ज़रूरी है एक्सपोर्ट की जाने वाली फ़ाइलों की सूची. |
visibility
|
sequence; या None ;
डिफ़ॉल्ट तौर पर None होता है विज़िबिलिटी का एलान किया जा सकता है. फ़ाइलें, तय किए गए टारगेट को दिखेंगी. अगर फ़ाइलों के दिखने की सेटिंग नहीं दी गई है, तो वे हर पैकेज में दिखेंगी. |
licenses
|
string का sequence; या None ;
डिफ़ॉल्ट रूप से None होता है लाइसेंस तय किए जाने हैं. |
glob
sequence glob(include=[], exclude=[], exclude_directories=1, allow_empty=unbound)
- यह वैल्यू,
include
एट्रिब्यूट में मौजूद कम से कम एक पैटर्न से मेल खाती हो. exclude
(डिफ़ॉल्ट[]
) में मौजूद किसी भी पैटर्न से मेल नहीं खाता.
exclude_directories
आर्ग्युमेंट चालू है (1
पर सेट है), तो डायरेक्ट्री टाइप की फ़ाइलों को नतीजों में शामिल नहीं किया जाएगा (डिफ़ॉल्ट 1
).
पैरामीटर
पैरामीटर | ब्यौरा |
---|---|
include
|
string का sequence;
डिफ़ॉल्ट रूप से [] होता है शामिल किए जाने वाले ग्लोब पैटर्न की सूची. |
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
|
string का sequence;
डिफ़ॉल्ट रूप से [] होता है अन्य पैकेज ग्रुप जो इसमें शामिल हैं. |
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 फ़ाइल से मिली लेबल स्ट्रिंग को Label
ऑब्जेक्ट में बदलना हो. (BUILD फ़ाइल या कॉल करने वाली .bzl फ़ाइल के अलावा, किसी अन्य पैकेज के कॉन्टेक्स्ट में स्ट्रिंग को Label
में बदलने का कोई तरीका नहीं है. इसलिए, आउटर मैक्रो को हमेशा लेबल स्ट्रिंग के बजाय, इनर मैक्रो को लेबल ऑब्जेक्ट पास करने चाहिए.)
पैरामीटर
पैरामीटर | ब्यौरा |
---|---|
input
|
string; या Label;
ज़रूरी है इनपुट लेबल स्ट्रिंग या लेबल ऑब्जेक्ट. अगर कोई 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 इंस्टेंस की पहचान करती है. स्ट्रिंग के बजाय लेबल का इस्तेमाल कब करना है, यह जानने के लिए मैक्रो के बारे में दस्तावेज़ देखें. |
no_match_error
|
string;
डिफ़ॉल्ट रूप से '' होता है अगर कोई शर्त पूरी नहीं होती है, तो रिपोर्ट करने के लिए कस्टम गड़बड़ी का मैसेज (ज़रूरी नहीं). |
सब-पैकेज
sequence subpackages(include, exclude=[], allow_empty=False)
पैरामीटर
पैरामीटर | ब्यौरा |
---|---|
include
|
sequence of strings;
ज़रूरी है सबपैकेज स्कैन में शामिल करने के लिए, ग्लोब पैटर्न की सूची. |
exclude
|
sequence of strings;
डिफ़ॉल्ट रूप से [] होता है यह, ग्लोब पैटर्न की ऐसी सूची होती है जिन्हें सबपैकेज स्कैन करने के दौरान शामिल नहीं किया जाता. |
allow_empty
|
bool;
डिफ़ॉल्ट रूप से False होता है अगर कॉल से खाली सूची मिलती है, तो क्या हमें गड़बड़ी का मैसेज दिखाना चाहिए. डिफ़ॉल्ट रूप से खाली सूची, BUILD फ़ाइल में संभावित गड़बड़ी के बारे में बताती है. इसमें subpackages() को कॉल करना ज़रूरी नहीं है. इस सेटिंग को सही पर सेट करने से, इस फ़ंक्शन को उस मामले में पूरा किया जा सकता है. |