BazelCon 2022 16-17 নভেম্বর নিউ ইয়র্ক এবং অনলাইনে আসছে। নিবন্ধন আজ!
নতুন: 15 নভেম্বর সম্প্রদায় দিবসের জন্য আমাদের সাথে যোগ দিন! বিস্তারিত এবং নিবন্ধন.

টুলচেন রেজোলিউশন বাস্তবায়নের বিবরণ

সেভ করা পৃষ্ঠা গুছিয়ে রাখতে 'সংগ্রহ' ব্যবহার করুন আপনার পছন্দ অনুযায়ী কন্টেন্ট সেভ করুন ও সঠিক বিভাগে রাখুন।

দ্রষ্টব্য: এই বিভাগটি Bazel ডেভেলপারদের উদ্দেশ্যে, এবং নিয়ম লেখকদের দ্বারা প্রয়োজন হয় না।

বেশ কিছু SkyFunction ক্লাস টুলচেন রেজোলিউশন প্রক্রিয়া বাস্তবায়ন করে:

  1. RegisteredToolchainsFunction এবং RegisteredExecutionPlatformsFunction বর্তমান কনফিগারেশন এবং WORKSPACE ফাইলের উপর ভিত্তি করে উপলব্ধ টুলচেইন এবং এক্সিকিউশন প্ল্যাটফর্ম খুঁজে পায়।

  2. SingleToolchainResolutionFunction প্রতিটি এক্সিকিউশন প্ল্যাটফর্মের জন্য একটি একক টুলচেন প্রকারের সমাধান করে। অর্থাৎ, প্রতিটি এক্সিকিউশন প্ল্যাটফর্মের জন্য এটি নিম্নলিখিত মানদণ্ডের উপর ভিত্তি করে ব্যবহার করার জন্য সেরা নিবন্ধিত টুলচেন খুঁজে পায়:

    1. target_compatible_with বৈশিষ্ট্যটি পরীক্ষা করে নিশ্চিত করুন যে টুলচেন এবং লক্ষ্য প্ল্যাটফর্ম সামঞ্জস্যপূর্ণ।
    2. exec_compatible_with অ্যাট্রিবিউট চেক করে টুলচেন এবং এক্সিকিউশন প্ল্যাটফর্ম সামঞ্জস্যপূর্ণ কিনা তা নিশ্চিত করুন।
    3. যদি একাধিক টুলচেইন বাকি থাকে, সর্বোচ্চ-অগ্রাধিকার একটি বেছে নিন (যেটি প্রথমে নিবন্ধিত হয়েছিল)।
  3. ToolchainResolutionFunction প্রতিটি অনুরোধ করা টুলচেন প্রকারের জন্য SingleToolchainResolutionFunction কল করে এবং তারপর ব্যবহার করার জন্য সর্বোত্তম এক্সিকিউশন প্ল্যাটফর্ম নির্ধারণ করে।

    1. প্রথমত, যেকোন এক্সিকিউশন প্ল্যাটফর্ম সরান যার প্রতিটি অনুরোধ করা টুলচেন প্রকারের জন্য বৈধ টুলচেন নেই।
    2. যদি একাধিক এক্সিকিউশন প্ল্যাটফর্ম বাকি থাকে, সর্বোচ্চ-অগ্রাধিকার একটি বেছে নিন (যেটি প্রথমে নিবন্ধিত হয়েছিল)।
      1. যদি এক্সিকিউশন প্ল্যাটফর্মটি ইতিমধ্যেই টুলচেইন ট্রানজিশন দ্বারা সেট করা থাকে, তাহলে নীচে বর্ণিত হিসাবে প্রথমে এটি নির্বাচন করা হবে।

টুলচেইন এবং কনফিগারেশনে যেমন আলোচনা করা হয়েছে, একটি টার্গেট থেকে টুলচেইনের উপর নির্ভরশীলতা একটি বিশেষ কনফিগারেশন ব্যবহার করে যা এক্সিকিউশন প্ল্যাটফর্মকে উভয়ের জন্য একই হতে বাধ্য করে। "টুলচেইন ট্রানজিশন" নাম থাকা সত্ত্বেও, এটি একটি কনফিগারেশন ট্রানজিশন হিসাবে প্রয়োগ করা হয় না, বরং ToolchainDependencyConfiguredTargetKey ConfiguredTargetKey হয়। ConfiguredTargetKey এ অন্যান্য ডেটা ছাড়াও, এই সাবক্লাসটি এক্সিকিউশন প্ল্যাটফর্মের লেবেলও ধারণ করে। যখন ToolchainResolutionFunction বিবেচনা করছে কোন এক্সিকিউশন প্ল্যাটফর্ম ব্যবহার করতে হবে, যদি ToolchainDependencyConfiguredTargetKey থেকে জোরপূর্বক এক্সিকিউশন প্ল্যাটফর্মটি বৈধ হয়, এটি সর্বোচ্চ অগ্রাধিকার না হলেও ব্যবহার করা হবে।

দ্রষ্টব্য: যদি ফোর্সড এক্সিকিউশন প্ল্যাটফর্মটি বৈধ না হয় (কারণ কোন বৈধ টুলচেইন নেই, বা নিয়ম বা লক্ষ্য থেকে কার্যকর করার সীমাবদ্ধতার কারণে), তাহলে তার পরিবর্তে সর্বোচ্চ-অগ্রাধিকার বৈধ এক্সিকিউশন প্ল্যাটফর্ম ব্যবহার করা হবে।