toolchains |
List of labels
; optional; nonconfigurable Набор целей, к чьим переменным Make имеет доступ эта цель. Эти цели являются либо экземплярами правил, предоставляющих TemplateVariableInfo , либо специальными целями для типов инструментальных цепочек, встроенных в Bazel. К ним относятся:
-
@bazel_tools//tools/cpp:current_cc_toolchain
-
@bazel_tools//tools/jdk:current_java_runtime
Обратите внимание, что это отличается от концепции разрешения инструментальных цепочек, используемой реализациями правил для платформозависимой конфигурации. Вы не можете использовать этот атрибут для определения конкретной cc_toolchain или java_toolchain , которую будет использовать цель. |
visibility |
List of labels
; optional;
default default_visibility from
package if specified, or //visibility:private
otherwise; nonconfigurable Атрибут visibility цели управляет тем, может ли цель использоваться в других пакетах. См. документацию по видимости. |
Атрибуты, общие для всех правил тестирования (*_test)
В этом разделе описаны атрибуты, общие для всех правил тестирования.
| Атрибут | Описание |
args |
List of strings; optional; subject to
$(location) and
"Make variable" substitution, and
Bourne shell tokenization Аргументы командной строки, которые Bazel передаёт цели при её выполнении с bazel test.
Эти аргументы передаются до любых значений --test_arg , указанных в bazel test командной строке. |
env |
Dictionary of strings; optional; values are subject to
$(location) and
"Make variable" substitution Указывает дополнительные переменные среды, которые нужно установить при выполнении теста bazel test. Этот атрибут применяется только к нативным правилам, таким как cc_test, py_test, и sh_test. Он не применяется к правилам тестирования, определённым Starlark. Для собственных правил Starlark вы можете добавить атрибут "env" и использовать его для заполнения TestEnvironment Provider. |
env_inherit |
List of strings; optional Указывает дополнительные переменные среды для наследования из внешней среды при выполнении теста bazel test. Этот атрибут применяется только к нативным правилам, таким как cc_test, py_test, и sh_test. Он не применяется к правилам тестирования, определённым Starlark. |
size |
String "enormous", "large" "medium" or "small",
default is "medium"; optional; nonconfigurable Указывает "весомость" целевого объекта теста: сколько времени/ресурсов он требует для выполнения. Тесты юнит-тестирования считаются "небольшими", интеграционные тесты — "средними", а тесты пограничных условий — "большими" или "огромными". Bazel использует размер для определения значения таймаута по умолчанию, которое может быть переопределено с помощью атрибута timeout. Таймаут относится ко всем тестам в целевом объекте BUILD, а не к каждому отдельному тесту. При выполнении теста локально значение size также используется для планирования: Bazel старается соблюдать --local_{ram,cpu}_resources и не перегружать локальную машину запуском большого количества тяжёлых тестов одновременно. Размеры тестов соответствуют следующим значениям таймаута по умолчанию и предполагаемому пиковому использованию локальных ресурсов: | Размер | ОЗУ (в МБ) | Процессор (в ядрах) | Таймаут по умолчанию | | маленький | 20 | 1 | короткий (1 минута) | | средний | 100 | 1 | умеренный (5 минут) | | большой | 300 | 1 | длинный (15 минут) | | огромный | 800 | 1 | вечный (60 минут) | Переменная среды
TEST_SIZE
будет установлена в значение этого атрибута при запуске теста. |
timeout |
String "short", "moderate", "long", "eternal"
(with the default derived from the test's size attribute); nonconfigurable Сколько времени ожидается, что тест будет выполняться, прежде чем он вернётся. В то время как атрибут размера теста управляет оценкой ресурсов, таймаут теста может быть установлен независимо. Если не указан явно, таймаут основан на размере теста. Таймаут теста можно переопределить с помощью флага --test_timeout, например, для запуска в определённых условиях, которые известны как медленные. Значения таймаута тестов соответствуют следующим временным интервалам: | Значение таймаута | Временной интервал | | короткий | 1 минута | | умеренный | 5 минут | | длинный | 15 минут | | вечный | 60 минут | Для других значений, кроме вышеперечисленных, таймаут теста может быть переопределён с помощью флага Bazel --test_timeout, например, для ручного запуска в условиях, которые известны как медленные. Значения --test_timeout выражены в секундах. Например, --test_timeout=120 установит таймаут теста на две минуты. Переменная среды
TEST_TIMEOUT
будет установлена в таймаут теста (в секундах) при запуске теста. |
flaky |
Boolean; optional; default False; nonconfigurable Отмечает тест как ненадёжный. При установке, тест выполняется до трёх раз, отмечая его как не пройденный только в случае неудачи каждый раз. По умолчанию этот атрибут установлен в False, и тест выполняется только один раз. Обратите внимание, что использование этого атрибута, как правило, не рекомендуется — тесты должны надёжно проходить, когда их утверждения поддерживаются. |
shard_count |
Non-negative integer less than or equal to 50; optional Указывает количество параллельных фрагментов для запуска теста. Это значение переопределит все эвристики, используемые для определения количества параллельных фрагментов для запуска теста. Обратите внимание, что для некоторых правил тестирования этот параметр может быть необходим для включения фрагментации в первую очередь. Также см. --test_sharding_strategy. Если фрагментация теста включена, переменная среды
TEST_TOTAL_SHARDS
будет установлена в это значение при запуске теста. Для фрагментации теста требуется, чтобы инструмент тестирования поддерживал протокол фрагментации тестов. Если он этого не поддерживает, то он, скорее всего, выполнит каждый тест в каждом фрагменте, чего вы не хотите. См. Фрагментация тестов в энциклопедии тестов для получения подробной информации о фрагментации. |
local |
Boolean; default False; nonconfigurable Принудительно запускает тест локально без песочницы. Установка этого значения в True эквивалентна предоставлению "локального" тега (tags=["local"]). |
Атрибуты, общие для всех правил бинарных файлов (*_binary)
В этом разделе описаны атрибуты, общие для всех правил бинарных файлов.
| Атрибут | Описание |
args |
List of strings; optional; subject to
$(location) and
"Make variable" substitution, and
Bourne shell tokenization;
nonconfigurable Аргументы командной строки, которые Bazel передаёт целевому объекту при его выполнении с помощью команды run или в качестве теста. Эти аргументы передаются до тех, что указаны в bazel run или bazel test командной строке. ПРИМЕЧАНИЕ: аргументы не передаются при запуске целевого объекта вне Bazel (например, путём ручного выполнения бинарного файла в bazel-bin/). |
env |
Dictionary of strings; optional; values are subject to
$(location) and
"Make variable" substitution Указывает дополнительные переменные среды, которые нужно установить при выполнении целевого объекта bazel run. Этот атрибут применяется только к нативным правилам, таким как cc_binary, py_binary, и sh_binary. Он не применяется к правилам исполняемых файлов, определённым Starlark. ПРИМЕЧАНИЕ: переменные среды не устанавливаются при запуске целевого объекта вне Bazel (например, путём ручного выполнения бинарного файла в bazel-bin/). |
output_licenses |
List of strings; optional Лицензии выходных файлов, которые генерирует этот бинарный файл. Это часть устаревшего API лицензий, который Bazel больше не использует. Не используйте это. |
Настраиваемые атрибуты
Большинство атрибутов являются "настраиваемыми", то есть их значения могут изменяться при построении целевого объекта разными способами. В частности, настраиваемые атрибуты могут изменяться в зависимости от флагов, переданных в командную строку Bazel, или от того, какая зависимость запроса целевого объекта. Это можно использовать, например, для настройки целевого объекта для нескольких платформ или режимов компиляции.
Следующий пример объявляет различные источники для различных архитектур целевых объектов. Запуск bazel build :multiplatform_lib --cpu x86 позволит построить целевой объект с помощью x86_impl.cc, в то время как замена --cpu arm вместо этого заставит его использовать arm_impl.cc.
cc_library(
name = "multiplatform_lib",
srcs = select({
":x86_mode": ["x86_impl.cc"],
":arm_mode": ["arm_impl.cc"]
})
)
config_setting(
name = "x86_mode",
values = { "cpu": "x86" }
)
config_setting(
name = "arm_mode",
values = { "cpu": "arm" }
)
Функция select() выбирает среди различных альтернативных значений для настраиваемого атрибута в зависимости от того, какие config_setting или constraint_value критерии удовлетворяет конфигурация целевого объекта.
Bazel вычисляет настраиваемые атрибуты после обработки макросов и до обработки правил (технически, между фазами загрузки и анализа). Любая обработка до оценки select() не знает, какой ветвь select() выбирает. Макросы, например, не могут изменить своё поведение на основе выбранной ветви, и bazel query может только сделать консервативные предположения о настраиваемых зависимостях целевого объекта. См. этот FAQ для получения дополнительной информации об использовании select() с правилами и макросами.
Атрибуты, помеченные как nonconfigurable в их документации, не могут использовать эту функцию. Обычно атрибут не является настраиваемым, потому что Bazel внутренне должен знать его значение, прежде чем он сможет определить, как разрешить select().
См. Настраиваемые атрибуты сборки для подробного обзора.
Неявные выходные цели
Неявные выходные данные в C++ устарели. Пожалуйста, воздержитесь от их использования в других языках, где это возможно. У нас пока нет пути устаревания, но они будут в конечном итоге устареть и в других языках.