.bzl 파일

문제 신고

이 페이지에는 모든 .bzl 파일에서 사용할 수 있는 전역 메서드가 포함되어 있습니다.

구성원

분석_테스트_전환

transition analysis_test_transition(settings)

분석 테스트 규칙의 종속 항목에 적용할 구성 전환을 만듭니다. 이 전환은 analysis_test = True가 있는 규칙의 속성에만 적용될 수 있습니다. 이러한 규칙은 기능에서 제한되므로 (예: 종속 항목 트리의 크기가 제한됨) 이 함수를 사용하여 만든 전환은 transition()를 사용하여 만든 전환에 비해 잠재적 범위가 제한됩니다.

이 함수는 주로 Analysis Test Framework 핵심 라이브러리를 용이하게 하도록 설계되었습니다. 권장사항은 문서 (또는 구현)를 참조하세요.

매개변수

매개변수 설명
settings 필수
이 구성 전환으로 설정해야 하는 구성 설정에 대한 정보가 포함된 사전입니다. 키는 빌드 설정 라벨이며 값은 새로운 전환 후 값입니다. 다른 모든 설정은 변경되지 않습니다. 이를 통해 분석 테스트에 통과해야 하는 특정 구성 설정을 선언할 수 있습니다.

관점

Aspect aspect(implementation, attr_aspects=[], attrs=None, required_providers=[], required_aspect_providers=[], provides=[], requires=[], fragments=[], host_fragments=[], toolchains=[], incompatible_use_toolchain_transition=False, doc=None, *, apply_to_generating_rules=False, exec_compatible_with=[], exec_groups=None)

새로운 측면을 만듭니다. 이 함수의 결과는 전역 값으로 저장해야 합니다. 자세한 내용은 평가 항목 소개를 참고하세요.

매개변수

매개변수 설명
implementation 필수
이 부분을 구현하는 Starlark 함수로 정확히 두 매개변수, 즉 대상 (평가 요소가 적용되는 대상)과 ctx (대상이 생성되는 규칙 컨텍스트)가 있습니다. 대상의 속성은 ctx.rule 필드를 통해 사용할 수 있습니다. 이 함수는 분석 단계에서 타겟에 대한 각 측면의 애플리케이션에 대해 평가됩니다.
attr_aspects sequence of strings; default = []
속성 이름 목록입니다. 측면은 이러한 이름의 타겟 속성에 지정된 종속 항목을 따라 전파됩니다. 일반적인 값은 depsexports입니다. 이 목록에는 타겟의 모든 종속 항목을 따라 전파하는 단일 문자열 "*"가 포함될 수도 있습니다.
attrs dict; or None; default = None
측면의 모든 속성을 선언하는 사전. 속성 이름을 `attr.label` 또는 `attr.string`과 같은 속성 객체로 매핑합니다 (attr 모듈 참고). 가로세로 속성은 구현에 ctx 매개변수의 필드로 사용할 수 있습니다.

_으로 시작하는 암시적 속성은 기본값이 있어야 하며 유형은 label 또는 label_list여야 합니다.

명시적 속성은 string 유형이어야 하며 values 제한을 사용해야 합니다. 명시적 속성은 제한사항에 따라 동일한 이름, 유형, 유효한 값의 속성이 있는 규칙에만 사용할 수 있도록 측면을 제한합니다.

required_providers default = []
이 속성을 사용하면 가로세로 규칙이 필요한 제공업체를 광고하는 타겟으로만 전파를 제한할 수 있습니다. 값은 개별 제공업체 또는 제공업체 목록 중 하나만 포함해야 합니다. 예를 들어 [[FooInfo], [BarInfo], [BazInfo, QuxInfo]]는 유효한 값이지만 [FooInfo, BarInfo, [BazInfo, QuxInfo]]은 유효하지 않습니다.

중첩되지 않은 제공업체 목록은 제공업체 목록 한 개가 포함된 목록으로 자동 변환됩니다. 즉, [FooInfo, BarInfo]가 자동으로 [[FooInfo, BarInfo]]로 변환됩니다.

일부 규칙 (예: some_rule) 타겟을 하나의 측면에 표시하려면 some_rule에서 하나 이상의 필수 제공업체 목록에 있는 모든 제공업체를 광고해야 합니다. 예를 들어 어떤 측면의 required_providers[[FooInfo], [BarInfo], [BazInfo, QuxInfo]]인 경우, some_rule에서 FooInfo, 또는 BarInfo, 또는 BazInfo QuxInfo를 모두 제공하는 경우에만 가로세로 특성은 some_rule 타겟을 볼 수 있습니다.

