टूलचेन रिज़ॉल्यूशन को लागू करने से जुड़ी जानकारी

किसी समस्या की शिकायत करें सोर्स देखें Nightly · 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

ध्यान दें: यह सेक्शन, Bazel डेवलपर के लिए है. नियम बनाने वाले लोगों को इसकी ज़रूरत नहीं है.

SkyFunction की कई क्लास, टूलचेन रिज़ॉल्यूशन प्रोसेस को लागू करती हैं:

  1. RegisteredToolchainsFunction और RegisteredExecutionPlatformsFunction मौजूदा समय के हिसाब से, उपलब्ध टूलचेन और एक्ज़ीक्यूशन प्लैटफ़ॉर्म खोजें .

  2. SingleToolchainResolutionFunction यह हर एक्सीक्यूशन प्लैटफ़ॉर्म के लिए, एक टाइप का टूलचेन हल करता है. इसका मतलब है कि यह उसे इस्तेमाल करने के लिए, रजिस्टर किए गए सबसे अच्छे टूलचेन को ये वीडियो कैसे बनाए जाते हैं:

    1. target_compatible_with एट्रिब्यूट की जांच करके, पक्का करें कि टूलचेन और टारगेट प्लैटफ़ॉर्म साथ काम करते हों.
    2. exec_compatible_with एट्रिब्यूट की जांच करके, पक्का करें कि टूलचेन और एक्सीक्यूशन प्लैटफ़ॉर्म साथ काम करते हों.
    3. अगर एक से ज़्यादा टूलचेन बचे हैं, तो सबसे ज़्यादा प्राथमिकता वाला टूलचेन चुनें. यह वह टूलचेन होता है जिसे सबसे पहले रजिस्टर किया गया था.
  3. ToolchainResolutionFunction, अनुरोध किए गए हर टूलचेन टाइप के लिए SingleToolchainResolutionFunction को कॉल करता है. इसके बाद, इस्तेमाल करने के लिए सबसे सही प्लैटफ़ॉर्म तय करता है.

    1. सबसे पहले, ऐसे सभी प्लैटफ़ॉर्म हटाएं जिनमें अनुरोध किए गए हर टाइप के टूलचेन के लिए मान्य टूलचेन नहीं है.
    2. अगर एक से ज़्यादा प्लैटफ़ॉर्म बचे हैं, तो सबसे ज़्यादा प्राथमिकता वाला प्लैटफ़ॉर्म चुनें. यह वह प्लैटफ़ॉर्म होता है जिसे सबसे पहले रजिस्टर किया गया था.
      1. अगर एक्ज़ीक्यूशन प्लैटफ़ॉर्म पहले से ही टूलचेन के ज़रिए सेट किया गया हो ट्रांज़िशन है, तो नीचे बताए गए तरीके से इसे पहले चुना जाएगा.

जैसा कि टूलचेन और कॉन्फ़िगरेशन में बताया गया है, टारगेट से टूलचेन पर निर्भरता एक खास कॉन्फ़िगरेशन का इस्तेमाल करती है, जो दोनों के लिए, एक्ज़ीक्यूशन प्लैटफ़ॉर्म को एक जैसा बनाता है. "टूलचेन ट्रांज़िशन" के नाम के बावजूद, इसे कॉन्फ़िगरेशन ट्रांज़िशन के तौर पर लागू नहीं किया जाता. इसके बजाय, इसे ConfiguredTargetKey के खास सबक्लास के तौर पर लागू किया जाता है. इसे ToolchainDependencyConfiguredTargetKey कहा जाता है. ConfiguredTargetKey के अन्य डेटा के अलावा, इस सब-क्लास में भी एक्ज़ीक्यूशन प्लैटफ़ॉर्म का लेबल. जब ToolchainResolutionFunction यह तय कर रहा हो कि किस प्लैटफ़ॉर्म का इस्तेमाल करना है, तो अगर ToolchainDependencyConfiguredTargetKey में मौजूद, ज़बरदस्ती लागू किए गए प्लैटफ़ॉर्म की वैल्यू मान्य है, तो उसका इस्तेमाल किया जाएगा. भले ही, वह सबसे ज़्यादा प्राथमिकता वाला प्लैटफ़ॉर्म न हो.

ध्यान दें: अगर फ़ोर्स किया गया प्लैटफ़ॉर्म मान्य नहीं है (क्योंकि कोई मान्य टूलचेन नहीं है या नियम या टारगेट से जुड़ी पाबंदियों की वजह से), तो सबसे ज़्यादा प्राथमिकता वाले मान्य प्लैटफ़ॉर्म का इस्तेमाल किया जाएगा.