Spec-Zone.ru › Bazel 6.3

Правила оболочки

Правила

  • sh_binary
  • sh_library
  • sh_test

sh_binary

sh_binary(name, deps, srcs, data, args, compatible_with, deprecation, distribs, env, exec_compatible_with, exec_properties, features, licenses, output_licenses, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)

Правило sh_binary используется для объявления исполняемых сценариев оболочки. (sh_binary — неудачное название: его выходные данные не обязательно являются двоичными файлами.) Это правило гарантирует, что все зависимости построены и отображаются в области runfiles во время выполнения. Рекомендуется называть ваши sh_binary() правила по имени сценария без расширения (например, .sh); имя правила и имя файла должны быть различными. sh_binary учитывает shebang, поэтому можно использовать любой доступный интерпретатор (например, #!/bin/zsh)

Пример

Для простого сценария оболочки без зависимостей и некоторых файлах данных:

sh_binary(
    name = "foo",
    srcs = ["foo.sh"],
    data = glob(["datafiles/*.txt"]),
)

Аргументы

Атрибуты
name

Name; required

Уникальное имя для этой цели.

deps

List of labels; optional

Список целей «библиотеки», которые должны быть объединены в эту цель. См. общие замечания по deps в Типичные атрибуты, определенные большинством правил сборки.

Этот атрибут должен использоваться для перечисления других sh_library правил, предоставляющих исходный код интерпретируемой программы, от которой зависит код в srcs. Файлы, предоставленные этими правилами, будут присутствовать среди runfiles этой цели.

srcs

List of labels; required

Файл, содержащий сценарий оболочки.

Этот атрибут должен быть списком из одного элемента, который является сценарием оболочки. Этот сценарий должен быть исполняемым и может быть исходным файлом или сгенерированным файлом. Все другие файлы, необходимые во время выполнения (будь то сценарии или данные), должны находиться в атрибуте data.

sh_library

sh_library(name, deps, srcs, data, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, restricted_to, tags, target_compatible_with, testonly, visibility)

Основное назначение этого правила — объединить логическую «библиотеку», состоящую из связанных скриптов — программ на интерпретируемом языке, не требующем компиляции или компоновки, например, Bourne shell, и любых данных, которые этим программам необходимы во время выполнения. Такие «библиотеки» затем могут использоваться из атрибута data одного или нескольких sh_binary правил.

Вы можете использовать правило filegroup для объединения файлов данных.

В интерпретируемых языках программирования не всегда существует четкое различие между «кодом» и «данными»: в конце концов, программа — это просто «данные» с точки зрения интерпретатора. По этой причине это правило имеет три атрибута, которые по сути являются эквивалентными: srcs, deps и data. Текущая реализация не различает элементы этих списков. Все три атрибута принимают правила, исходные файлы и сгенерированные файлы. Тем не менее, хорошей практикой является использование атрибутов для их обычного назначения (как и в других правилах).

Примеры

sh_library(
    name = "foo",
    data = [
        ":foo_service_script",  # an sh_binary with srcs
        ":deploy_foo",  # another sh_binary with srcs
    ],
)

Аргументы

Атрибуты
name

Name; required

Уникальное имя для этой цели.

deps

List of labels; optional

Список целей «библиотеки», которые должны быть объединены в эту цель. См. общие замечания по deps в Типичные атрибуты, определенные большинством правил сборки.

Этот атрибут должен использоваться для перечисления других sh_library правил, предоставляющих исходный код интерпретируемой программы, от которой зависит код в srcs. Файлы, предоставленные этими правилами, будут присутствовать среди runfiles этой цели.

srcs

List of labels; optional

Список входных файлов.

Этот атрибут должен использоваться для перечисления исходных файлов сценариев оболочки, которые принадлежат к этой библиотеке. Сценарии могут загружать другие сценарии с помощью команд source или . оболочки.

sh_test

sh_test(name, deps, srcs, data, args, compatible_with, deprecation, distribs, env, env_inherit, exec_compatible_with, exec_properties, features, flaky, licenses, local, restricted_to, shard_count, size, tags, target_compatible_with, testonly, timeout, toolchains, visibility)

Правило sh_test() создает тест, написанный как сценарий оболочки Bourne.

См. атрибуты, общие для всех правил тестирования (*_test).

Примеры

sh_test(
    name = "foo_integration_test",
    size = "small",
    srcs = ["foo_integration_test.sh"],
    deps = [":foo_sh_lib"],
    data = glob(["testdata/*.txt"]),
)

Аргументы

Атрибуты
name

Name; required

Уникальное имя для этой цели.

deps

List of labels; optional

Список целей «библиотеки», которые должны быть объединены в эту цель. См. общие замечания по deps в Типичные атрибуты, определенные большинством правил сборки.

Этот атрибут должен использоваться для перечисления других sh_library правил, предоставляющих исходный код интерпретируемой программы, от которой зависит код в srcs. Файлы, предоставленные этими правилами, будут присутствовать среди runfiles этой цели.

srcs

List of labels; required

Файл, содержащий сценарий оболочки.

Этот атрибут должен быть списком из одного элемента, который является сценарием оболочки. Этот сценарий должен быть исполняемым и может быть исходным файлом или сгенерированным файлом. Все другие файлы, необходимые во время выполнения (будь то сценарии или данные), должны находиться в атрибуте data.

За исключением случаев, когда указано иное, содержимое этой страницы лицензируется по лицензии Creative Commons Attribution 4.0, а примеры кода — по лицензии Apache 2.0. Подробности см. в Политиках сайта Google Developers. Java — зарегистрированный товарный знак Oracle и/или его дочерних компаний.

Последнее обновление 2023-07-25 UTC.

Licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License.
https://bazel.build/versions/6.3.0/reference/be/shell

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API