required_aspect_providers default = []
이 속성을 사용하면 이 측면이 다른 요소를 검사할 수 있습니다. 값은 개별 제공업체 또는 제공업체 목록 중 하나만 포함해야 합니다. 예를 들어 [[FooInfo], [BarInfo], [BazInfo, QuxInfo]]는 유효한 값이지만 [FooInfo, BarInfo, [BazInfo, QuxInfo]]은 유효하지 않습니다.

중첩되지 않은 제공업체 목록은 제공업체 목록 한 개가 포함된 목록으로 자동 변환됩니다. 즉, [FooInfo, BarInfo]가 자동으로 [[FooInfo, BarInfo]]로 변환됩니다.

다른 측면 (예: other_aspect)을 이 측면에 표시하려면 other_aspect가 목록 중 하나 이상의 모든 제공자를 제공해야 합니다. [[FooInfo], [BarInfo], [BazInfo, QuxInfo]]의 예에서 이 측면은 other_aspectFooInfo, 또는 BarInfo 또는 BazInfo QuxInfo를 모두 제공하는 경우에만 other_aspect를 볼 수 있습니다.

provides default = []
구현 함수에서 반환해야 하는 제공업체 목록입니다.

구현 함수의 반환 값에서 여기에 나열된 제공업체 유형을 하나라도 생략하면 오류가 발생합니다. 그러나 구현 함수가 여기에 나열되지 않은 추가 제공자를 반환할 수도 있습니다.

목록의 각 요소는 provider()에서 반환된 *Info 객체입니다. 단, 기존 제공업체가 문자열 이름으로 표시됩니다. 규칙의 대상을 필수 제공자를 선언하는 타겟의 종속 항목으로 사용하는 경우 여기에서 해당 제공업체를 지정할 필요가 없습니다. 구현 함수만 반환하면 됩니다. 필수는 아니지만 이를 지정하는 것이 좋습니다. 그러나 aspectrequired_providers 필드에는 여기에서 공급업체를 지정해야 합니다.

requires sequence of Aspects; default = []
이 특성 앞에 전파해야 하는 측면 목록
fragments sequence of strings; default = []
대상 구성에서 측면에 필요한 구성 프래그먼트의 이름 목록입니다.
host_fragments sequence of strings; default = []
측면이 호스트 구성에 필요한 구성 프래그먼트의 이름 목록.
toolchains sequence; default = []
설정된 경우 이 규칙에 필요한 도구 모음 집합입니다. 목록에는 문자열, 라벨, StarlarkToolchainTypeApi 객체가 조합된 형태로 포함될 수 있습니다. 도구 모음은 현재 플랫폼을 확인하여 찾을 수 있으며 ctx.toolchain를 통해 규칙 구현에 제공됩니다.
incompatible_use_toolchain_transition default = False
지원 중단되었으며 더 이상 사용하지 않으므로 삭제해야 합니다.
doc string; or None; default = None
문서 생성 도구에서 추출할 수 있는 측면에 대한 설명입니다.
apply_to_generating_rules default = False
true이면 출력 파일에 적용되는 측면이 출력 파일의 생성 규칙에 대신 적용됩니다.

예를 들어 한 특성이 `deps` 속성을 통해 전이적으로 전파되어 `alpha`에 적용된다고 가정해 봅시다. `alpha`에 `deps = [':beta_output']`이 있고, `beta_output`에 대상 `beta`의 선언된 출력이 있다고 가정해 보겠습니다. `beta`에 `참`이 있는 경우 `charlie`가 타겟 `char`를 가지고 있는 경우 `spec_the`의 특성이

기본적으로 False입니다.

exec_compatible_with sequence of strings; default = []
이 측면의 모든 인스턴스에 적용되는 실행 플랫폼의 제약조건 목록입니다.
exec_groups dict; or None; 기본값 = None
exec_groups에 대한 실행 그룹 이름 (문자열)에 대한 설명 이 속성을 설정하면 단일 인스턴스 내의 여러 실행 플랫폼에서 작업을 실행할 수 있습니다. 자세한 내용은 실행 그룹 문서를 참고하세요.

configuration_field

LateBoundDefault configuration_field(fragment, name)

