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

স্থানীয়

সেভ করা পৃষ্ঠা গুছিয়ে রাখতে 'সংগ্রহ' ব্যবহার করুন আপনার পছন্দ অনুযায়ী কন্টেন্ট সেভ করুন ও সঠিক বিভাগে রাখুন।
একটি অন্তর্নির্মিত মডিউল নেটিভ নিয়ম এবং অন্যান্য প্যাকেজ সাহায্যকারী ফাংশন সমর্থন করার জন্য। সমস্ত নেটিভ নিয়ম এই মডিউলে ফাংশন হিসাবে উপস্থিত হয়, যেমন native.cc_library । মনে রাখবেন যে নেটিভ মডিউল শুধুমাত্র লোডিং পর্যায়ে উপলব্ধ (যেমন ম্যাক্রোর জন্য, নিয়ম বাস্তবায়নের জন্য নয়)। অ্যাট্রিবিউটগুলি None মানকে উপেক্ষা করবে এবং তাদের সাথে এমনভাবে আচরণ করবে যেন অ্যাট্রিবিউটটি সেট করা হয়নি৷
নিম্নলিখিত ফাংশন এছাড়াও উপলব্ধ:

সদস্যরা

বিদ্যমান_বিধি

unknown native.existing_rule(name)

একটি অপরিবর্তনীয় ডিক্ট-সদৃশ বস্তু প্রদান করে যা এই থ্রেডের প্যাকেজে ইনস্ট্যান্টিয়েট করা একটি নিয়মের বৈশিষ্ট্য বর্ণনা করে, অথবা সেই নামের কোনো নিয়মের উদাহরণ না থাকলে None নয়।

এখানে, একটি অপরিবর্তনীয় dict-এর মতো বস্তুর অর্থ হল একটি গভীরভাবে অপরিবর্তনীয় বস্তু x সমর্থন করে dict-এর মতো পুনরাবৃত্তি, len(x) , x- name in x , x[name] , x.get(name) , x.items() , x.keys() , এবং x.values()

যদি --noincompatible_existing_rules_immutable_view পতাকা সেট করা হয়, তার পরিবর্তে একই বিষয়বস্তু সহ একটি নতুন পরিবর্তনযোগ্য ডিক্ট প্রদান করে।

ফলাফলে প্রতিটি বৈশিষ্ট্যের জন্য একটি এন্ট্রি রয়েছে, ব্যক্তিগতগুলি (যাদের নাম একটি অক্ষর দিয়ে শুরু হয় না) এবং কয়েকটি অপ্রতিরোধ্য উত্তরাধিকার বৈশিষ্ট্যের ধরনগুলি বাদ দিয়ে। উপরন্তু, ডিক্টে নিয়ম উদাহরণের name এবং kind (উদাহরণস্বরূপ, 'cc_binary' ) এন্ট্রি রয়েছে।

ফলাফলের মানগুলি নিম্নরূপ বৈশিষ্ট্যের মানগুলিকে উপস্থাপন করে:

  • str, int, এবং bool টাইপের বৈশিষ্ট্যগুলিকে হিসাবে উপস্থাপন করা হয়।
  • লেবেলগুলি একই প্যাকেজে লক্ষ্যগুলির জন্য ':foo' ফর্মের স্ট্রিং বা অন্য প্যাকেজে লক্ষ্যগুলির জন্য '//pkg:name' এ রূপান্তরিত হয়।
  • তালিকাগুলিকে টিপল হিসাবে উপস্থাপন করা হয় এবং ডিক্টগুলিকে নতুন, পরিবর্তনযোগ্য নির্দেশাবলীতে রূপান্তরিত করা হয়। তাদের উপাদানগুলি একই ফ্যাশনে পুনরাবৃত্তিমূলকভাবে রূপান্তরিত হয়।
  • select মানগুলি তাদের বিষয়বস্তুগুলিকে উপরে বর্ণিত হিসাবে রূপান্তরিত করে ফেরত দেওয়া হয়।
  • যে বৈশিষ্ট্যগুলির জন্য নিয়ম ইনস্ট্যান্টেশনের সময় কোনও মান নির্দিষ্ট করা হয়নি এবং যার ডিফল্ট মান গণনা করা হয়েছে সেগুলি ফলাফল থেকে বাদ দেওয়া হয়েছে৷ (গণনা করা ডিফল্ট বিশ্লেষণ ফেজ পর্যন্ত গণনা করা যাবে না.)

