قوانین اقدامات اضافی

قوانین

اقدام_شنونده

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 خودش هیچ خروجی تولید نمی کند. درعوض، به توسعه دهندگان ابزار اجازه می دهد تا با ارائه نقشه برداری از action به extra_action ، extra_action را در سیستم ساخت وارد کنند.

آرگومان های این قانون، یادداشت های کنش را به قوانین extra_action می کند.

با تعیین گزینه --experimental_action_listener=<label> ، بیلد از action_listener مشخص شده برای درج extra_action در گراف ساخت استفاده می کند.

مثال

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

فهرستی از اهداف extra_action که این action_listener باید به نمودار ساخت اضافه کند. به عنوان مثال [ "//my/tools:analyzer" ] .
mnemonics

List of strings; required

فهرستی از یادداشت های اکشن که این action_listener باید به آن گوش دهد، به عنوان مثال [ "Javac" ] .

Mnemonics یک رابط عمومی نیستند. هیچ تضمینی وجود ندارد که حافظه و اقدامات آنها تغییر نکند.

extra_action

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 s به action_listener مراجعه کنید.

extra_action s به عنوان یک خط فرمان اجرا می شود. ابزار خط فرمان به فایلی که حاوی یک بافر پروتکل به‌عنوان $(EXTRA_ACTION_FILE) با اطلاعات دقیق در مورد عملکرد اصلی است دسترسی پیدا می‌کند. همچنین به تمام فایل های ورودی که اکشن اصلی به آنها دسترسی دارد دسترسی دارد. برای جزئیات بیشتر در مورد داده های ذخیره شده در بافر پروتکل به extra_actions_base.proto مراجعه کنید. هر فایل پروتو حاوی یک پیام ExtraActionInfo است.

دقیقاً مانند همه اقدامات دیگر، اقدامات اضافی در جعبه سندباد قرار دارند و باید طوری طراحی شوند که از عهده آن برآیند.

استدلال ها

ویژگی های
name

Name ; required

یک نام منحصر به فرد برای این هدف.

می توانید در آرگومان extra_actions قوانین action_listener به این قانون با label اشاره کنید.
cmd

String; required

دستور اجرا.

مانند genrule ویژگی cmd با تفاوت های زیر:

  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 .

قالب می تواند از متغیرهای زیر استفاده کند:

  • $(ACTION_ID)، شناسه‌ای که به طور منحصربه‌فردی این extra_action را شناسایی می‌کند. برای تولید یک فایل خروجی منحصر به فرد استفاده می شود.

requires_action_output

Boolean; optional; default is False

نشان می دهد که این extra_action نیاز دارد که خروجی اکشن اصلی به عنوان ورودی این extra_action باشد.

هنگامی که true (default false)، extra_action می‌تواند فرض کند که خروجی‌های اقدام اصلی به عنوان بخشی از ورودی‌های آن در دسترس هستند.

tools

List of labels ; optional

فهرستی از وابستگی های tool برای این قانون.

برای اطلاعات بیشتر به تعریف وابستگی ها مراجعه کنید.

سیستم ساخت اطمینان حاصل می کند که این پیش نیازها قبل از اجرای دستور extra_action ساخته شده اند. آنها با استفاده از پیکربندی host ساخته می شوند، زیرا باید به عنوان یک ابزار در طول خود ساخت اجرا شوند. مسیر یک tools مجزا //x:y را می توان با استفاده از $(location //x:y) بدست آورد.

همه ابزارها و وابستگی های داده آنها در یک درخت واحد ادغام می شوند که در آن دستور می تواند از مسیرهای نسبی استفاده کند. دایرکتوری کاری ریشه درخت یکپارچه خواهد بود.