label 유형의 속성에 기한이 지정된 기본값을 참조합니다. 값을 결정하기 전에 구성을 빌드해야 하는 경우 값은 '지연된' 상태입니다. 이를 값으로 사용하는 모든 속성은 비공개여야 합니다.

사용 예:

규칙 속성 정의:

'_foo': attr.label(default=configuration_field(fragment='java', name='toolchain'))

규칙 구현에서 액세스:

  def _rule_impl(ctx):
    foo_info = ctx.attr._foo
    ...

매개변수

매개변수 설명
fragment 필수
기한이 지정된 값이 포함된 구성 프래그먼트의 이름입니다.
name 필수
구성 프래그먼트에서 가져올 값의 이름입니다.

디셋

depset depset(direct=None, order="default", *, transitive=None)

depset을 만듭니다. direct 매개변수는 depset의 직접 요소의 목록이며 transitive 매개변수는 요소가 생성된 desetset의 간접 요소가 되는 depset의 목록입니다. 오프셋이 목록으로 변환될 때 요소가 반환되는 순서는 order 매개변수로 지정됩니다. 자세한 내용은 Depsets 개요를 참고하세요.

오프셋의 모든 요소 (직접 및 간접)는 type(x) 표현식에 의해 얻은 것과 같은 유형이어야 합니다.

해시 기반 세트는 반복 중에 중복을 제거하는 데 사용되므로 depset의 모든 요소는 해싱 가능해야 합니다. 그러나 현재 모든 생성자에서 이 불변 항목을 일관되게 확인하지는 않습니다. --incompatible_Always_check_depset_elements 플래그를 사용하여 일관된 검사를 사용 설정합니다. 이는 향후 출시에서 기본 동작이 됩니다. 문제 10313을 참고하세요.

또한 요소는 현재 변경할 수 없어야 하지만, 앞으로 이러한 제한이 완화될 것입니다.

생성된 depset의 순서는 transitive depset의 순서와 호환되어야 합니다. "default" 주문은 다른 주문과 호환되며 다른 모든 주문은 본인과만 호환됩니다.

이전/이후 호환성에 대한 참고사항 이 함수는 현재 위치 items 매개변수를 허용합니다. 지원 중단되었으며 향후 삭제될 예정입니다. 삭제 후 directdepset 함수의 단독 위치 매개변수가 됩니다. 따라서 다음 호출 모두 동등하며 미래에도 사용할 수 있습니다.

depset(['a', 'b'], transitive = [...])
depset(direct = ['a', 'b'], transitive = [...])

매개변수

매개변수 설명
direct sequence; or None; 기본값 = None
오프셋의 direct 요소 목록입니다.
order default = "default"
새 오프셋의 순회 전략입니다. 가능한 값은 여기를 참고하세요.
transitive sequence of depsets; or None; 기본값 = None
요소가 오프셋의 간접 요소가 될 수 있는 디셋 목록.

실행_그룹

exec_group exec_group(toolchains=[], exec_compatible_with=[])

규칙 실행 중에 특정 실행 플랫폼에 대한 작업을 만드는 데 사용할 수 있는 실행 그룹을 만듭니다.

매개변수

매개변수 설명
toolchains sequence; default = []
이 실행 그룹에 필요한 도구 모음 집합입니다. 목록에는 문자열, 라벨, StarlarkToolchainTypeApi 객체가 조합된 형태로 포함될 수 있습니다.
exec_compatible_with sequence of strings; default = []
실행 플랫폼의 제약조건 목록입니다.

모듈_확장

unknown module_extension(implementation, *, tag_classes={}, doc='')

새 모듈 확장 프로그램을 만듭니다. MODULE.bazel 파일로 내보내고 사용할 수 있도록 전역 값으로 저장합니다.

매개변수

매개변수 설명
implementation 필수
이 모듈 확장 프로그램을 구현하는 함수입니다. 단일 매개변수(module_ctx)를 사용해야 합니다. 이 함수는 빌드 시작 시 한 번 호출되어 사용 가능한 저장소 집합을 결정합니다.
tag_classes 기본값 = {}
확장 프로그램에서 사용하는 모든 태그 클래스를 선언하는 사전입니다. 태그 클래스 이름에서 tag_class 객체로 매핑됩니다.
doc default = ''
도구 생성 도구에서 추출할 수 있는 모듈 확장 프로그램에 대한 설명입니다.

제공업체

unknown provider(doc=None, *, fields=None, init=None)

