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 में बदलने का कोई तरीका नहीं है. इसलिए, आउटर मैक्रो को हमेशा लेबल स्ट्रिंग के बजाय, इनर मैक्रो को लेबल ऑब्जेक्ट पास करने चाहिए.)
पैरामीटर
| पैरामीटर | ब्यौरा |
|---|---|
input
|
स्ट्रिंग; या 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() को कॉल करना ज़रूरी नहीं है. इसे 'सही है' पर सेट करने से, इस मामले में यह फ़ंक्शन काम कर सकता है. |