যদি সম্ভব হয়, এই ফাংশন ব্যবহার এড়িয়ে চলুন. এটি বিল্ড ফাইলগুলিকে ভঙ্গুর এবং অর্ডার-নির্ভর করে তোলে। এছাড়াও, সতর্ক থাকুন যে এটি অভ্যন্তরীণ ফর্ম থেকে স্টারলার্ক পর্যন্ত নিয়ম বৈশিষ্ট্যের মানগুলির দুটি রূপান্তর থেকে সূক্ষ্মভাবে পৃথক: একটি গণনাকৃত ডিফল্ট দ্বারা ব্যবহৃত হয়, ctx.attr.foo দ্বারা ব্যবহৃত হয়।

পরামিতি

প্যারামিটার বর্ণনা
name প্রয়োজনীয়
টার্গেটের নাম।

বিদ্যমান_বিধি

unknown native.existing_rules()

এই থ্রেডের প্যাকেজে এখনও অবধি তাত্ক্ষণিক নিয়মগুলি বর্ণনা করে একটি অপরিবর্তনীয় ডিক্ট-এর মতো বস্তু প্রদান করে। dict-এর মতো অবজেক্টের প্রতিটি এন্ট্রি নিয়ম উদাহরণের নাম ম্যাপ করে ফলাফলে যা existing_rule(name) দ্বারা ফেরত দেওয়া হবে।

এখানে, একটি অপরিবর্তনীয় dict-এর মতো বস্তুর অর্থ হল একটি গভীরভাবে অপরিবর্তনীয় বস্তু x সমর্থন করে dict-এর মতো পুনরাবৃত্তি, len(x) , x- name in x , x[name] , x.get(name) , x.items() , x.keys() , এবং x.values()

যদি --noincompatible_existing_rules_immutable_view পতাকা সেট করা হয়, তার পরিবর্তে একই বিষয়বস্তু সহ একটি নতুন পরিবর্তনযোগ্য ডিক্ট প্রদান করে।

দ্রষ্টব্য: যদি সম্ভব হয়, এই ফাংশন ব্যবহার এড়িয়ে চলুন. এটি বিল্ড ফাইলগুলিকে ভঙ্গুর এবং অর্ডার-নির্ভর করে তোলে। উপরন্তু, যদি --noincompatible_existing_rules_immutable_view পতাকা সেট করা হয়, এই ফাংশনটি খুব ব্যয়বহুল হতে পারে, বিশেষ করে যদি একটি লুপের মধ্যে বলা হয়।

রপ্তানি_ফাইল

None native.exports_files(srcs, visibility=None, licenses=None)

এই প্যাকেজের অন্তর্গত ফাইলগুলির একটি তালিকা নির্দিষ্ট করে যা অন্যান্য প্যাকেজে রপ্তানি করা হয়।

পরামিতি

প্যারামিটার বর্ণনা
srcs sequence of string s ; প্রয়োজনীয়
রপ্তানি করার জন্য ফাইলগুলির তালিকা৷
visibility sequence ; or None ; ডিফল্ট = কোনোটিই নয়
একটি দৃশ্যমানতা ঘোষণা নির্দিষ্ট করা যেতে পারে. ফাইলগুলি নির্দিষ্ট লক্ষ্যে দৃশ্যমান হবে। যদি কোন দৃশ্যমানতা নির্দিষ্ট করা না থাকে, ফাইলগুলি প্রতিটি প্যাকেজে দৃশ্যমান হবে।
licenses sequence of string s; or None ; ডিফল্ট = কোনোটিই নয়
লাইসেন্স নির্দিষ্ট করা.

গ্লোব

sequence native.glob(include=[], exclude=[], exclude_directories=1, allow_empty=unbound)

Glob বর্তমান প্যাকেজের প্রতিটি ফাইলের একটি নতুন, পরিবর্তনযোগ্য, সাজানো তালিকা প্রদান করে যা:
  • include অন্তত একটি প্যাটার্ন মেলে.
  • exclude প্যাটার্নগুলির সাথে মেলে না (ডিফল্ট [] )।
exclude_directories আর্গুমেন্ট সক্রিয় করা থাকলে ( 1 তে সেট করুন), টাইপ ডিরেক্টরির ফাইলগুলি ফলাফল থেকে বাদ দেওয়া হবে (ডিফল্ট 1 )।

পরামিতি