제공자 기호를 정의합니다. 제공업체를 호출하여 제공업체를 인스턴스화하거나 대상에서 제공업체의 인스턴스를 검색하는 키로 직접 사용할 수 있습니다. 예:
MyInfo = provider()
...
def _my_library_impl(ctx):
    ...
    my_info = MyInfo(x = 2, y = 3)
    # my_info.x == 2
    # my_info.y == 3
    ...

제공업체 사용 방법에 관한 포괄적인 가이드는 규칙 (제공업체)을 참고하세요.

init이 지정되지 않은 경우 Provider 호출 가능 값을 반환합니다.

init가 지정된 경우 Provider 호출 가능 값과 원시 생성자 호출 가능 값의 2개 튜플을 반환합니다. 자세한 내용은 규칙 (맞춤 제공업체의 맞춤 초기화)과 아래의 init 매개변수에 관한 설명을 참고하세요.

매개변수

매개변수 설명
doc string; or None; default = None
도구를 생성하는 문서에서 추출할 수 있는 제공업체의 설명입니다.
fields sequence of strings; or dict; or None; default = None
지정된 경우 허용된 필드 집합이 제한됩니다.
가능한 값은 다음과 같습니다.
  • 필드 목록:
    provider(fields = ['a', 'b'])

  • 사전 필드 이름 -> 문서:
    provider(
           fields = { 'a' : 'Documentation for a', 'b' : 'Documentation for b' })
모든 입력란은 선택사항입니다.
init callable; or None; 기본값 = None
인스턴스화 중에 제공자의 필드 값을 사전 처리하고 검증하기 위한 콜백입니다(선택사항). init가 지정되면 provider()는 일반 제공자 기호와 원시 생성자의 두 튜플을 반환합니다.

정확한 설명은 다음과 같습니다. 직관적인 토론 및 사용 사례를 보려면 규칙 (제공업체 맞춤 초기화)을 참고하세요.

Pprovider()를 호출하여 생성된 제공업체 기호로 설정합니다. 개념적으로 P의 인스턴스는 다음을 실행하는 기본 생성자 함수 c(*args, **kwargs)를 호출하여 생성됩니다.

  • args가 비어 있지 않으면 오류가 발생합니다.
  • provider()가 호출될 때 fields 매개변수가 지정되었고 kwargsfields에 나열되지 않은 키가 포함되어 있으면 오류가 발생합니다.
  • 그렇지 않으면 ckwargs의 각 k: v 항목에 v이라는 값이 있는 k라는 필드가 있는 새 인스턴스를 반환합니다.
init 콜백이 제공되지 않은 경우 P 기호 자체에 대한 호출은 기본 생성자 함수 c에 대한 호출로 작동합니다. 즉, P(*args, **kwargs)c(*args, **kwargs)를 반환합니다. 예를 들어
MyInfo = provider()
m = MyInfo(foo = 1)
mm.foo == 1가 있는 MyInfo 인스턴스가 되도록 간단하게 만듭니다.

그러나 init가 지정된 경우에는 P(*args, **kwargs)를 호출하는 대신 다음 단계를 실행합니다.

  1. 콜백은 init(*args, **kwargs)로 호출됩니다. 즉, P에 전달된 것과 동일한 위치 및 키워드 인수를 사용합니다.
  2. init의 반환 값은 키가 필드 이름 문자열인 사전(d)이어야 합니다. 그렇지 않은 경우 오류가 발생합니다.
  3. c(**d)의 경우와 같이 d의 항목을 키워드 인수로 사용하여 기본 생성자를 호출하는 것처럼 P의 새 인스턴스가 생성됩니다.

NB: 위 단계는 *args 또는 **kwargsinit의 서명과 일치하지 않거나 init의 본문 평가가 의도적으로 실패하거나 (의도적으로 fail() 호출을 통해) 오류가 있거나 init의 반환 값이 예상 스키마가 있는 사전이 아닌 경우 오류가 발생함을 의미합니다.

이러한 방식으로 init 콜백은 사전 처리 및 유효성 검사를 위한 위치 인수와 임의 로직을 허용하여 일반 제공자 구성을 일반화합니다. 허용되는 fields의 목록을 우회할 수 없습니다.

init가 지정되면 provider()의 반환 값은 튜플 (P, r)가 되며 여기서 r원시 생성자입니다. 실제로 r의 동작은 위에서 설명한 기본 생성자 함수 c와 정확히 일치합니다. 일반적으로 r는 이름이 밑줄로 시작하는 변수에 바인딩되므로 현재 .bzl 파일만 이 변수에 직접 액세스할 수 있습니다.

