native.cc_library. ध्यान दें कि नेटिव मॉड्यूल, सिर्फ़ लोडिंग फ़ेज़ में उपलब्ध होता है. इसका मतलब है कि यह मैक्रो के लिए उपलब्ध होता है, न कि नियम लागू करने के लिए. एट्रिब्यूट, None वैल्यू को अनदेखा करेंगे और उन्हें इस तरह से प्रोसेस करेंगे जैसे एट्रिब्यूट सेट नहीं किया गया है.ये फ़ंक्शन भी उपलब्ध हैं:
सदस्य
- existing_rule
- existing_rules
- exports_files
- glob
- module_name
- module_version
- package_group
- package_name
- package_relative_label
- repo_name
- repository_name
- सबपैकेज
existing_rule
unknown native.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 native.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 native.exports_files(srcs, visibility=None, licenses=None)पैरामीटर
| पैरामीटर | ब्यौरा |
|---|---|
srcs
|
स्ट्रिंग का क्रम;
ज़रूरी है एक्सपोर्ट की जाने वाली फ़ाइलों की सूची. |
visibility
|
sequence; या None;
डिफ़ॉल्ट वैल्यू Noneहै विज़िबिलिटी का एलान किया जा सकता है. फ़ाइलें, तय किए गए टारगेट को दिखेंगी. अगर फ़ाइलों को दिखाने की सेटिंग नहीं दी गई है, तो वे हर पैकेज में दिखेंगी. |
licenses
|
स्ट्रिंग का क्रम; या None;
डिफ़ॉल्ट वैल्यू Noneहै लाइसेंस तय किए जाने हैं. |
glob
sequence native.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 native.module_name()
module_ctx.modules में दिखने वाले module.name फ़ील्ड जैसा ही होता है.
None को वापस किया जा सकता है.
module_version
string native.module_version()
module_ctx.modules में दिखने वाले module.version फ़ील्ड जैसा ही होता है.
None को वापस किया जा सकता है.
package_group
None native.package_group(name, packages=[], includes=[])visibility एट्रिब्यूट में किया जा सकता है.
पैरामीटर
| पैरामीटर | ब्यौरा |
|---|---|
name
|
string;
ज़रूरी है इस नियम के लिए यूनीक नाम. |
packages
|
sequence of strings;
डिफ़ॉल्ट रूप से []होता है इस ग्रुप में मौजूद पैकेज की पूरी सूची. |
includes
|
स्ट्रिंग का क्रम;
डिफ़ॉल्ट वैल्यू []है इस पैकेज ग्रुप में शामिल किए गए अन्य पैकेज ग्रुप. |
package_name
string native.package_name()
some/package/BUILD में इसकी वैल्यू some/package होगी. अगर BUILD फ़ाइल, .bzl फ़ाइल में तय किए गए किसी फ़ंक्शन को कॉल करती है, तो package_name(), कॉलर BUILD फ़ाइल पैकेज से मेल खाएगा.
package_relative_label
Label native.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 native.repo_name()
repository_name
string native.repository_name()
--+incompatible_enable_deprecated_label_apis Deprecated. को सेट करना होगा. इसके बजाय,
repo_name का इस्तेमाल करें. इसमें फ़ालतू ऐट-साइन नहीं होता है. हालांकि, यह बाकी मामलों में एक जैसा काम करता है.यह उस रिपॉज़िटरी का कैननिकल नाम है जिसमें फ़िलहाल पैकेज का आकलन किया जा रहा है. इसके पहले एक ऐट-साइन (@) लगा होता है. उदाहरण के लिए, WORKSPACE स्टैंज़ा local_repository(name='local', path=...) से बनाए गए पैकेज में, इसे @local पर सेट किया जाएगा. मुख्य रिपॉज़िटरी में मौजूद पैकेज के लिए, इसे @ पर सेट किया जाएगा.
सब-पैकेज
sequence native.subpackages(include, exclude=[], allow_empty=False)
पैरामीटर
| पैरामीटर | ब्यौरा |
|---|---|
include
|
sequence of strings;
required सबपैकेज स्कैन में शामिल करने के लिए, ग्लोब पैटर्न की सूची. |
exclude
|
स्ट्रिंग का क्रम;
डिफ़ॉल्ट वैल्यू []है यह सब-पैकेज स्कैन से बाहर रखे जाने वाले ग्लोब पैटर्न की सूची होती है. |
allow_empty
|
bool;
डिफ़ॉल्ट वैल्यू Falseहै अगर कॉल से खाली सूची मिलती है, तो क्या हमें गड़बड़ी दिखानी चाहिए. डिफ़ॉल्ट रूप से, खाली सूची से पता चलता है कि BUILD फ़ाइल में संभावित गड़बड़ी है. इसमें subpackages() को कॉल करना ज़रूरी नहीं है. इस सेटिंग को 'सही है' पर सेट करने से, इस फ़ंक्शन को उस मामले में इस्तेमाल किया जा सकता है. |