अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है BUILD फ़ाइलों में उपलब्ध तरीके. ज़्यादा फ़ंक्शन और बिल्ड नियमों के लिए बिल्ड एन्साइक्लोपीडिया भी देखें, जिनका इस्तेमाल बिल्ड फ़ाइलों में भी किया जा सकता है.
सदस्य
- डिप्सेट
- existing_rule
- existing_rules
- exports_files
- ग्लोब
- module_name
- module_version
- package_group
- package_name
- package_relative_label
- repository_name
- चुनें
- सबपैकेज
Depset
depset depset(direct=None, order="default", *, transitive=None)
direct
पैरामीटर, डेप्सेट के डायरेक्ट एलिमेंट की सूची है. वहीं, transitive
पैरामीटर उन डिपसेट की सूची है जिनके एलिमेंट, बनाए गए डिप्सेट के इनडायरेक्ट एलिमेंट बन जाते हैं. डिप्सेट को सूची में बदलने के बाद एलिमेंट के दिखाए जाने का क्रम order
पैरामीटर से तय होता है. ज़्यादा जानकारी के लिए, डिपसेट से जुड़ी खास जानकारी देखें.
किसी डिप्सेट के सभी एलिमेंट (डायरेक्ट और इनडायरेक्ट) एक ही तरह के होने चाहिए, जैसा कि type(x)
एक्सप्रेशन से मिला है.
हैश पर आधारित सेट का इस्तेमाल, इटरेशन के दौरान डुप्लीकेट को हटाने के लिए किया जाता है. इसलिए, डिप्सेट के सभी एलिमेंट हैश होने चाहिए. हालांकि, फ़िलहाल सभी कंस्ट्रक्टर में, इस इन्वैरिएंट की लगातार जांच नहीं की जाती. लगातार जांच चालू करने के लिए, --instatic_always_check_depset_elements फ़्लैग का इस्तेमाल करें; यह बदलाव, आगे आने वाली रिलीज़ में डिफ़ॉल्ट तौर पर लागू होगा; समस्या 10313 देखें.
साथ ही, यह ज़रूरी है कि मौजूदा समय में एलिमेंट में बदलाव न किया जा सके. हालांकि, आने वाले समय में यह पाबंदी हट जाएगी.
बनाए गए डिप्सेट का क्रम इसके transitive
डिप्सेट के क्रम के साथ काम करने वाला होना चाहिए. "default"
ऑर्डर किसी भी दूसरे ऑर्डर के साथ काम करता है. अन्य सभी ऑर्डर सिर्फ़ अपने ऑर्डर के साथ काम करते हैं.
पैरामीटर
पैरामीटर | ब्यौरा |
---|---|
direct
|
क्रम; या None ;
डिफ़ॉल्ट रूप से None है डिपसेट के डायरेक्ट एलिमेंट की सूची. |
order
|
डिफ़ॉल्ट रूप से "default" है नए डिपसेट के लिए ट्रैवर्सल रणनीति. संभावित वैल्यू के लिए यहां देखें. |
transitive
|
डिप्सेट का सीक्वेंस; या None ;
डिफ़ॉल्ट None है ऐसे डेपसेट की सूची जिनके एलिमेंट, डिप्सेट के इनडायरेक्ट एलिमेंट बन जाएंगे. |
existing_rule
unknown existing_rule(name)
None
बताता है.यहां, लिखने के तरीके जैसे ऑब्जेक्ट का मतलब है, बहुत ज़्यादा बदलाव न किए जा सकने वाले ऑब्जेक्ट x
का मतलब, len(x)
, name in x
, x[name]
, x.get(name)
, x.items()
, x.keys()
, और x.values()
के लिए.
अगर --noincompatible_existing_rules_immutable_view
फ़्लैग सेट किया गया है, तो यह दिखाने के बजाय, उसी कॉन्टेंट का नया म्यूटेबल लिखता है.
नतीजे में हर एट्रिब्यूट के लिए एक एंट्री शामिल होती है. इसमें निजी एट्रिब्यूट (जिनके नाम अक्षर से शुरू नहीं होते) और कुछ ऐसे लेगसी एट्रिब्यूट टाइप को छोड़कर शामिल हैं जिन्हें दिखाया नहीं जा सकता. साथ ही, इस डिक्शनरी में नियम के इंस्टेंस के name
और kind
(उदाहरण के लिए, 'cc_binary'
) के लिए एंट्री शामिल हैं.
नतीजे की वैल्यू, एट्रिब्यूट की वैल्यू इस तरह दिखाती हैं:
- str, int, और bool टाइप एट्रिब्यूट की विशेषताएं ऐसे दिखाई गई हैं.
- उसी पैकेज में मौजूद टारगेट के लिए लेबल को
':foo'
फ़ॉर्म वाली स्ट्रिंग में या किसी दूसरे पैकेज के टारगेट के लिए'//pkg:name'
फ़ॉर्मैट में बदला जाता है. - सूचियों को टूपल के तौर पर दिखाया जाता है और लिखवाने की संख्या को नए और बदले जा सकने वाले डिक्शनरी में बदल दिया जाता है. इन्हें एक ही तरीके से बार-बार बदला जाता है.
select
वैल्यू, ऊपर बताए गए कॉन्टेंट के हिसाब से बदली जाती हैं.- ऐसे एट्रिब्यूट जिनके लिए, नियम बनाने के दौरान कोई वैल्यू नहीं दी गई थी और जिनकी डिफ़ॉल्ट वैल्यू कैलकुलेट की गई है उन्हें नतीजे से बाहर रखा गया है. (विश्लेषण के चरण से पहले, कैलकुलेट की गई डिफ़ॉल्ट वैल्यू को कैलकुलेट नहीं किया जा सकता.).
अगर हो सके, तो इस फ़ंक्शन का इस्तेमाल करने से बचें. इससे BUILD फ़ाइलें खराब होती हैं और ऑर्डर पर निर्भर होती हैं. साथ ही, ध्यान रखें कि यह नियम के दो अन्य कन्वर्ज़न एट्रिब्यूट की वैल्यू से काफ़ी अलग है. वैल्यू के अंदरूनी फ़ॉर्मैट से Starlark भी अलग है: एक का इस्तेमाल डिफ़ॉल्ट तौर पर कंप्यूट किया गया होता है और दूसरा ctx.attr.foo
.
पैरामीटर
पैरामीटर | ब्यौरा |
---|---|
name
|
ज़रूरी है टारगेट का नाम. |
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()
के लिए.
अगर --noincompatible_existing_rules_immutable_view
फ़्लैग सेट किया गया है, तो यह दिखाने के बजाय, उसी कॉन्टेंट का नया म्यूटेबल लिखता है.
ध्यान दें: अगर हो सके, तो इस फ़ंक्शन का इस्तेमाल करने से बचें. इससे BUILD फ़ाइलें खराब होती हैं और ऑर्डर पर निर्भर होती हैं. इसके अलावा, अगर --noincompatible_existing_rules_immutable_view
फ़्लैग सेट है, तो यह फ़ंक्शन बहुत महंगा पड़ सकता है. खास तौर पर तब, जब इसे लूप में इस्तेमाल किया जाता हो.
exports_files
None
exports_files(srcs, visibility=None, licenses=None)
पैरामीटर
पैरामीटर | ब्यौरा |
---|---|
srcs
|
स्ट्रिंग का सीक्वेंस;
ज़रूरी है एक्सपोर्ट की जाने वाली फ़ाइलों की सूची. |
visibility
|
क्रम; या None ;
डिफ़ॉल्ट रूप से None है आपके पास 'किसको दिखे' सेटिंग का एलान करने का विकल्प है. फ़ाइलें तय किए गए टारगेट के लिए दिखेंगी. अगर कोई 'किसको दिखे' सेटिंग तय नहीं की गई है, तो फ़ाइलें हर पैकेज को दिखेंगी. |
licenses
|
स्ट्रिंग का सीक्वेंस; या None ;
डिफ़ॉल्ट None है चुने जाने वाले लाइसेंस. |
ग्लोब
sequence glob(include=[], exclude=[], exclude_directories=1, allow_empty=unbound)
include
में कम से कम एक पैटर्न से मेल खाता है.exclude
में किसी भी पैटर्न से मेल नहीं खाता (डिफ़ॉल्ट[]
).
exclude_directories
आर्ग्युमेंट को चालू किया गया (1
पर सेट किया गया) है, तो डायरेक्ट्री टाइप वाली फ़ाइलें, नतीजों से हटा दी जाएंगी (डिफ़ॉल्ट 1
).
पैरामीटर
पैरामीटर | ब्यौरा |
---|---|
include
|
स्ट्रिंग का सीक्वेंस;
डिफ़ॉल्ट [] है शामिल किए जाने वाले ग्लोब पैटर्न की सूची. |
exclude
|
स्ट्रिंग का सीक्वेंस;
डिफ़ॉल्ट [] है शामिल नहीं किए जाने वाले ग्लोब पैटर्न की सूची. |
exclude_directories
|
डिफ़ॉल्ट रूप से 1 है डायरेक्ट्री को हटाना है या नहीं, इसके लिए फ़्लैग. |
allow_empty
|
डिफ़ॉल्ट रूप से unbound है क्या हम ग्लोब पैटर्न को किसी भी चीज़ से मैच करने की अनुमति न दें. अगर `allow_खाली` 'गलत' है, तो हर एक इनक्लूड पैटर्न को कुछ हद तक मैच करना चाहिए. साथ ही, फ़ाइनल नतीजा भी खाली नहीं होना चाहिए (`बाहर रखने` वाले पैटर्न के मैच को बाहर रखने के बाद). |
module_name
string module_name()
module_ctx.modules
में दिखने वाले module.name
फ़ील्ड के जैसा ही है.
None
को वापस किया जा सकता है.
module_version
string module_version()
module_ctx.modules
में दिखने वाले module.version
फ़ील्ड के जैसा ही है.
None
को वापस किया जा सकता है.
package_group
None
package_group(name, packages=[], includes=[])
visibility
एट्रिब्यूट में दिया जा सकता है.
पैरामीटर
पैरामीटर | ब्यौरा |
---|---|
name
|
ज़रूरी है इस नियम के लिए यूनीक नाम. |
packages
|
स्ट्रिंग का सीक्वेंस;
डिफ़ॉल्ट [] है इस ग्रुप में पैकेज की पूरी सूची. |
includes
|
स्ट्रिंग का सीक्वेंस;
डिफ़ॉल्ट [] है इस ग्रुप में शामिल अन्य पैकेज ग्रुप. |
package_name
string package_name()
some/package/BUILD
में इसकी वैल्यू some/package
होगी. अगर BUILD फ़ाइल, .bzl फ़ाइल में दिए गए फ़ंक्शन को कॉल करती है, तो package_name()
, कॉलर BUILD फ़ाइल पैकेज से मैच करेगा. यह फ़ंक्शन, काम न करने वाले वैरिएबल PACKAGE_NAME
के बराबर है.
package_relative_label
Label package_relative_label(input)
BUILD
फ़ाइल, जिसके लिए मौजूदा मैक्रो चलाया जा रहा है) के संदर्भ में, इनपुट स्ट्रिंग को किसी लेबल ऑब्जेक्ट में बदलता है. अगर इनपुट पहले से ही Label
है, तो इसमें कोई बदलाव नहीं किया जाता.इस फ़ंक्शन को सिर्फ़ बिल्ड फ़ाइल का मूल्यांकन करते समय कॉल किया जा सकता है और मैक्रो को सीधे तौर पर या किसी अन्य तरीके से कॉल किया जा सकता है; हो सकता है कि उसे (उदाहरण के लिए) नियम लागू करने वाले फ़ंक्शन में कॉल न किया जाए.
इस फ़ंक्शन के नतीजे के तौर पर एक ही Label
वैल्यू मिलती है, जो दी गई स्ट्रिंग को बिल्ड फ़ाइल में तय किए गए टारगेट के लेबल की वैल्यू वाले एट्रिब्यूट को पास करने पर मिलती है.
इस्तेमाल से जुड़ी जानकारी: इस फ़ंक्शन और Label() में यह अंतर यह है कि Label()
, .bzl
फ़ाइल को कॉल करने वाली फ़ाइल के पैकेज के कॉन्टेक्स्ट का इस्तेमाल करता है, न कि BUILD
फ़ाइल के पैकेज का. जब आपको किसी ऐसे तय टारगेट के बारे में बताने की ज़रूरत हो जिसे मैक्रो में हार्डकोड किया गया हो, जैसे कि कंपाइलर, तो Label()
का इस्तेमाल करें. जब आपको BUILD फ़ाइल से मिली लेबल स्ट्रिंग को Label
ऑब्जेक्ट के लिए नॉर्मलाइज़ करना हो, तब package_relative_label()
का इस्तेमाल करें. (BUILD फ़ाइल या कॉलिंग .bzl फ़ाइल के अलावा किसी दूसरे पैकेज के लिए स्ट्रिंग को Label
में बदलने का कोई तरीका नहीं है. इसी वजह से, बाहरी मैक्रो को हमेशा लेबल स्ट्रिंग के बजाय लेबल ऑब्जेक्ट को आंतरिक मैक्रो को पास करना चाहिए.
पैरामीटर
पैरामीटर | ब्यौरा |
---|---|
input
|
string; या लेबल;
ज़रूरी है इनपुट लेबल स्ट्रिंग या लेबल ऑब्जेक्ट. अगर लेबल ऑब्जेक्ट को पास किया जाता है, तो उसे पहले जैसा किया जाता है. |
repository_name
string repository_name()
local_repository(name='local', path=...)
की मदद ली गई है उन्हें @local
पर सेट किया जाएगा. डेटा स्टोर करने की मुख्य जगह के पैकेज में, यह @
पर सेट होगा. यह फ़ंक्शन, काम न करने वाले वैरिएबल REPOSITORY_NAME
के बराबर है.
चुनें
unknown select(x, no_match_error='')
select()
एक हेल्पर फ़ंक्शन है, जो नियम एट्रिब्यूट को कॉन्फ़िगर करने लायक बनाता है. ज़्यादा जानकारी के लिए, बिल्ड एनसाइक्लोपीडिया देखें.
पैरामीटर
पैरामीटर | ब्यौरा |
---|---|
x
|
ज़रूरी है ऐसा डिक्शनरी जो कॉन्फ़िगरेशन की शर्तों को वैल्यू पर मैप करता है. हर कुंजी एक लेबल या लेबल स्ट्रिंग होती है, जो config_setting या programt_value इंस्टेंस की पहचान करती है. किसी स्ट्रिंग के बजाय लेबल का उपयोग कब करना है, इसके लिए मैक्रो से संबंधित दस्तावेज़ देखें. |
no_match_error
|
डिफ़ॉल्ट रूप से '' है अगर कोई शर्त मेल नहीं खाती है, तो रिपोर्ट करने के लिए वैकल्पिक कस्टम गड़बड़ी. |
सबपैकेज
sequence subpackages(include, exclude=[], allow_empty=False)
पैरामीटर
पैरामीटर | ब्यौरा |
---|---|
include
|
स्ट्रिंग का सीक्वेंस;
ज़रूरी है सबपैकेज स्कैन में शामिल किए जाने वाले ग्लोब पैटर्न की सूची. |
exclude
|
स्ट्रिंग का सीक्वेंस;
डिफ़ॉल्ट [] है सबपैकेज स्कैन में शामिल नहीं किए जाने वाले ग्लोब पैटर्न की सूची. |
allow_empty
|
डिफ़ॉल्ट रूप से False है कॉल के खाली सूची मिलने पर, हम टास्क पूरा नहीं कर पाते हैं या नहीं. डिफ़ॉल्ट रूप से खाली सूची, BUILD फ़ाइल में संभावित गड़बड़ी की जानकारी देती है, जहां सब-पैकेज() का इस्तेमाल करना ज़रूरत से ज़्यादा नहीं होता है. सही पर सेट करने से यह फ़ंक्शन उस मामले में सफल होता है. |