MyInfo, _new_myinfo = provider(init = ...)

저장소_규칙

callable repository_rule(implementation, *, attrs=None, local=False, environ=[], configure=False, remotable=False, doc='')

새 저장소 규칙을 만듭니다. WORKSPACE 파일에서 로드하고 호출할 수 있도록 전역 값으로 저장합니다.

매개변수

매개변수 설명
implementation 필수.
이 규칙을 구현하는 함수. 단일 매개변수(repository_ctx)가 있어야 합니다. 함수는 규칙의 각 인스턴스에 대한 로드 단계 중에 호출됩니다.
attrs dict; or None; default = None
사전으로 규칙의 모든 속성을 선언합니다. 또한 속성 이름에서 속성 객체로 매핑됩니다 (attr 모듈 참고). _으로 시작하는 속성은 비공개이며, 라벨의 암시적 종속 항목을 파일에 추가하는 데 사용할 수 있습니다 (저장소 규칙은 생성된 아티팩트에 종속될 수 없음). name 속성은 암시적으로 추가되므로 지정할 수 없습니다.
local default = False
이 규칙이 로컬 시스템에서 모든 항목을 가져오며 모든 가져오기 시 재평가되어야 함을 나타냅니다.
environ sequence of strings; default = []
이 저장소 규칙이 종속되는 환경 변수 목록을 제공합니다. 이 목록의 환경 변수가 변경되면 저장소를 다시 가져옵니다.
configure default = False
저장소에서 구성 목적으로 시스템을 검사함을 나타냅니다.
remotable default = False
실험용입니다. 이 매개변수는 실험적이며 언제든지 변경될 수 있습니다. 여기에 의존하지 마세요. ---experimental_repo_remote_exec를 설정하여 실험용으로 사용 설정할 수 있습니다.
원격 실행과 호환됨
doc default = ''
도구 생성 도구에서 추출할 수 있는 저장소 규칙에 대한 설명입니다.

규칙

callable rule(implementation, test=False, attrs=None, outputs=None, executable=False, output_to_genfiles=False, fragments=[], host_fragments=[], _skylark_testable=False, toolchains=[], incompatible_use_toolchain_transition=False, doc=None, *, provides=[], exec_compatible_with=[], analysis_test=False, build_setting=None, cfg=None, exec_groups=None, compile_one_filetype=None, name=None)

새 규칙을 만듭니다. 이 규칙은 BUILD 파일 또는 매크로에서 호출하여 대상을 만들 수 있습니다.

규칙은 .bzl 파일의 전역 변수에 할당해야 합니다. 전역 변수의 이름은 규칙의 이름입니다.

테스트 규칙의 이름은 _test(으)로 끝나야 하며, 다른 모든 규칙의 이름은 이 접미사로 구성해서는 안 됩니다. 이 제한은 규칙이 아닌 규칙에만 적용되며, 대상에는 적용되지 않습니다.

매개변수

매개변수 설명
implementation 필수
이 규칙을 구현하는 Starlark 함수에는 정확히 하나의 매개변수(ctx)가 있어야 합니다. 함수는 분석 단계의 규칙 인스턴스마다 호출됩니다. 사용자가 제공한 속성에 액세스할 수 있습니다. 선언된 모든 출력을 생성하는 작업을 만들어야 합니다.
test default = False
이 규칙이 테스트 규칙인지 여부, 즉 규칙이 blaze test 명령어의 제목인지 여부입니다. 모든 테스트 규칙은 자동으로 실행 가능한 것으로 간주됩니다. 테스트 규칙에 executable = True를 명시적으로 설정할 필요가 없으며 권장되지 않습니다. 자세한 내용은 규칙 페이지를 참조하세요.
attrs dict; or None; default = None
사전으로 규칙의 모든 속성을 선언합니다. 또한 속성 이름에서 속성 객체로 매핑됩니다 (attr 모듈 참고). _으로 시작하는 속성은 비공개이며 라벨에 암시적인 종속 항목을 추가하는 데 사용할 수 있습니다. name 속성은 암시적으로 추가되므로 지정할 수 없습니다. visibility, deprecation, tags, testonly, features 속성은 암시적으로 추가되며 재정의할 수 없습니다. 대부분의 규칙에는 몇 가지 속성만 필요합니다. 메모리 사용량을 제한하기 위해 규칙 함수에서 속성 크기를 제한합니다.
outputs dict; or None; or function; 기본값 = None
지원 중단됨. 이 매개변수는 지원 중단되었으며 곧 삭제됩니다. 여기에 의존하지 마세요. ---incompatible_no_rule_outputs_param에 의해 사용 중지됩니다. 이 플래그를 사용하여 코드가 곧 삭제되는 것과 호환되는지 확인합니다.
이 매개변수는 지원 중단되었습니다. 대신 OutputGroupInfo 또는 attr.output를 사용하도록 규칙을 이전하세요.

