नियम
sh_binary
नियम का सोर्स देखेंsh_binary(name, deps, srcs, data, args, compatible_with, deprecation, distribs, env, env_inherit, exec_compatible_with, exec_properties, features, output_licenses, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)
sh_binary नियम का इस्तेमाल, एक्ज़ीक्यूट की जा सकने वाली शेल स्क्रिप्ट के बारे में बताने के लिए किया जाता है.
(sh_binary एक गलत नाम है. इसके आउटपुट, बाइनरी होना ज़रूरी नहीं है.) इस नियम से यह पक्का होता है
कि सभी डिपेंडेंसी बनाई गई हैं और एक्ज़ीक्यूशन के दौरान, runfiles वाले सेक्शन में दिखती हैं.
हमारा सुझाव है कि आप अपने sh_binary() नियमों का नाम, स्क्रिप्ट के नाम पर रखें.हालांकि, इसमें एक्सटेंशन (जैसे, .sh) शामिल न करें. नियम का नाम और फ़ाइल का नाम अलग-अलग होना चाहिए.
sh_binary, शीबैंग को स्वीकार करता है. इसलिए, कोई भी उपलब्ध इंटरप्रेटर इस्तेमाल किया जा सकता है. जैसे,
#!/bin/zsh
उदाहरण
डिपेंडेंसी और कुछ डेटा फ़ाइलों के बिना, सामान्य शेल स्क्रिप्ट के लिए:
sh_binary(
name = "foo",
srcs = ["foo.sh"],
data = glob(["datafiles/*.txt"]),
)
तर्क
| एट्रिब्यूट | |
|---|---|
name |
नाम; ज़रूरी है इस टारगेट के लिए यूनीक नाम. |
deps
|
लेबल की सूची; डिफ़ॉल्ट वैल्यू है deps
पर ज़्यादातर बिल्ड नियमों के हिसाब से तय किए गए सामान्य एट्रिब्यूट के बारे में सामान्य टिप्पणियां देखें.
इस एट्रिब्यूट का इस्तेमाल, उन अन्य |
srcs
|
लेबल की सूची; डिफ़ॉल्ट वैल्यू है
इस एट्रिब्यूट का इस्तेमाल, इस लाइब्रेरी से जुड़ी शेल स्क्रिप्ट की सोर्स फ़ाइलों को लिस्ट करने के लिए किया जाना चाहिए. स्क्रिप्ट, शेल के |
env_inherit
|
स्ट्रिंग की सूची; डिफ़ॉल्ट वैल्यू |
sh_library
नियम का सोर्स देखेंsh_library(name, deps, srcs, data, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)
इस नियम का मुख्य इस्तेमाल, एक लॉजिकल
"लाइब्रेरी" को एक साथ एग्रीगेट करना है. इसमें, इंटरप्रेट की गई भाषा में लिखे गए प्रोग्राम और उनसे जुड़ी स्क्रिप्ट शामिल होती हैं. जैसे, बॉर्न शेल. इसके लिए, कंपाइलेशन या लिंकिंग की ज़रूरत नहीं होती. साथ ही, इसमें वे सभी डेटा शामिल होते हैं जिनकी ज़रूरत इन प्रोग्राम को रन-टाइम पर होती है. इसके बाद, ऐसी "लाइब्रेरी" का इस्तेमाल, एक या एक से ज़्यादा sh_binary नियमों के data एट्रिब्यूट से किया जा सकता है.
डेटा फ़ाइलों को एग्रीगेट करने के लिए, filegroup नियम का इस्तेमाल किया जा सकता है.
इंटरप्रेट की गई प्रोग्रामिंग भाषाओं में, "कोड" और "डेटा" के बीच हमेशा साफ़ तौर पर अंतर नहीं होता है: आखिरकार, प्रोग्राम इंटरप्रेटर के हिसाब से सिर्फ़ "डेटा" होता है. इस वजह से, इस नियम में तीन एट्रिब्यूट हैं. ये तीनों एट्रिब्यूट एक जैसे हैं:
srcs, deps, और data.
मौजूदा तरीके से लागू करने पर, इन सूचियों के एलिमेंट के बीच अंतर नहीं किया जाता.
ये तीनों एट्रिब्यूट, नियमों, सोर्स फ़ाइलों, और जनरेट की गई फ़ाइलों को स्वीकार करते हैं.
हालांकि, एट्रिब्यूट का इस्तेमाल उनके सामान्य मकसद के लिए करना सबसे सही तरीका है. ऐसा अन्य नियमों के साथ भी किया जाता है.
उदाहरण
sh_library(
name = "foo",
data = [
":foo_service_script", # an sh_binary with srcs
":deploy_foo", # another sh_binary with srcs
],
)
तर्क
| एट्रिब्यूट | |
|---|---|
name |
नाम; ज़रूरी है इस टारगेट के लिए यूनीक नाम. |
deps
|
लेबल की सूची; डिफ़ॉल्ट वैल्यू है deps
पर ज़्यादातर बिल्ड नियमों के हिसाब से तय किए गए सामान्य एट्रिब्यूट के बारे में सामान्य टिप्पणियां देखें.
इस एट्रिब्यूट का इस्तेमाल, उन अन्य |
srcs
|
लेबल की सूची; डिफ़ॉल्ट वैल्यू है
इस एट्रिब्यूट का इस्तेमाल, इस लाइब्रेरी से जुड़ी शेल स्क्रिप्ट की सोर्स फ़ाइलों को लिस्ट करने के लिए किया जाना चाहिए. स्क्रिप्ट, शेल के |
sh_test
नियम का सोर्स देखेंsh_test(name, deps, srcs, data, args, compatible_with, deprecation, distribs, env, env_inherit, exec_compatible_with, exec_properties, features, flaky, local, restricted_to, shard_count, size, tags, target_compatible_with, testonly, timeout, toolchains, visibility)
sh_binary नियम का इस्तेमाल, एक्ज़ीक्यूट की जा सकने वाली शेल स्क्रिप्ट के बारे में बताने के लिए किया जाता है.
(sh_binary एक गलत नाम है. इसके आउटपुट, बाइनरी होना ज़रूरी नहीं है.) इस नियम से यह पक्का होता है
कि सभी डिपेंडेंसी बनाई गई हैं और एक्ज़ीक्यूशन के दौरान, runfiles वाले सेक्शन में दिखती हैं.
हमारा सुझाव है कि आप अपने sh_binary() नियमों का नाम, स्क्रिप्ट के नाम पर रखें.हालांकि, इसमें एक्सटेंशन (जैसे, .sh) शामिल न करें. नियम का नाम और फ़ाइल का नाम अलग-अलग होना चाहिए.
sh_binary, शीबैंग को स्वीकार करता है. इसलिए, कोई भी उपलब्ध इंटरप्रेटर इस्तेमाल किया जा सकता है. जैसे,
#!/bin/zsh
उदाहरण
डिपेंडेंसी और कुछ डेटा फ़ाइलों के बिना, सामान्य शेल स्क्रिप्ट के लिए:
sh_binary(
name = "foo",
srcs = ["foo.sh"],
data = glob(["datafiles/*.txt"]),
)
तर्क
| एट्रिब्यूट | |
|---|---|
name |
नाम; ज़रूरी है इस टारगेट के लिए यूनीक नाम. |
deps
|
लेबल की सूची; डिफ़ॉल्ट वैल्यू है deps
पर ज़्यादातर बिल्ड नियमों के हिसाब से तय किए गए सामान्य एट्रिब्यूट के बारे में सामान्य टिप्पणियां देखें.
इस एट्रिब्यूट का इस्तेमाल, उन अन्य |
srcs
|
लेबल की सूची; डिफ़ॉल्ट वैल्यू है
इस एट्रिब्यूट का इस्तेमाल, इस लाइब्रेरी से जुड़ी शेल स्क्रिप्ट की सोर्स फ़ाइलों को लिस्ट करने के लिए किया जाना चाहिए. स्क्रिप्ट, शेल के |