native.cc_library. ध्यान दें कि नेटिव मॉड्यूल, सिर्फ़ लोडिंग फ़ेज़ में उपलब्ध होता है. इसका मतलब है कि यह मैक्रो के लिए उपलब्ध है, न कि नियम लागू करने के लिए. एट्रिब्यूट, None वैल्यू को अनदेखा करेंगे और उन्हें ऐसे ट्रीट करेंगे जैसे कि एट्रिब्यूट सेट न किया गया हो.ये फ़ंक्शन भी उपलब्ध हैं:
सदस्य
- existing_rule
- existing_rules
- exports_files
- glob
- module_name
- module_version
- package_default_visibility
- package_group
- package_name
- package_relative_label
- repo_name
- repository_name
- subpackages
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वैल्यू को उनके कॉन्टेंट के साथ दिखाया जाता है. कॉन्टेंट को ऊपर बताए गए तरीके से बदला जाता है.- नियम को इंस्टैंशिएट करते समय, जिन एट्रिब्यूट के लिए कोई वैल्यू तय नहीं की गई थी और जिनकी डिफ़ॉल्ट वैल्यू कंप्यूट की गई है उन्हें नतीजे में शामिल नहीं किया जाता. (विश्लेषण के फ़ेज़ तक, कंप्यूट की गई डिफ़ॉल्ट वैल्यू को कंप्यूट नहीं किया जा सकता.).
अगर मुमकिन हो, तो इस फ़ंक्शन का इस्तेमाल सिर्फ़ नियम फ़ाइनलाइज़र सिंबॉलिक मैक्रो के लागू करने वाले फ़ंक्शन में करें. इस फ़ंक्शन का इस्तेमाल अन्य संदर्भों में करने का सुझाव नहीं दिया जाता. साथ ही, Bazel की आने वाली रिलीज़ में, इस फ़ंक्शन को बंद कर दिया जाएगा. इससे BUILD फ़ाइलें कमज़ोर हो जाती हैं और क्रम पर निर्भर हो जाती हैं. इसके अलावा, ध्यान रखें कि यह फ़ंक्शन, नियम के एट्रिब्यूट की वैल्यू को इंटरनल फ़ॉर्म से Starlark में बदलने वाले अन्य दो फ़ंक्शन से थोड़ा अलग है. इनमें से एक फ़ंक्शन का इस्तेमाल, कंप्यूट की गई डिफ़ॉल्ट वैल्यू के लिए किया जाता है. वहीं, दूसरे फ़ंक्शन का इस्तेमाल ctx.attr.foo के लिए किया जाता है.
पैरामीटर
| पैरामीटर | ब्यौरा |
|---|---|
name
|
स्ट्रिंग;
ज़रूरी है टारगेट का नाम. |
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() को सपोर्ट करता है.
अगर मुमकिन हो, तो इस फ़ंक्शन का इस्तेमाल सिर्फ़ नियम फ़ाइनलाइज़र सिंबॉलिक मैक्रो के लागू करने वाले फ़ंक्शन में करें. इस फ़ंक्शन का इस्तेमाल अन्य संदर्भों में करने का सुझाव नहीं दिया जाता. साथ ही, Bazel की आने वाली रिलीज़ में, इस फ़ंक्शन को बंद कर दिया जाएगा. इससे 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` की वैल्यू 'गलत' है, तो शामिल किए जाने वाले हर पैटर्न को किसी न किसी चीज़ से मैच करना होगा. साथ ही, फ़ाइनल नतीजे में कुछ न कुछ शामिल होना चाहिए. ऐसा तब होगा, जब `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_default_visibility
List native.package_default_visibility()
package() के default_visibility पैरामीटर की वैल्यू होती है. इसे पैकेज के लिए भी बढ़ाया जाता है.
package_group
None native.package_group(*, name, packages=[], includes=[])visibility एट्रिब्यूट में रेफ़र किया जा सकता है.
पैरामीटर
| पैरामीटर | ब्यौरा |
|---|---|
name
|
स्ट्रिंग;
ज़रूरी है इस नियम के लिए यूनीक नाम. |
packages
|
स्ट्रिंग का क्रम;
डिफ़ॉल्ट वैल्यू है []इस ग्रुप में मौजूद पैकेज की पूरी सूची. |
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` फ़ाइल से मिली लेबल स्ट्रिंग को Label ऑब्जेक्ट में बदलना हो. (BUILD फ़ाइल या कॉल करने वाली .bzl फ़ाइल के अलावा, किसी अन्य पैकेज के संदर्भ में स्ट्रिंग को Label में बदलने का कोई तरीका नहीं है. इसलिए, बाहरी मैक्रो को हमेशा लेबल स्ट्रिंग के बजाय, Label ऑब्जेक्ट को अंदरूनी मैक्रो में पास करना चाहिए.)ctx.package_relative_label() नियम या आसपेक्ट लागू करने वाले फ़ंक्शन में भी यही सुविधा देता है.
पैरामीटर
| पैरामीटर | ब्यौरा |
|---|---|
input
|
स्ट्रिंग; या Label;
ज़रूरी है इनपुट लेबल स्ट्रिंग या Label ऑब्जेक्ट. अगर कोई Label ऑब्जेक्ट पास किया जाता है, तो उसे बिना किसी बदलाव के दिखाया जाता है. |
repo_name
string native.repo_name()
repository_name
string native.repository_name()
--+incompatible_enable_deprecated_label_apis को सेट करना होगा. अब इसका इस्तेमाल नहीं किया जा सकता. इसके बजाय,
repo_name का इस्तेमाल करें. इसमें शुरुआती ऐट-साइन शामिल नहीं होता. हालांकि, यह अन्य मामलों में एक जैसा काम करता है.यह फ़ंक्शन, फ़िलहाल आकलन किए जा रहे पैकेज वाले रेपो का कैननिकल नाम दिखाता है. इसमें शुरुआती ऐट-साइन (@) शामिल होता है. उदाहरण के लिए, WORKSPACE स्टैंज़ा local_repository(name='local', path=...) से बनाए गए पैकेज के लिए, इसे @local पर सेट किया जाएगा. मुख्य रेपो में मौजूद पैकेज के लिए, इसे @ पर सेट किया जाएगा.
subpackages
sequence native.subpackages(*, include, exclude=[], allow_empty=False)
पैरामीटर
| पैरामीटर | ब्यौरा |
|---|---|
include
|
स्ट्रिंग का क्रम;
ज़रूरी है सब-पैकेज स्कैन में शामिल किए जाने वाले ग्लोब पैटर्न की सूची. |
exclude
|
स्ट्रिंग का क्रम;
डिफ़ॉल्ट वैल्यू है []सब-पैकेज स्कैन से बाहर रखे जाने वाले ग्लोब पैटर्न की सूची. |
allow_empty
|
बूलियन;
डिफ़ॉल्ट वैल्यू है Falseयह तय करता है कि कॉल से खाली सूची मिलने पर, गड़बड़ी दिखानी है या नहीं. डिफ़ॉल्ट रूप से, खाली सूची से यह पता चलता है कि BUILD फ़ाइल में गड़बड़ी हो सकती है. इसमें subpackages() को कॉल करना ज़रूरी नहीं है. इसे 'सही है' पर सेट करने से, इस मामले में यह फ़ंक्शन सही तरीके से काम करता है. |