사전 선언된 출력을 정의하기 위한 스키마. outputoutput_list 속성과 달리 사용자는 이러한 파일의 라벨을 지정하지 않습니다. 사전 선언된 출력에 관한 자세한 내용은 규칙 페이지를 참고하세요.

이 인수의 값은 사전 또는 사전을 생성하는 콜백 함수입니다. 콜백은 계산된 종속 항목 속성과 유사하게 작동합니다. 즉, 함수의 매개변수 이름이 규칙의 속성과 일치하므로 예를 들어 정의가 def _my_func(srcs, deps): ...outputs = _my_func을 전달하면 함수는 srcsdeps 속성에 액세스할 수 있습니다. 사전을 직접 지정하거나 함수를 통해 지정한 경우 다음과 같이 해석됩니다.

사전의 각 항목은 키가 식별자이고 값이 출력 라벨을 결정하는 문자열 템플릿인 사전 선언된 출력을 만듭니다. 규칙의 구현 함수에서 식별자는 ctx.outputs의 출력 File에 액세스하는 데 사용되는 필드 이름이 됩니다. 출력 라벨에는 규칙과 동일한 패키지가 있으며, "%{ATTR}" 형식의 각 자리표시자를 속성 ATTR의 값으로 구성된 문자열로 대체하여 패키지가 생성된 후 부분이 생성됩니다.

  • 문자열 유형 속성은 그대로 사용됩니다.
  • 라벨 입력 속성은 패키지의 뒷부분에서 파일 확장자를 뺀 부분이 됩니다. 예를 들어 "//pkg:a/b.c" 라벨은 "a/b"가 됩니다.
  • 출력 유형 속성은 파일 확장자 (위 예의 경우 "a/b.c")를 포함하여 패키지 뒤의 라벨의 일부가 됩니다.
  • 자리표시자에 사용된 모든 목록 유형 속성 (예: attr.label_list)은 정확히 하나의 요소를 포함해야 합니다. 비목록 버전 (attr.label)과 동일한 전환이 발생합니다.
  • 다른 속성 유형은 자리표시자에 표시되지 않을 수 있습니다.
  • 특수 속성 자리표시자 %{dirname}%{basename}는 패키지를 제외한 규칙 라벨의 해당 부분으로 확장됩니다. 예를 들어 "//pkg:a/b.c"에서 dirname은 a이고 기본 이름은 b.c입니다.

실제로 가장 일반적인 대체 자리표시자는 "%{name}"입니다. 예를 들어 'foo'라는 타겟의 경우 출력 사전 {"bin": "%{name}.exe"}는 구현 함수에서 ctx.outputs.bin로 액세스할 수 있는 foo.exe라는 출력을 사전 선언합니다.

executable 기본값 = False
이 규칙이 실행 가능한 것으로 간주되는지, 즉 blaze run 명령어의 주체인지를 나타냅니다. 자세한 내용은 규칙 페이지를 참조하세요.
output_to_genfiles default = False
true이면 bin 디렉터리가 아닌 genfiles 디렉터리에 파일이 생성됩니다. 기존 규칙과의 호환성에 필요한 경우가 아니라면 (예: C++용 헤더 파일 생성) 이 플래그를 설정하지 마세요.
fragments sequence of strings; default = []
타겟 구성에서 규칙에 필요한 구성 프래그먼트의 이름 목록.
host_fragments sequence of strings; default = []
호스트 구성에서 규칙에 필요한 구성 프래그먼트의 이름 목록입니다.
_skylark_testable 기본값 = False
(실험용)

true인 경우 이 규칙은 Actions 제공업체를 통해 규칙을 사용하는 규칙을 대상으로 검사하는 작업을 노출합니다. ctx.created_actions()를 호출하여 규칙 자체에 제공업체를 사용할 수도 있습니다.