প্যারামিটার বর্ণনা
include sequence of string s ; ডিফল্ট = []
গ্লোব প্যাটার্নের তালিকা অন্তর্ভুক্ত করার জন্য।
exclude sequence of string s ; ডিফল্ট = []
বাদ দেওয়ার জন্য গ্লোব প্যাটার্নের তালিকা।
exclude_directories ডিফল্ট = 1
ডিরেক্টরিগুলি বাদ দিতে হবে বা না করতে হবে কিনা তা একটি পতাকা৷
allow_empty ডিফল্ট = আবদ্ধ
আমরা গ্লোব প্যাটার্নের সাথে কিছুই মেলে না। যদি 'allow_empty' False হয়, তাহলে প্রত্যেকটি ইনক্লুড প্যাটার্ন অবশ্যই কিছুর সাথে মিলে যাবে এবং চূড়ান্ত ফলাফল অবশ্যই খালি থাকবে না ('বাদ দেওয়া' প্যাটার্নের মিলগুলি বাদ দেওয়ার পর)।

প্যাকেজ_গ্রুপ

None native.package_group(name, packages=[], includes=[])

এই ফাংশন প্যাকেজের একটি সেট সংজ্ঞায়িত করে এবং গ্রুপে একটি লেবেল বরাদ্দ করে। লেবেলটি visibility বৈশিষ্ট্যগুলিতে উল্লেখ করা যেতে পারে।

পরামিতি

প্যারামিটার বর্ণনা
name প্রয়োজনীয়
এই নিয়মের অনন্য নাম।
packages sequence of string s ; ডিফল্ট = []
এই গ্রুপে প্যাকেজের একটি সম্পূর্ণ গণনা।
includes sequence of string s ; ডিফল্ট = []
অন্যান্য প্যাকেজ গ্রুপ যে এই এক অন্তর্ভুক্ত করা হয়.

প্যাকেজ_নাম

string native.package_name()

প্যাকেজের নাম মূল্যায়ন করা হচ্ছে। উদাহরণস্বরূপ, BUILD ফাইলটিতে some/package/BUILD , এর মান হবে some/package । যদি BUILD ফাইলটি একটি .bzl ফাইলে সংজ্ঞায়িত একটি ফাংশনকে কল করে, তাহলে package_name() কলার BUILD ফাইল প্যাকেজের সাথে মিলবে। এই ফাংশনটি অপ্রচলিত পরিবর্তনশীল PACKAGE_NAME এর সমতুল্য।

repository_name

string native.repository_name()

রিপোজিটরির নাম থেকে রুল বা বিল্ড এক্সটেনশন বলা হয়। উদাহরণ স্বরূপ, WORKSPACE স্তবক local_repository(name='local', path=...) দ্বারা বিদ্যমান প্যাকেজগুলিতে এটি @local সেট করা হবে। প্রধান সংগ্রহস্থলের প্যাকেজগুলিতে, এটি @ এ সেট করা হবে। এই ফাংশনটি অপ্রচলিত পরিবর্তনশীল REPOSITORY_NAME এর সমতুল্য।

সাবপ্যাকেজ

sequence native.subpackages(include, exclude=[], allow_empty=False)

ফাইল-সিস্টেম ডিরেক্টরির গভীরতা নির্বিশেষে বর্তমান প্যাকেজের প্রতিটি সরাসরি উপপ্যাকেজের একটি নতুন পরিবর্তনযোগ্য তালিকা প্রদান করে। প্রত্যাবর্তিত তালিকাটি সাজানো হয়েছে এবং বর্তমান প্যাকেজের সাথে সম্পর্কিত সাবপ্যাকেজের নাম রয়েছে। এই ফাংশনটি সরাসরি কল করার পরিবর্তে bazel_skylib.subpackages মডিউলের পদ্ধতিগুলি ব্যবহার করার পরামর্শ দেওয়া হচ্ছে৷

পরামিতি

প্যারামিটার বর্ণনা
include sequence of string s ; প্রয়োজনীয়
সাবপ্যাকেজ স্ক্যানে অন্তর্ভুক্ত করার জন্য গ্লোব প্যাটার্নের তালিকা।
exclude sequence of string s ; ডিফল্ট = []
সাবপ্যাকেজ স্ক্যান থেকে বাদ দেওয়ার জন্য গ্লোব প্যাটার্নের তালিকা।
allow_empty ডিফল্ট = মিথ্যা
কলটি একটি খালি তালিকা ফেরত দিলে আমরা ব্যর্থ হব কিনা। ডিফল্টভাবে খালি তালিকা BUILD ফাইলে সম্ভাব্য ত্রুটি নির্দেশ করে যেখানে সাবপ্যাকেজেস()-এ কল অতিপ্রয়োজনীয়। সত্যে সেট করা এই ফাংশনটিকে সেই ক্ষেত্রে সফল হতে দেয়।