네이티브 규칙 및 기타 패키지 도우미 함수를 지원하는 내장 모듈입니다. 모든 네이티브 규칙은 이 모듈에서 함수로 표시됩니다. 예: native.cc_library
네이티브 모듈은 로드 단계에서만 사용할 수 있습니다 (예: 규칙 구현이 아닌 매크로의 경우). 속성은 None
값을 무시하고 속성이 설정되지 않은 것처럼 취급합니다.
다음 함수도 사용할 수 있습니다.
회원
- existing_rule
- existing_rules
- exports_files
- glob
- module_name
- module_version
- package_group
- package_name
- package_relative_label
- repo_name
- repository_name
- 하위 패키지
existing_rule
unknown native.existing_rule(name)
None
를 반환합니다.여기에서 변경 불가능한 dict와 같은 객체는 dict와 같은 반복(len(x)
, name in x
, x[name]
, x.get(name)
, x.items()
, x.keys()
, x.values()
)을 지원하는 완전히 변경할 수 없는 객체 x
를 의미합니다.
--noincompatible_existing_rules_immutable_view
플래그가 설정된 경우에는 동일한 콘텐츠가 포함된 변경 가능한 새 dict를 대신 반환합니다.
결과에는 각 속성에 대한 항목이 포함됩니다. 단, 비공개 속성 (이름이 문자로 시작하지 않는 이름) 및 몇 가지 대표할 수 없는 레거시 속성 유형은 예외입니다. 또한 사전에는 규칙 인스턴스의 name
및 kind
에 대한 항목이 포함됩니다 (예: 'cc_binary'
).
결과 값은 다음과 같이 속성 값을 나타냅니다.
- str, int 및 bool 유형의 속성은 있는 그대로 표시됩니다.
- 라벨은 같은 패키지의 타겟인 경우
':foo'
형식의 문자열로 변환됩니다. 다른 패키지에 있는 타겟의 경우'//pkg:name'
형식의 문자열로 변환됩니다. - 목록은 튜플로 표시되며 dict는 변경 가능한 새로운 dict로 변환됩니다. 요소의 요소는 동일한 방식으로 재귀적으로 변환됩니다.
select
값은 위에서 설명한 대로 변환된 콘텐츠와 함께 반환됩니다.- 규칙을 인스턴스화하는 동안 지정된 값이 없고 기본값이 계산된 속성은 결과에서 제외됩니다. 계산된 기본값은 분석 단계까지 계산할 수 없습니다.
가능하면 이 함수를 사용하지 마세요. BUILD 파일이 불안정하고 순서에 의존하지 않게 됩니다. 또한 규칙 속성 값의 내부 양식에서 Starlark로의 두 가지 변환과 미묘하게 다르다는 점에 유의하세요. 하나는 계산된 기본값에 사용되고 다른 하나는 ctx.attr.foo
에서 사용됩니다.
매개변수
매개변수 | 설명 |
---|---|
name
|
필수 대상의 이름입니다. |
existing_rules
unknown native.existing_rules()
existing_rule(name)
에서 반환하는 결과에 매핑합니다.여기에서 변경 불가능한 dict와 같은 객체는 dict와 같은 반복(len(x)
, name in x
, x[name]
, x.get(name)
, x.items()
, x.keys()
, x.values()
)을 지원하는 완전히 변경할 수 없는 객체 x
를 의미합니다.
--noincompatible_existing_rules_immutable_view
플래그가 설정된 경우에는 동일한 콘텐츠가 포함된 변경 가능한 새 dict를 대신 반환합니다.
참고: 가능하면 이 함수를 사용하지 마세요. BUILD 파일이 불안정하고 순서에 의존하지 않게 됩니다. 또한 --noincompatible_existing_rules_immutable_view
플래그가 설정된 경우 이 함수는 특히 루프 내에서 호출되는 경우 비용이 많이 들 수 있습니다.
exports_files
None
native.exports_files(srcs, visibility=None, licenses=None)
매개변수
매개변수 | 설명 |
---|---|
srcs
|
string의 sequence;
필수 내보낼 파일의 목록입니다. |
visibility
|
sequence; 또는 None
기본값은 None 입니다. 공개 상태 선언을 지정할 수 있습니다. 지정된 타겟이 파일을 볼 수 있습니다. 가시성을 지정하지 않으면 파일이 모든 패키지에 표시됩니다. |
licenses
|
string의 sequence; 또는 None
기본값은 None 입니다. 지정할 라이선스입니다. |
glob
sequence native.glob(include=[], exclude=[], exclude_directories=1, allow_empty=unbound)
include
에 있는 하나 이상의 패턴과 일치합니다.exclude
의 패턴과 일치하지 않습니다 (기본값[]
).
exclude_directories
인수가 사용 설정되면 (1
로 설정) 디렉터리 유형의 파일은 결과에서 생략됩니다 (기본값 1
).
매개변수
매개변수 | 설명 |
---|---|
include
|
string의 sequence;
기본값은 [] 입니다. 포함할 glob 패턴의 목록입니다. |
exclude
|
string의 sequence;
기본값은 [] 입니다. 제외할 glob 패턴의 목록입니다. |
exclude_directories
|
기본값은 1 입니다. 디렉토리를 제외할지 여부를 나타내는 플래그입니다. |
allow_empty
|
기본값은 unbound 입니다. glob 패턴이 아무것도 일치하지 않게 허용할지 여부입니다. `allow_empty` 가 False인 경우 각 개별 포함 패턴이 항목과 일치해야 하며, `제외` 패턴의 일치 항목이 제외된 후 최종 결과는 비어 있지 않아야 합니다. |
module_name
string native.module_name()
module_ctx.modules
에 표시되는 module.name
필드와 동일합니다.
None
을(를) 반환할 수 있습니다.
module_version
string native.module_version()
module_ctx.modules
에 표시되는 module.version
필드와 동일합니다.
None
을(를) 반환할 수 있습니다.
package_group
None
native.package_group(name, packages=[], includes=[])
visibility
속성에서 참조할 수 있습니다.
매개변수
매개변수 | 설명 |
---|---|
name
|
필수 이 규칙의 고유한 이름입니다. |
packages
|
string의 sequence;
기본값은 [] 입니다. 이 그룹의 전체 패키지 목록입니다. |
includes
|
string의 sequence;
기본값은 [] 입니다. 여기에 포함된 다른 패키지 그룹입니다. |
package_name
string native.package_name()
some/package/BUILD
에서 값은 some/package
입니다. BUILD 파일이 .bzl 파일에 정의된 함수를 호출하면 package_name()
는 호출자 BUILD 파일 패키지와 일치합니다.
package_relative_label
Label native.package_relative_label(input)
BUILD
파일)의 컨텍스트에서 입력 문자열을 Label 객체로 변환합니다. 입력이 이미 Label
이면 변경되지 않은 상태로 반환됩니다.이 함수는 BUILD 파일 및 직접 또는 간접적으로 호출하는 매크로를 평가하는 동안에만 호출할 수 있습니다. 예를 들어 규칙 구현 함수에서 호출할 수 없습니다.
이 함수의 결과는 BUILD 파일에서 선언된 대상의 라벨 값 속성에 지정된 문자열을 전달하여 생성되는 것과 동일한 Label
값입니다.
사용 참고사항: 이 함수와 Label()의 차이점은 Label()
는 BUILD
파일의 패키지가 아니라 함수를 호출한 .bzl
파일 패키지의 컨텍스트를 사용한다는 것입니다. 컴파일러와 같이 매크로에 하드코딩된 고정 타겟을 참조해야 하는 경우 Label()
를 사용하세요. BUILD 파일에서 제공하는 라벨 문자열을 Label
객체로 정규화해야 하는 경우 package_relative_label()
를 사용합니다. (BUILD 파일이나 .bzl 파일을 호출하는 경우를 제외하고 패키지의 컨텍스트에서 문자열을 Label
로 변환할 수 있는 방법은 없습니다. 따라서 외부 매크로는 라벨 문자열이 아닌 내부 매크로에 라벨 객체를 전달하는 것을 항상 선호해야 합니다.
매개변수
매개변수 | 설명 |
---|---|
input
|
string; 또는 라벨
필수 입력 라벨 문자열 또는 라벨 객체입니다. Label 객체가 전달되면 있는 그대로 반환됩니다. |
repo_name
string native.repo_name()
repository_name
string native.repository_name()
--+incompatible_enable_deprecated_label_apis
지원 중단됨을 설정하여 실험용으로 사용 설정할 수 있습니다. 대신
repo_name
을 사용하는 것이 좋습니다. 이 경우 가짜 선행 at 부호가 포함되지 않지만 그 외에는 동일하게 작동합니다.현재 평가 중인 패키지가 포함된 저장소의 표준 이름으로, 단일 at-sign (@
)을 접두사로 사용합니다. 예를 들어 WORKSPACE 스탠자 local_repository(name='local', path=...)
에 의해 호출되는 패키지에서는 @local
로 설정됩니다. 기본 저장소의 패키지에서는 @
로 설정됩니다.
하위 패키지
sequence native.subpackages(include, exclude=[], allow_empty=False)
매개변수
매개변수 | 설명 |
---|---|
include
|
string의 sequence;
필수 하위 패키지 스캔에 포함할 glob 패턴 목록입니다. |
exclude
|
string의 sequence;
기본값은 [] 입니다. 하위 패키지 스캔에서 제외할 glob 패턴 목록입니다. |
allow_empty
|
기본값은 False 입니다. 호출이 빈 목록을 반환하는 경우 실패 여부를 나타냅니다. 기본적으로 빈 목록은 subpackages() 호출이 무의미한 BUILD 파일에서 잠재적인 오류를 나타냅니다. true로 설정하면 이 경우 이 함수가 성공적으로 실행됩니다. |