이는 Starlark 규칙의 분석 시간 동작을 테스트하는 경우에만 사용해야 합니다. 이 플래그는 향후 삭제될 수 있습니다.
toolchains sequence; default = []
설정된 경우 이 규칙에 필요한 도구 모음 집합입니다. 목록에는 문자열, 라벨, StarlarkToolchainTypeApi 객체가 조합된 형태로 포함될 수 있습니다. 도구 모음은 현재 플랫폼을 확인하여 찾을 수 있으며 ctx.toolchain를 통해 규칙 구현에 제공됩니다.
incompatible_use_toolchain_transition default = False
지원 중단되었으며 더 이상 사용하지 않으므로 삭제해야 합니다.
doc string; or None; default = None
도구 생성 도구에서 추출할 수 있는 규칙에 대한 설명입니다.
provides default = []
구현 함수에서 반환해야 하는 제공업체 목록입니다.

구현 함수의 반환 값에서 여기에 나열된 제공업체 유형을 하나라도 생략하면 오류가 발생합니다. 그러나 구현 함수가 여기에 나열되지 않은 추가 제공자를 반환할 수도 있습니다.

목록의 각 요소는 provider()에서 반환된 *Info 객체입니다. 단, 기존 제공업체가 문자열 이름으로 표시됩니다. 규칙의 대상을 필수 제공자를 선언하는 타겟의 종속 항목으로 사용하는 경우 여기에서 해당 제공업체를 지정할 필요가 없습니다. 구현 함수만 반환하면 됩니다. 필수는 아니지만 이를 지정하는 것이 좋습니다. 그러나 aspectrequired_providers 필드에는 여기에서 공급업체를 지정해야 합니다.

exec_compatible_with sequence of strings; default = []
이 규칙 유형의 모든 대상에 적용되는 실행 플랫폼의 제약조건 목록입니다.
analysis_test default = False
true이면 이 규칙이 분석 테스트로 처리됩니다.

참고: 분석 테스트 규칙은 주로 핵심 Starlark 라이브러리에서 제공되는 인프라를 사용하여 정의됩니다. 안내는 테스트를 참고하세요.

규칙이 분석 테스트 규칙으로 정의되면 속성의 analysis_test_transition을 사용하여 정의된 구성 전환을 사용할 수 있지만, 일부 제한사항이 적용됩니다.

  • 이 규칙의 대상에는 있을 수 있는 전이 종속 항목 수가 제한됩니다.
  • 이 규칙은 test=True가 설정된 것처럼 테스트 규칙으로 간주됩니다. 이 값은 test의 가치를 대체합니다.
  • 규칙 구현 함수로 작업을 등록할 수 없습니다. 대신 AnalysisTestResultInfo를 제공하여 통과/실패 결과를 등록해야 합니다.
build_setting BuildSetting; or None; 기본값 = None
설정하는 경우 이 규칙의 build setting 종류를 설명합니다. config 모듈을 참고하세요. 이 속성을 설정하면 여기에 전달된 값에 상응하는 유형과 함께 'build_setting_default'라는 필수 속성이 이 규칙에 자동으로 추가됩니다.
cfg default = None
설정하면 구성 전환을 가리키며, 분석 전에 규칙이 해당 구성에 적용됩니다.
exec_groups dict; or None; 기본값 = None
exec_groups에 대한 실행 그룹 이름 (문자열)에 대한 설명 설정된 경우 규칙에서 단일 타겟 내의 여러 실행 플랫폼에서 작업을 실행할 수 있습니다. 자세한 내용은 실행 그룹 문서를 참고하세요.
compile_one_filetype sequence of strings; or None; default = None
--compile_one_dependency에서 사용됩니다. 여러 규칙에서 지정된 파일을 사용하는 경우 다른 규칙보다 이 규칙을 선택해야 합니다.
name string; or None; 기본값 = None
지원 중단됨. 이 매개변수는 지원 중단되었으며 곧 삭제됩니다. 여기에 의존하지 마세요. --+incompatible_remove_rule_name_parameter에 의해 사용 중지됩니다. 이 플래그를 사용하여 코드가 곧 삭제되는 것과 호환되는지 확인합니다.
지원 중단됨: 사용하지 마세요.

