অতিরিক্ত অ্যাকশনের নিয়ম

নিয়ম

কর্ম_শ্রোতা

action_listener(name, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, extra_actions, features, licenses, mnemonics, restricted_to, tags, target_compatible_with, testonly, visibility)

সতর্কতা: অতিরিক্ত ক্রিয়াকলাপ বাতিল করা হয়েছে। পরিবর্তে দিক ব্যবহার করুন.

একটি action_listener নিয়ম নিজেই কোনো আউটপুট তৈরি করে না। পরিবর্তে, এটি টুল ডেভেলপারদের বিল্ড সিস্টেমে extra_action গুলি ঢোকানোর অনুমতি দেয়, অ্যাকশন থেকে extra_action এ ম্যাপিং প্রদান করে।

এই নিয়মের আর্গুমেন্ট অ্যাকশন extra_action নিয়মে ম্যাপ করে।

--experimental_action_listener=<label> বিকল্পটি নির্দিষ্ট করে, বিল্ড গ্রাফে extra_action গুলি সন্নিবেশ করতে নির্দিষ্ট action_listener ব্যবহার করবে।

উদাহরণ

action_listener(
    name = "index_all_languages",
    mnemonics = [
        "Javac",
        "CppCompile",
        "Python",
    ],
    extra_actions = [":indexer"],
)

action_listener(
    name = "index_java",
    mnemonics = ["Javac"],
    extra_actions = [":indexer"],
)

extra_action(
    name = "indexer",
    tools = ["//my/tools:indexer"],
    cmd = "$(location //my/tools:indexer)" +
          "--extra_action_file=$(EXTRA_ACTION_FILE)",
)

যুক্তি

গুণাবলী
name

Name ; required

এই লক্ষ্যের জন্য একটি অনন্য নাম।

extra_actions

List of labels ; required

action_listener extra_action গ্রাফে যোগ করা উচিত। যেমন [ "//my/tools:analyzer" ]
mnemonics

List of strings; required

অ্যাকশন স্মৃতিবিদ্যার একটি তালিকা এই action_listener শুনতে হবে, যেমন [ "Javac" ]

স্মৃতিবিদ্যা কোনো পাবলিক ইন্টারফেস নয়। স্মৃতিবিদ্যা এবং তাদের ক্রিয়াগুলি পরিবর্তিত হয় না এমন কোনও গ্যারান্টি নেই।

অতিরিক্ত_ক্রিয়া

extra_action(name, data, cmd, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, out_templates, requires_action_output, restricted_to, tags, target_compatible_with, testonly, toolchains, tools, visibility)

সতর্কতা: অতিরিক্ত ক্রিয়াকলাপ বাতিল করা হয়েছে। পরিবর্তে দিক ব্যবহার করুন.

একটি extra_action নিয়ম নিয়মিত বিল্ড টার্গেট হিসাবে নির্দিষ্ট করার সময় কোনো অর্থপূর্ণ আউটপুট তৈরি করে না। পরিবর্তে, এটি টুল বিকাশকারীদের বিল্ড গ্রাফে অতিরিক্ত অ্যাকশন সন্নিবেশ করার অনুমতি দেয় যা বিদ্যমান ক্রিয়াগুলিকে ছায়া দেয়।

কিভাবে extra_action সক্ষম করতে হয় তার বিস্তারিত জানতে action_listener দেখুন।

extra_action একটি কমান্ড-লাইন হিসাবে চালানো হয়। কমান্ড-লাইন টুলটি $(EXTRA_ACTION_FILE) হিসাবে একটি প্রোটোকল বাফার ধারণ করে এমন একটি ফাইলে অ্যাক্সেস পায় যাতে এটি ছায়া করছে মূল অ্যাকশনের বিস্তারিত তথ্য। মূল অ্যাকশনের অ্যাক্সেস আছে এমন সমস্ত ইনপুট ফাইলেও এটির অ্যাক্সেস রয়েছে। প্রোটোকল বাফারের ভিতরে সংরক্ষিত ডেটার বিস্তারিত জানার জন্য extra_actions_base.proto দেখুন। প্রতিটি প্রোটো ফাইলে একটি ExtraActionInfo বার্তা রয়েছে।

