모든 .bzl 파일에서 사용할 수 있는 전역 메서드입니다.
회원
- analysis_test_transition
- 측면
- configuration_field
- depset
- exec_group
- exec_transition
- 매크로
- module_extension
- 제공업체
- repository_rule
- 규칙
- select
- 하위 규칙
- tag_class
- visibility
analysis_test_transition
transition analysis_test_transition(settings)
분석 테스트 규칙의 종속 항목에 적용할 구성 전환을 만듭니다. 이 전환은 analysis_test = True
이 있는 규칙의 속성에만 적용할 수 있습니다. 이러한 규칙은 기능이 제한되어 있으므로 (예: 종속 항목 트리의 크기가 제한됨) 이 함수를 사용하여 만든 전환은 transition()
를 사용하여 만든 전환에 비해 잠재적 범위가 제한됩니다.
이 함수는 주로 분석 테스트 프레임워크 핵심 라이브러리를 지원하기 위해 설계되었습니다. 권장사항은 관련 문서 또는 구현을 참고하세요.
매개변수
매개변수 | 설명 |
---|---|
settings
|
dict;
required 이 구성 전환에 의해 설정되어야 하는 구성 설정에 관한 정보가 포함된 사전입니다. 키는 빌드 설정 라벨이고 값은 전환 후의 새 값입니다. 다른 모든 설정은 변경되지 않습니다. 분석 테스트가 통과하려면 설정해야 하는 특정 구성 설정을 선언하는 데 사용합니다. |
관점
Aspect aspect(implementation, attr_aspects=[], toolchains_aspects=[], attrs={}, 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, subrules=[])
매개변수
매개변수 | 설명 |
---|---|
implementation
|
function;
required 이 측면을 구현하는 Starlark 함수로, 정확히 두 개의 매개변수(Target(측면이 적용되는 타겟) 및 ctx(타겟이 생성되는 규칙 컨텍스트))가 있습니다. 타겟의 속성은 ctx.rule 필드를 통해 사용할 수 있습니다. 이 함수는 타겟에 측면을 적용할 때마다 분석 단계에서 평가됩니다.
|
attr_aspects
|
string의 sequence, 기본값은 [] 입니다. 속성 이름 목록입니다. 이러한 이름이 있는 타겟의 속성에 지정된 종속 항목을 따라 측면이 전파됩니다. 여기에서 일반적인 값은 deps 및 exports 입니다. 목록에는 타겟의 모든 종속 항목을 따라 전파되는 단일 문자열 "*" 도 포함될 수 있습니다.
|
toolchains_aspects
|
sequence;
default is [] List of toolchain types. 관점은 이러한 도구 모음 유형과 일치하는 타겟 도구 모음으로 전파됩니다. |
attrs
|
dict;
default is {} A dictionary declaring all the attributes of the aspect. attr.label 또는 attr.string 과 같은 속성 이름에서 속성 객체로 매핑됩니다 (attr 모듈 참고). 측면 속성은 구현 함수에서 ctx 매개변수의 필드로 사용할 수 있습니다.
명시적 속성의 유형은 선언된 속성은 |
required_providers
|
sequence;
default is [] 이 속성을 사용하면 측면이 규칙에서 필수 제공업체를 광고하는 타겟으로만 전파를 제한할 수 있습니다. 값은 개별 제공업체 또는 제공업체 목록을 포함하는 목록이어야 하며 둘 다 포함해서는 안 됩니다. 예를 들어 [[FooInfo], [BarInfo], [BazInfo, QuxInfo]] 은 유효한 값이고 [FooInfo, BarInfo, [BazInfo, QuxInfo]] 은 유효하지 않습니다.중첩되지 않은 제공업체 목록은 제공업체 목록 하나를 포함하는 목록으로 자동 변환됩니다. 즉,
|
required_aspect_providers
|
sequence;
default is [] This attribute allows this aspect to inspect other aspects. 값은 개별 제공업체 또는 제공업체 목록을 포함하는 목록이어야 하며 둘 다 포함해서는 안 됩니다. 예를 들어 [[FooInfo], [BarInfo], [BazInfo, QuxInfo]] 은 유효한 값이고 [FooInfo, BarInfo, [BazInfo, QuxInfo]] 은 유효하지 않습니다.중첩되지 않은 제공업체 목록은 제공업체 목록 하나를 포함하는 목록으로 자동 변환됩니다. 즉, 다른 측면 (예: |
provides
|
sequence;
default is [] 구현 함수가 반환해야 하는 제공업체 목록입니다. 구현 함수가 여기에 나열된 제공업체 유형 중 하나를 반환 값에서 누락하면 오류입니다. 하지만 구현 함수는 여기에 나열되지 않은 추가 제공업체를 반환할 수 있습니다. 목록의 각 요소는 |
requires
|
Aspect의 sequence. 기본값은 [] 입니다. 이 측면 전에 전파되어야 하는 측면 목록입니다. |
fragments
|
string의 sequence. 기본값은 [] 입니다. 측면이 타겟 구성에 필요로 하는 구성 프래그먼트의 이름 목록입니다. |
host_fragments
|
string의 sequence. 기본값은 [] 입니다. 측면이 호스트 구성에서 필요로 하는 구성 프래그먼트의 이름 목록입니다. |
toolchains
|
sequence;
default is [] If set, the set of toolchains this aspect requires. 목록에는 문자열, 라벨 또는 StarlarkToolchainTypeApi 객체가 어떤 조합으로든 포함될 수 있습니다. 툴체인은 현재 플랫폼을 확인하여 찾고 ctx.toolchain 를 통해 측면 구현에 제공됩니다.
|
incompatible_use_toolchain_transition
|
bool;
default is False 지원 중단되었습니다. 더 이상 사용되지 않으므로 삭제해야 합니다. |
doc
|
string 또는 None ;
기본값은 None 입니다. 문서 생성 도구로 추출할 수 있는 측면에 대한 설명입니다. |
apply_to_generating_rules
|
bool;
default is False If true, the aspect will, when applied to an output file, instead apply to the output file's generating rule. 예를 들어 측면이 속성 `deps` 를 통해 전이적으로 전파되고 `alpha` 타겟에 적용된다고 가정해 보겠습니다. `alpha` 에 `deps = [':beta_output']`이 있다고 가정해 보겠습니다. 여기서 `beta_output` 은 `beta` 타겟의 선언된 출력입니다. `beta` 에 `charlie` 타겟이 `deps` 중 하나로 있다고 가정해 보겠습니다. 측면의 `apply_to_generating_rules=True` 인 경우 측면은 `alpha`, `beta`, `charlie`를 통해 전파됩니다. False인 경우 측면은 `alpha`에만 전파됩니다. 기본값은 false입니다. |
exec_compatible_with
|
문자열의 시퀀스입니다. 기본값은 [] 입니다. 이 측면의 모든 인스턴스에 적용되는 실행 플랫폼의 제약 조건 목록입니다. |
exec_groups
|
dict 또는 None ;
기본값은 None 실행 그룹 이름 (문자열)에서 exec_group s로의 사전입니다. 설정된 경우 측면이 단일 인스턴스 내에서 여러 실행 플랫폼에서 작업을 실행할 수 있습니다. 자세한 내용은 실행 그룹 문서를 참고하세요.
|
subrules
|
Subrule의 sequence입니다. 기본값은 [] 입니다. 실험적: 이 측면에서 사용되는 하위 규칙 목록입니다. |
configuration_field
LateBoundDefault configuration_field(fragment, name)
사용 예:
규칙 속성 정의:
'_foo': attr.label(default=configuration_field(fragment='java', name='toolchain'))
규칙 구현에서 액세스:
def _rule_impl(ctx): foo_info = ctx.attr._foo ...
매개변수
매개변수 | 설명 |
---|---|
fragment
|
string;
required 지연 바인딩된 값이 포함된 구성 프래그먼트의 이름입니다. |
name
|
string;
required 구성 프래그먼트에서 가져올 값의 이름입니다. |
deps
depset depset(direct=None, order="default", *, transitive=None)
direct
매개변수는 depset의 직접 요소 목록이고 transitive
매개변수는 요소가 생성된 depset의 간접 요소가 되는 depset 목록입니다. deps를 목록으로 변환할 때 요소가 반환되는 순서는 order
매개변수로 지정됩니다. 자세한 내용은 Depsets 개요를 참고하세요.
deps의 모든 요소 (직접 및 간접)는 type(x)
표현식으로 가져온 것과 동일한 유형이어야 합니다.
해시 기반 세트는 반복 중에 중복을 제거하는 데 사용되므로 depset의 모든 요소는 해시 가능해야 합니다. 하지만 이 불변량은 현재 모든 생성자에서 일관되게 확인되지 않습니다. --incompatible_always_check_depset_elements 플래그를 사용하여 일관된 검사를 사용 설정하세요. 이는 향후 버전의 기본 동작이 될 것입니다. 문제 10313을 참고하세요.
또한 요소는 현재 변경할 수 없지만 향후에는 이 제한이 완화될 예정입니다.
생성된 depset의 순서는 transitive
depset의 순서와 호환되어야 합니다. "default"
순서는 다른 모든 순서와 호환되며 다른 모든 순서는 자체적으로만 호환됩니다.
매개변수
매개변수 | 설명 |
---|---|
direct
|
sequence 또는 None . 기본값은 None 입니다. deps의 direct 요소 목록입니다. |
order
|
string;
default is "default" 새 depset의 순회 전략입니다. 가능한 값은 여기를 참고하세요. |
transitive
|
depset의 시퀀스 또는 None 입니다. 기본값은 None 입니다. 요소가 depset의 간접 요소가 되는 depset 목록입니다. |
exec_group
exec_group exec_group(toolchains=[], exec_compatible_with=[])
매개변수
매개변수 | 설명 |
---|---|
toolchains
|
sequence;
default is [] 이 실행 그룹에 필요한 도구 모음 집합입니다. 목록에는 문자열, 라벨 또는 StarlarkToolchainTypeApi 객체가 어떤 조합으로든 포함될 수 있습니다. |
exec_compatible_with
|
string의 sequence입니다. 기본값은 [] 입니다. 실행 플랫폼에 관한 제약 조건 목록입니다. |
exec_transition
transition exec_transition(implementation, inputs, outputs)
transition()
의 전문화된 버전입니다. 권장사항은 관련 문서 또는 구현을 참고하세요. Bazel 내장 함수에서만 사용할 수 있습니다.
매개변수
매개변수 | 설명 |
---|---|
implementation
|
호출 가능;
필수 |
inputs
|
문자열의 시퀀스. 필수 |
outputs
|
문자열의 시퀀스. 필수 |
매크로
macro macro(implementation, attrs={}, inherit_attrs=None, finalizer=False, doc=None)
BUILD
파일이나 매크로(기존 또는 기호)에서 호출하여 타겟(여러 개일 수 있음)을 정의할 수 있는 기호 매크로를 정의합니다.
macro(...)
에서 반환된 값은 .bzl 파일의 전역 변수에 할당해야 합니다. 전역 변수의 이름은 매크로 기호의 이름이 됩니다.
기호 매크로 사용 방법에 관한 전체 가이드는 매크로를 참고하세요.
매개변수
매개변수 | 설명 |
---|---|
implementation
|
function;
required 이 매크로를 구현하는 Starlark 함수입니다. 매크로의 속성 값은 구현 함수에 키워드 인수로 전달됩니다. 구현 함수에는 명명된 매개변수 name 및 visibility 가 두 개 이상 있어야 하며, 매크로가 속성을 상속하는 경우 (아래 inherit_attrs 참고) **kwargs 잔여 키워드 매개변수가 있어야 합니다.
관례에 따라 구현 함수에는 매크로가 검사하거나 수정하거나 'main'이 아닌 타겟에 전달해야 하는 속성의 이름이 지정된 매개변수가 있어야 하며, 'main' 타겟에 변경되지 않은 상태로 전달되는 '대량' 상속 속성은 구현 함수는 값을 반환하면 안 됩니다. 대신 구현 함수는 규칙 또는 매크로 기호를 호출하여 타겟을 선언합니다. 기호 매크로 (매크로의 구현 함수가 전이적으로 호출하는 Starlark 함수 포함)에 의해 선언된 모든 타겟 또는 내부 기호 매크로의 이름은 기본적으로 기호 매크로에 의해 선언된 타겟 (매크로의 구현 함수가 전이적으로 호출하는 Starlark 함수에 의한 선언 포함)은 매크로를 정의하는 .bzl 파일을 포함하는 패키지에서만 표시됩니다. 기호 매크로의 호출자를 포함하여 외부에서 보이는 타겟을 선언하려면 구현 함수가 다음 API는 매크로 구현 함수와 매크로 구현 함수가 간접적으로 호출하는 모든 Starlark 함수 내에서 사용할 수 없습니다.
|
attrs
|
dict;
default is {} 이 매크로가 지원하는 속성의 사전입니다(rule.attrs와 유사). 키는 속성 이름이고 값은 attr.label_list(...) 와 같은 속성 객체 (attr 모듈 참고) 또는 None 입니다. None 항목은 매크로가 해당 이름의 속성을 가지고 있지 않다는 것을 의미합니다. 그렇지 않으면 inherit_attrs 를 통해 속성을 상속받을 수 있습니다(아래 참고).
특수 이름이 메모리 사용량을 제한하기 위해 선언할 수 있는 속성 수에 한도가 있습니다. |
inherit_attrs
|
규칙, 매크로, 문자열 또는 None . 기본값은 None 입니다. 매크로가 속성을 상속해야 하는 규칙 기호, 매크로 기호 또는 내장된 공통 속성 목록의 이름 (아래 참고)입니다.
상속 메커니즘은 다음과 같이 작동합니다.
필수가 아닌 속성이 상속되면 원래 규칙 또는 매크로에 지정된 내용과 관계없이 속성의 기본값이 예를 들어 다음 매크로는 def _my_cc_library_impl(name, visibility, tags, **kwargs): # Append a tag; tags attr was inherited from native.cc_library, and # therefore is None unless explicitly set by the caller of my_cc_library() my_tags = (tags or []) + ["my_custom_tag"] native.cc_library( name = name, visibility = visibility, tags = my_tags, **kwargs ) my_cc_library = macro( implementation = _my_cc_library_impl, inherit_attrs = native.cc_library, attrs = { "cxxopts": None, "copts": attr.string_list(default = ["-D_FOO"]), }, )
관례에 따라 매크로는 상속되고 재정의되지 않은 속성을 매크로가 래핑하는 'main' 규칙 또는 매크로 심볼에 변경되지 않은 상태로 전달해야 합니다. 일반적으로 대부분의 상속된 속성은 구현 함수의 매개변수 목록에 매개변수가 없으며 |
finalizer
|
bool;
default is False 이 매크로가 규칙 종료자인지 여부입니다. 규칙 종료자는 BUILD 파일에서의 위치와 관계없이 모든 비종료자 타겟이 정의된 후 패키지 로드 끝에 평가되는 매크로입니다.
일반적인 심볼 매크로와 달리 규칙 파이널라이저는 |
doc
|
문자열 또는 None ;
기본값은 None 입니다. 문서 생성 도구로 추출할 수 있는 매크로에 대한 설명입니다. |
module_extension
unknown module_extension(implementation, *, tag_classes={}, doc=None, environ=[], os_dependent=False, arch_dependent=False)
use_extension
을 사용하여 MODULE.bazel 파일에서 내보내고 사용할 수 있도록 전역 값에 저장합니다.
매개변수
매개변수 | 설명 |
---|---|
implementation
|
callable;
required 이 모듈 확장 프로그램을 구현하는 함수입니다. 단일 매개변수 module_ctx 를 사용해야 합니다. 이 함수는 빌드 시작 시 사용 가능한 저장소 집합을 확인하기 위해 한 번 호출됩니다.
|
tag_classes
|
dict;
default is {} 확장 프로그램에서 사용하는 모든 태그 클래스를 선언하는 사전입니다. 태그 클래스 이름에서 tag_class 객체로 매핑됩니다.
|
doc
|
문자열 또는 None 입니다. 기본값은 None 입니다. 문서 생성 도구로 추출할 수 있는 모듈 확장 프로그램에 대한 설명입니다. |
environ
|
string의 sequence. 기본값은 [] 입니다. 이 모듈 확장 프로그램이 종속되는 환경 변수 목록을 제공합니다. 목록의 환경 변수가 변경되면 확장 프로그램이 다시 평가됩니다. |
os_dependent
|
bool;
default is False Indicates whether this extension is OS-dependent or not |
arch_dependent
|
bool;
default is False Indicates whether this extension is architecture-dependent or not |
provider
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 또는 None ;
기본값은 None 문서 생성 도구로 추출할 수 있는 제공업체에 대한 설명입니다. |
fields
|
string의 sequence 또는 dict 또는 None . 기본값은 None 입니다. 지정된 경우 허용된 필드 집합을 제한합니다. 가능한 값은 다음과 같습니다.
|
init
|
호출 가능하거나 None 입니다. 기본값은 None 입니다. 인스턴스화 중에 제공자의 필드 값을 사전 처리하고 검증하기 위한 선택적 콜백입니다. init 이 지정되면 provider() 은 일반 제공자 심볼과 원시 생성자라는 두 요소로 구성된 튜플을 반환합니다.정확한 설명은 아래를 참고하세요. 직관적인 설명과 사용 사례는 규칙 (제공업체의 맞춤 초기화)을 참고하세요.
init 콜백이 제공되지 않는 경우, P 기호에 대한 호출은 기본 생성자 함수 c 에 대한 호출로 작동합니다. 즉, P(*args, **kwargs) 는 c(*args, **kwargs) 를 반환합니다. 예를 들면 다음과 같습니다.MyInfo = provider() m = MyInfo(foo = 1) m 가 m.foo == 1 를 사용하는 MyInfo 인스턴스가 되도록 간단하게 만듭니다.하지만
참고: 위의 단계는 이러한 방식으로
MyInfo, _new_myinfo = provider(init = ...) |
repository_rule
callable repository_rule(implementation, *, attrs=None, local=False, environ=[], configure=False, remotable=False, doc=None)
module_extension()
구현 함수에서 로드하고 호출하거나 use_repo_rule()
에서 사용할 수 있도록 전역 값에 저장합니다.
매개변수
매개변수 | 설명 |
---|---|
implementation
|
callable;
required 이 규칙을 구현하는 함수입니다. 단일 매개변수 repository_ctx 가 있어야 합니다. 이 함수는 규칙의 각 인스턴스에 대해 로드 단계에서 호출됩니다.
|
attrs
|
dict 또는 None . 기본값은 None 입니다. 저장소 규칙의 모든 속성을 선언하는 사전입니다. 속성 이름에서 속성 객체로 매핑됩니다 ( attr 모듈 참고). _ 로 시작하는 속성은 비공개이며, 라벨에 대한 암시적 종속 항목을 파일에 추가하는 데 사용할 수 있습니다 (저장소 규칙은 생성된 아티팩트에 종속될 수 없음). name 속성은 암시적으로 추가되므로 지정하면 안 됩니다.
선언된 속성은 |
local
|
bool;
default is False 이 규칙이 로컬 시스템에서 모든 항목을 가져오며 가져올 때마다 다시 평가해야 함을 나타냅니다. |
environ
|
string의 sequence입니다. 기본값은 [] 입니다. 지원 중단됨 이 매개변수는 지원 중단되었습니다. repository_ctx.getenv 로 이전하세요.이 저장소 규칙이 종속된 환경 변수 목록을 제공합니다. 목록의 환경 변수가 변경되면 저장소가 다시 가져옵니다. |
configure
|
bool;
default is False 저장소가 구성 목적으로 시스템을 검사함을 나타냅니다. |
remotable
|
bool;
default is False Experimental. 이 파라미터는 실험 단계이며 언제든지 변경될 수 있습니다. 이 기능에 의존하지 마세요. --experimental_repo_remote_exec 원격 실행과 호환됨을 설정하여 실험적으로 사용 설정할 수 있습니다. |
doc
|
string 또는 None . 기본값은 None 입니다. 문서 생성 도구로 추출할 수 있는 저장소 규칙에 관한 설명입니다. |
규칙
callable rule(implementation, *, test=unbound, attrs={}, outputs=None, executable=unbound, output_to_genfiles=False, fragments=[], host_fragments=[], _skylark_testable=False, toolchains=[], incompatible_use_toolchain_transition=False, doc=None, provides=[], dependency_resolution_rule=False, exec_compatible_with=[], analysis_test=False, build_setting=None, cfg=None, exec_groups=None, initializer=None, parent=None, extendable=None, subrules=[])
규칙은 .bzl 파일의 전역 변수에 할당해야 합니다. 전역 변수의 이름이 규칙의 이름입니다.
테스트 규칙의 이름은 _test
로 끝나야 하지만 다른 모든 규칙에는 이 접미사가 없어야 합니다. (이 제한사항은 규칙에만 적용되며 타겟에는 적용되지 않습니다.)
매개변수
매개변수 | 설명 |
---|---|
implementation
|
function;
required 이 규칙을 구현하는 Starlark 함수로, 매개변수가 정확히 하나(ctx) 있어야 합니다. 이 함수는 규칙의 각 인스턴스에 대해 분석 단계에서 호출됩니다. 사용자가 제공한 속성에 액세스할 수 있습니다. 선언된 모든 출력을 생성하는 작업을 만들어야 합니다. |
test
|
bool;
default is unbound 이 규칙이 테스트 규칙인지 여부, 즉 blaze test 명령의 대상이 될 수 있는지 여부입니다. 모든 테스트 규칙은 자동으로 실행 가능으로 간주되므로 테스트 규칙에 executable = True 을 명시적으로 설정할 필요가 없으며 권장되지도 않습니다. 기본값은 False 입니다. 자세한 내용은 규칙 페이지를 참고하세요.
|
attrs
|
dict;
default is {} A dictionary to declare all the attributes of the rule. 속성 이름에서 속성 객체로 매핑됩니다 ( attr 모듈 참고). _ 로 시작하는 속성은 비공개이며 라벨에 암시적 종속 항목을 추가하는 데 사용할 수 있습니다. name 속성은 암시적으로 추가되므로 지정하면 안 됩니다. visibility , deprecation , tags , testonly , features 속성은 암시적으로 추가되며 재정의할 수 없습니다. 대부분의 규칙에는 몇 가지 속성만 필요합니다. 메모리 사용량을 제한하기 위해 선언할 수 있는 속성 수에 한도가 있습니다.
선언된 속성은 |
outputs
|
dict 또는 None 또는 function. 기본값은 None 입니다. 지원 중단됨 이 매개변수는 지원 중단되었으며 곧 삭제될 예정입니다. 이 기능에 의존하지 마세요. --incompatible_no_rule_outputs_param 로 사용 중지됩니다. 이 플래그를 사용하여 코드가 곧 삭제될 기능과 호환되는지 확인하세요. 이 매개변수는 지원 중단되었습니다. 대신 OutputGroupInfo 또는 attr.output 를 사용하도록 규칙을 이전합니다. 미리 선언된 출력을 정의하는 스키마입니다. 이 인수의 값은 사전 또는 사전을 생성하는 콜백 함수입니다. 콜백은 계산된 종속 항목 속성과 유사하게 작동합니다. 함수의 매개변수 이름이 규칙의 속성과 일치하므로 예를 들어 정의 사전의 각 항목은 키가 식별자이고 값이 출력의 라벨을 결정하는 문자열 템플릿인 사전 선언된 출력을 만듭니다. 규칙의 구현 함수에서 식별자는
실제로 가장 일반적인 대체 자리표시자는 |
executable
|
bool;
default is unbound 이 규칙이 실행 가능한 것으로 간주되는지 여부, 즉 blaze run 명령어의 대상이 될 수 있는지 여부입니다. 기본값은 False 입니다. 자세한 내용은 규칙 페이지를 참고하세요.
|
output_to_genfiles
|
bool;
default is False true인 경우 파일이 bin 디렉터리 대신 genfiles 디렉터리에 생성됩니다. 기존 규칙과의 호환성을 위해 필요한 경우가 아니면 (예: C++용 헤더 파일을 생성하는 경우) 이 플래그를 설정하지 마세요. |
fragments
|
string의 sequence. 기본값은 [] 입니다. 규칙에 타겟 구성에 필요한 구성 프래그먼트의 이름 목록입니다. |
host_fragments
|
문자열의 시퀀스. 기본값은 [] 입니다. 규칙에 호스트 구성에 필요한 구성 프래그먼트의 이름 목록입니다. |
_skylark_testable
|
bool;
default is False (실험적) true인 경우 이 규칙은 Actions 제공자를 통해 이 규칙에 종속된 규칙이 검사할 수 있도록 작업을 노출합니다. ctx.created_actions()를 호출하여 규칙 자체에서도 제공자를 사용할 수 있습니다.이는 Starlark 규칙의 분석 시간 동작을 테스트하는 데만 사용해야 합니다. 이 플래그는 향후 삭제될 수 있습니다. |
toolchains
|
sequence;
default is [] If set, the set of toolchains this rule requires. 목록에는 문자열, 라벨 또는 StarlarkToolchainTypeApi 객체가 어떤 조합으로든 포함될 수 있습니다. 툴체인은 현재 플랫폼을 확인하여 찾고 ctx.toolchain 를 통해 규칙 구현에 제공됩니다.
|
incompatible_use_toolchain_transition
|
bool;
default is False 지원 중단되었습니다. 더 이상 사용되지 않으므로 삭제해야 합니다. |
doc
|
문자열 또는 None . 기본값은 None 입니다. 문서 생성 도구로 추출할 수 있는 규칙 설명입니다. |
provides
|
sequence;
default is [] 구현 함수가 반환해야 하는 제공업체 목록입니다. 구현 함수가 여기에 나열된 제공업체 유형 중 하나를 반환 값에서 누락하면 오류입니다. 하지만 구현 함수는 여기에 나열되지 않은 추가 제공업체를 반환할 수 있습니다. 목록의 각 요소는 |
dependency_resolution_rule
|
bool;
default is False If set, the rule can be a dependency through attributes also marked as available in materializers. 이 플래그가 설정된 규칙의 모든 속성은 materializer에서도 사용 가능한 것으로 표시되어야 합니다. 이렇게 하면 표시된 규칙이 표시되지 않은 규칙에 종속될 수 없습니다. |
exec_compatible_with
|
문자열의 시퀀스입니다. 기본값은 [] 입니다. 이 규칙 유형의 모든 타겟에 적용되는 실행 플랫폼의 제약 조건 목록입니다. |
analysis_test
|
bool;
default is False If true, then this rule is treated as an analysis test. 참고: 분석 테스트 규칙은 주로 핵심 Starlark 라이브러리에 제공된 인프라를 사용하여 정의됩니다. 안내는 테스트를 참고하세요. 규칙이 분석 테스트 규칙으로 정의되면 속성에서 analysis_test_transition을 사용하여 정의된 구성 전환을 사용할 수 있지만 일부 제한사항이 적용됩니다.
|
build_setting
|
BuildSetting 또는 None . 기본값은 None 입니다.설정된 경우 이 규칙이 어떤 종류의 build setting 인지 설명합니다. config 모듈을 참고하세요. 이 값이 설정되면 여기에 전달된 값에 해당하는 유형의 필수 속성 'build_setting_default'이 이 규칙에 자동으로 추가됩니다.
|
cfg
|
기본값은 None 입니다. 설정된 경우 분석 전에 규칙이 자체 구성에 적용될 구성 전환을 가리킵니다. |
exec_groups
|
dict 또는 None ;
기본값은 None 실행 그룹 이름 (문자열)에서 exec_group s로의 사전입니다. 설정된 경우 규칙이 단일 타겟 내에서 여러 실행 플랫폼에서 작업을 실행할 수 있습니다. 자세한 내용은 실행 그룹 문서를 참고하세요.
|
initializer
|
기본값은 None 입니다. 실험적: 규칙의 속성을 초기화하는 Stalark 함수입니다. 이 함수는 규칙의 각 인스턴스에 대해 로드 시간에 호출됩니다. 속성 이름에서 원하는 값으로의 사전을 반환해야 합니다. 반환되지 않은 속성은 영향을 받지 않습니다. 이니셜라이저는 속성 정의에 지정된 기본값보다 먼저 평가됩니다. 따라서 이니셜라이저의 서명에 기본값이 포함된 경우 마찬가지로 이니셜라이저의 서명에 있는 매개변수에 기본값이 없으면 매개변수가 필수 매개변수가 됩니다. 이러한 경우 속성 정의에서 기본/필수 설정을 생략하는 것이 좋습니다. 처리되지 않는 속성에는 확장된 규칙의 경우 모든 이니셜라이저는 하위 요소에서 상위 요소로 진행하여 호출됩니다. 각 이니셜라이저에는 알고 있는 공개 속성만 전달됩니다. |
parent
|
기본값은 None 입니다. 실험적: 확장된 Stalark 규칙입니다. 설정하면 공개 속성이 광고된 제공업체와 병합됩니다. 규칙이 상위 항목의 executable 및 test 와 일치합니다. fragments , toolchains , exec_compatible_with , exec_groups 값이 병합됩니다. 기존 또는 지원 중단된 매개변수는 설정할 수 없습니다. 이 규칙의 수신 구성 후에 상위 요소의 수신 구성 전환 cfg 이 적용됩니다.
|
extendable
|
bool 또는 Label 또는 string 또는 None . 기본값은 None 입니다. 실험적: 이 규칙을 확장할 수 있는 규칙을 정의하는 허용 목록의 라벨입니다. 항상 연장을 허용/허용하지 않도록 True/False로 설정할 수도 있습니다. Bazel은 기본적으로 항상 확장 프로그램을 허용합니다. |
subrules
|
Subrule의 sequence입니다. 기본값은 [] 입니다. 실험적: 이 규칙에서 사용하는 하위 규칙 목록입니다. |
select
unknown select(x, no_match_error='')
select()
는 규칙 속성을 구성 가능하게 만드는 도우미 함수입니다. 자세한 내용은 백과사전 빌드를 참고하세요.
매개변수
매개변수 | 설명 |
---|---|
x
|
dict;
required 구성 조건을 값에 매핑하는 사전입니다. 각 키는 config_setting 또는 constraint_value 인스턴스를 식별하는 라벨 또는 라벨 문자열입니다. 문자열 대신 라벨을 사용해야 하는 경우는 매크로에 관한 문서를 참고하세요. |
no_match_error
|
string;
default is '' 조건이 일치하지 않는 경우 보고할 선택적 맞춤 오류입니다. |
subrule
Subrule subrule(implementation, attrs={}, toolchains=[], fragments=[], subrules=[])
매개변수
매개변수 | 설명 |
---|---|
implementation
|
function;
required 이 하위 규칙을 구현하는 Starlark 함수 |
attrs
|
dict;
default is {} 하위 규칙의 모든 (비공개) 속성을 선언하는 사전입니다. 하위 규칙에는 라벨 유형 (예: label 또는 label-list)의 비공개 속성만 있을 수 있습니다. 이러한 라벨에 해당하는 확인된 값은 Bazel에 의해 하위 규칙의 구현 함수에 이름이 지정된 인수로 자동 전달됩니다. 따라서 구현 함수는 속성 이름과 일치하는 이름이 지정된 매개변수를 허용해야 합니다. 이러한 값의 유형은 다음과 같습니다.
|
toolchains
|
sequence;
default is [] If set, the set of toolchains this subrule requires. 목록에는 문자열, 라벨 또는 StarlarkToolchainTypeApi 객체가 어떤 조합으로든 포함될 수 있습니다. 툴체인은 현재 플랫폼을 확인하여 찾고 ctx.toolchains 를 통해 하위 규칙 구현에 제공됩니다. 이 매개변수가 설정된 경우 사용하는 규칙에서 AEG를 사용 설정해야 합니다. 아직 AEG로 이전하지 않은 경우 https://bazel.build/extending/auto-exec-groups#migration-aegs를 참고하세요.
|
fragments
|
string의 sequence. 기본값은 [] 입니다. 하위 규칙이 타겟 구성에서 요구하는 구성 프래그먼트의 이름 목록입니다. |
subrules
|
Subrule의 sequence입니다. 기본값은 [] 입니다. 이 하위 규칙에 필요한 다른 하위 규칙의 목록입니다. |
tag_class
tag_class tag_class(attrs={}, *, doc=None)
매개변수
매개변수 | 설명 |
---|---|
attrs
|
dict;
default is {} 이 태그 클래스의 모든 속성을 선언하는 사전입니다. 속성 이름에서 속성 객체로 매핑됩니다 ( attr 모듈 참고).
|
doc
|
문자열 또는 None ;
기본값은 None 입니다. 문서 생성 도구로 추출할 수 있는 태그 클래스에 대한 설명입니다. |
공개 상태
None
visibility(value)
현재 초기화 중인 .bzl 모듈의 로드 공개 상태를 설정합니다.
모듈의 로드 공개 상태는 다른 BUILD 및 .bzl 파일이 모듈을 로드할 수 있는지 여부를 관리합니다. (이는 파일이 다른 타겟의 종속 항목으로 표시될 수 있는지를 관리하는 기본 .bzl 소스 파일의 타겟 공개 상태와는 다릅니다.) 가시성 로드는 패키지 수준에서 작동합니다. 모듈을 로드하려면 로드를 실행하는 파일이 모듈에 가시성이 부여된 패키지에 있어야 합니다. 모듈은 공개 상태와 관계없이 항상 자체 패키지 내에서 로드할 수 있습니다.
visibility()
은 .bzl 파일당 한 번만 호출할 수 있으며 함수 내부가 아닌 최상위 수준에서만 호출할 수 있습니다. 선호하는 스타일은 이 호출을 load()
문과 인수를 결정하는 데 필요한 간단한 로직 바로 아래에 배치하는 것입니다.
--check_bzl_visibility
플래그가 false로 설정되면 로드 가시성 위반으로 경고가 발생하지만 빌드가 실패하지는 않습니다.
매개변수
매개변수 | 설명 |
---|---|
value
|
필수 패키지 사양 문자열 목록 또는 단일 패키지 사양 문자열입니다. 패키지 사양은
'@' 문법은 허용되지 않습니다. 모든 사양은 현재 모듈의 저장소를 기준으로 해석됩니다.
|