Bazel이 이해하고 로깅, native.existing_rule(...)[kind], bazel query와 같은 컨텍스트에서 보고하는 이 규칙의 이름입니다. 일반적으로 이는 이 규칙에 바인딩되는 Starlark 식별자와 동일합니다. 예를 들어 일반적으로 foo_library라는 규칙은 foo_library = rule(...)로 선언되고 BUILD 파일에서 foo_library(...)로 인스턴스화됩니다.

이 매개변수를 생략하면 규칙 이름이 선언되는 .bzl 모듈 내에서 이 규칙에 바인딩되는 첫 번째 Starlark 전역 변수의 이름으로 설정됩니다. 따라서 이름이 foo_library인 경우 foo_library = rule(...)에서 이 매개변수를 지정할 필요가 없습니다.

규칙의 명시적 이름을 지정해도 규칙을 인스턴스화할 수 있는 위치는 변경되지 않습니다.

select

unknown select(x, no_match_error='')

select()는 규칙 속성을 구성할 수 있는 도우미 함수입니다. 자세한 내용은 빌드 백과사전을 참고하세요.

매개변수

매개변수 설명
x 필수
구성 조건을 값에 매핑하는 사전. 각 키는 config_setting 또는 constraints_value 인스턴스를 식별하는 Label 또는 라벨 문자열입니다. 문자열 대신 라벨을 사용하는 경우는 매크로 문서를 참고하세요.
no_match_error default = ''
일치하는 조건이 없는 경우 보고할 커스텀 오류(선택사항)

태그_클래스

tag_class tag_class(attrs={}, *, doc='')

모듈 확장 프로그램에서 사용할 수 있는 데이터 객체인 태그 클래스의 속성 스키마를 정의하는 새 tag_class 객체를 만듭니다.

매개변수

매개변수 설명
attrs default = {}
이 태그 클래스의 모든 속성을 선언하는 사전입니다. 또한 속성 이름에서 속성 객체로 매핑됩니다 (attr 모듈 참고).
doc default = ''
도구 생성 도구에서 추출할 수 있는 태그 클래스의 설명입니다.

공개 상태

None visibility(value)

현재 초기화 중인 .bzl 모듈의 로드 공개 상태를 설정합니다.

모듈의 로드 공개 상태는 다른 BUILD 및 .bzl 파일에서 로드할 수 있는지 여부를 결정합니다. 이는 기본 .bzl 소스 파일의 타겟 공개 상태와는 별개이며 파일이 다른 대상의 종속 항목으로 표시될 수 있는지 여부를 관리합니다. 로드 표시 여부는 패키지 수준에서 작동합니다. 모듈을 로드하려면 로드를 실행하는 파일이 모듈에 공개 상태가 부여된 패키지에 있어야 합니다. 모듈은 가시성에 관계없이 항상 자체 패키지 내에 로드될 수 있습니다.

visibility()는 .bzl 파일당 한 번만 호출할 수 있으며 함수 내부에서는 최상위 수준에서만 호출할 수 없습니다. 선호되는 방법은 이 호출을 load() 문 바로 아래에 두고 인수를 결정하는 데 필요한 간단한 로직입니다.

--check_bzl_visibility 플래그를 false로 설정하면 로드 가시성 위반이 경고를 내보내지만 빌드는 실패하지 않습니다.

매개변수

매개변수 설명
value 필수
패키지 사양 문자열 목록 또는 단일 패키지 사양 문자열

패키지 사양은 package_group와 동일한 형식을 따르지만 제외 패키지 사양은 허용되지 않습니다. 즉, 사양의 형식은 다음과 같습니다.

  • "//foo": 패키지 //foo
  • "//foo/...": //foo 패키지 및 모든 하위 패키지입니다.
  • "public" 또는 "private": 각각 모든 패키지 또는 패키지 없음

'@' 구문은 허용되지 않습니다. 모든 사양은 현재 모듈의 저장소를 기준으로 해석됩니다.

value가 문자열 목록인 경우 이 모듈에 대한 가시성이 부여된 패키지 집합은 각 사양에 의해 표현되는 패키지의 합집합입니다. (빈 목록은 private와 효과가 같습니다.) value가 단일 문자열인 경우 싱글톤 목록 [value]인 것처럼 처리됩니다.

--incompatible_package_group_has_public_syntax--incompatible_fix_package_group_reporoot_syntax 플래그는 이 인수에 영향을 미치지 않습니다. "public""private" 값은 항상 사용할 수 있으며 "//..."는 항상 '현재 저장소의 모든 패키지'로 해석됩니다.