অন্যান্য সমস্ত ক্রিয়াগুলির মতো, অতিরিক্ত ক্রিয়াগুলি স্যান্ডবক্সযুক্ত, এবং এটি পরিচালনা করার জন্য ডিজাইন করা উচিত৷

যুক্তি

গুণাবলী
name

Name ; required

এই লক্ষ্যের জন্য একটি অনন্য নাম।

আপনি action_listener নিয়মের extra_actions আর্গুমেন্টে label দ্বারা এই নিয়মটি উল্লেখ করতে পারেন।
cmd

String; required

চালানোর নির্দেশ।

নিম্নলিখিত পার্থক্য সহ জেনরুল সিএমডি অ্যাট্রিবিউটের মতো:

  1. কোনো হিউরিস্টিক লেবেল সম্প্রসারণ নেই। শুধুমাত্র $(অবস্থান ...) ব্যবহার করে লেবেল প্রসারিত করা হয়।

  2. out_templates অ্যাট্রিবিউট থেকে তৈরি আউটপুটগুলির সমস্ত ঘটনা প্রতিস্থাপন করতে স্ট্রিংটিতে একটি অতিরিক্ত পাস প্রয়োগ করা হয়। $(output out_template ) এর সমস্ত ঘটনা label দ্বারা চিহ্নিত ফাইলের পাথ দিয়ে প্রতিস্থাপিত হয়।

    যেমন out_template $(ACTION_ID).analysis .বিশ্লেষণ $(output $(ACTION_ID).analysis) সাথে মিলিত হতে পারে।

    কার্যত, এটি $(location) হিসাবে একই প্রতিস্থাপন কিন্তু একটি ভিন্ন সুযোগ সহ।

out_templates

List of strings; optional

extra_action কমান্ড দ্বারা উত্পন্ন ফাইলগুলির জন্য টেমপ্লেটগুলির একটি তালিকা৷

টেমপ্লেট নিম্নলিখিত ভেরিয়েবল ব্যবহার করতে পারে:

  • $( extra_action ), একটি আইডি অনন্যভাবে এই অতিরিক্ত_অ্যাকশন সনাক্ত করে। একটি অনন্য আউটপুট ফাইল তৈরি করতে ব্যবহৃত হয়।

requires_action_output

Boolean; optional; default is False

নির্দেশ করে যে এই extra_action এর জন্য মূল ক্রিয়াটির আউটপুট এই extra_action এ ইনপুট হিসাবে উপস্থিত থাকা প্রয়োজন।

যখন সত্য (ডিফল্ট মিথ্যা), তখন extra_action অনুমান করতে পারে যে মূল অ্যাকশন আউটপুটগুলি এর ইনপুটগুলির অংশ হিসাবে উপলব্ধ।

tools

List of labels ; optional

এই নিয়মের জন্য tool নির্ভরতার একটি তালিকা।

আরও তথ্যের জন্য নির্ভরতার সংজ্ঞা দেখুন।

বিল্ড সিস্টেম নিশ্চিত করে যে extra_action কমান্ড চালানোর আগে এই পূর্বশর্তগুলি তৈরি করা হয়েছে; এগুলি host কনফিগারেশন ব্যবহার করে তৈরি করা হয়, যেহেতু বিল্ড করার সময় তাদের অবশ্যই একটি টুল হিসাবে চালাতে হবে। $(location //x:y) ব্যবহার করে একটি পৃথক tools টার্গেট //x:y এর পথ পাওয়া যেতে পারে।

সমস্ত সরঞ্জাম এবং তাদের ডেটা নির্ভরতা একটি একক গাছে একত্রিত হয় যার মধ্যে কমান্ড আপেক্ষিক পাথ ব্যবহার করতে পারে। ওয়ার্কিং ডিরেক্টরি হবে সেই ইউনিফাইড ট্রির মূল।