원주민/토착민

네이티브 규칙 및 기타 패키지 도우미 함수를 지원하는 내장 모듈입니다. 모든 네이티브 규칙은 이 모듈에서 함수로 표시됩니다. 예: native.cc_library 네이티브 모듈은 로드 단계에서만 사용할 수 있습니다 (예: 규칙 구현이 아닌 매크로의 경우). 속성은 None 값을 무시하고 속성이 설정되지 않은 것처럼 취급합니다.
다음 함수도 사용할 수 있습니다.

회원

existing_rule

unknown native.existing_rule(name)

이 스레드의 패키지에 인스턴스화된 규칙의 속성을 설명하는 변경 불가능한 dict 형식의 객체를 반환하거나 해당 이름의 규칙 인스턴스가 없는 경우 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를 대신 반환합니다.

결과에는 각 속성에 대한 항목이 포함됩니다. 단, 비공개 속성 (이름이 문자로 시작하지 않는 이름) 및 몇 가지 대표할 수 없는 레거시 속성 유형은 예외입니다. 또한 사전에는 규칙 인스턴스의 namekind에 대한 항목이 포함됩니다 (예: 'cc_binary').

결과 값은 다음과 같이 속성 값을 나타냅니다.

  • str, int 및 bool 유형의 속성은 있는 그대로 표시됩니다.
  • 라벨은 같은 패키지의 타겟인 경우 ':foo' 형식의 문자열로 변환됩니다. 다른 패키지에 있는 타겟의 경우 '//pkg:name' 형식의 문자열로 변환됩니다.
  • 목록은 튜플로 표시되며 dict는 변경 가능한 새로운 dict로 변환됩니다. 요소의 요소는 동일한 방식으로 재귀적으로 변환됩니다.
  • select 값은 위에서 설명한 대로 변환된 콘텐츠와 함께 반환됩니다.
  • 규칙을 인스턴스화하는 동안 지정된 값이 없고 기본값이 계산된 속성은 결과에서 제외됩니다. 계산된 기본값은 분석 단계까지 계산할 수 없습니다.

가능하면 이 함수를 사용하지 마세요. BUILD 파일이 불안정하고 순서에 의존하지 않게 됩니다. 또한 규칙 속성 값의 내부 양식에서 Starlark로의 두 가지 변환과 미묘하게 다르다는 점에 유의하세요. 하나는 계산된 기본값에 사용되고 다른 하나는 ctx.attr.foo에서 사용됩니다.

매개변수

매개변수 설명
name 필수
대상의 이름입니다.

existing_rules

unknown native.existing_rules()

이 스레드의 패키지에서 지금까지 인스턴스화된 규칙을 설명하는 변경 불가능한 dict 형식의 객체를 반환합니다. dict와 같은 객체의 각 항목은 규칙 인스턴스의 이름을 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 sequence of strings 필수
내보낼 파일의 목록입니다.
visibility sequence; or None 기본값 = 없음
공개 상태 선언을 지정할 수 있습니다. 지정된 타겟이 파일을 볼 수 있습니다. 가시성을 지정하지 않으면 파일이 모든 패키지에 표시됩니다.
licenses sequence of strings; or None 기본값 = 없음
지정할 라이선스입니다.

glob

sequence native.glob(include=[], exclude=[], exclude_directories=1, allow_empty=unbound)

Glob은 현재 패키지에 있는 모든 파일의 변경 가능하고 정렬된 새 목록을 반환합니다.
  • include에 있는 하나 이상의 패턴과 일치합니다.
  • exclude의 패턴과 일치하지 않습니다 (기본값 []).
를 통해 개인정보처리방침을 정의할 수 있습니다. exclude_directories 인수가 사용 설정되면 (1로 설정) 디렉터리 유형의 파일은 결과에서 생략됩니다 (기본값 1).

매개변수

매개변수 설명
include sequence of strings 기본값 = []
포함할 glob 패턴의 목록입니다.
exclude sequence of strings 기본값 = []
제외할 glob 패턴의 목록입니다.
exclude_directories 기본값 = 1
디렉토리를 제외할지 여부를 나타내는 플래그입니다.
allow_empty 기본값 = 결합 해제됨
glob 패턴이 아무것도 일치하지 않게 허용할지 여부입니다. `allow_empty` 가 False인 경우 각 개별 포함 패턴이 항목과 일치해야 하며, `제외` 패턴의 일치 항목이 제외된 후 최종 결과는 비어 있지 않아야 합니다.

module_name

string native.module_name()

이 패키지가 있는 저장소와 연결된 Bazel 모듈의 이름입니다. 이 패키지가 MODULE.bazel이 아닌 WORKSPACE에 정의된 저장소에 있는 경우 비어 있습니다. 모듈 확장 프로그램에서 생성한 저장소의 경우 확장 프로그램을 호스팅하는 모듈의 이름입니다. module_ctx.modules에 표시되는 module.name 필드와 동일합니다. None을(를) 반환할 수 있습니다.

module_version

string native.module_version()

이 패키지가 있는 저장소와 연결된 Bazel 모듈의 버전입니다. 이 패키지가 MODULE.bazel이 아닌 WORKSPACE에 정의된 저장소에 있는 경우 비어 있습니다. 모듈 확장 프로그램에 의해 생성된 저장소의 경우 이는 확장 프로그램을 호스팅하는 모듈의 버전입니다. module_ctx.modules에 표시되는 module.version 필드와 동일합니다. None을(를) 반환할 수 있습니다.

package_group

None native.package_group(name, packages=[], includes=[])

이 함수는 패키지 집합을 정의하고 그룹에 라벨을 할당합니다. 라벨은 visibility 속성에서 참조할 수 있습니다.

매개변수

매개변수 설명
name 필수
이 규칙의 고유한 이름입니다.
packages sequence of strings 기본값 = []
이 그룹의 전체 패키지 목록입니다.
includes sequence of strings 기본값 = []
여기에 포함된 다른 패키지 그룹입니다.

package_name

string native.package_name()

저장소 이름을 제외한 평가 중인 패키지의 이름입니다. 예를 들어 BUILD 파일 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; or Label 필수
입력 라벨 문자열 또는 라벨 객체입니다. Label 객체가 전달되면 있는 그대로 반환됩니다.

repo_name

string native.repo_name()

현재 평가 중인 패키지가 포함된 저장소의 표준 이름이며, 선행 @ 기호가 없습니다.

repository_name

string native.repository_name()

실험용. 이 API는 실험용이며 언제든지 변경될 수 있습니다. 여기에 의존하지 마세요. --+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)

파일 시스템 디렉터리 깊이와 관계없이 현재 패키지의 모든 직접 하위 패키지의 변경 가능한 새 목록을 반환합니다. 반환된 목록은 정렬되며 현재 패키지와 관련된 하위 패키지의 이름을 포함합니다. 이 함수를 직접 호출하는 것보다 bazel_skylib.subpackages 모듈의 메서드를 사용하는 것이 좋습니다.

매개변수

매개변수 설명
include sequence of strings 필수
하위 패키지 스캔에 포함할 glob 패턴 목록입니다.
exclude sequence of strings 기본값 = []
하위 패키지 스캔에서 제외할 glob 패턴 목록입니다.
allow_empty 기본값 = False
호출이 빈 목록을 반환하는 경우 실패 여부를 나타냅니다. 기본적으로 빈 목록은 subpackages() 호출이 무의미한 BUILD 파일에서 잠재적인 오류를 나타냅니다. true로 설정하면 이 경우 이 함수가 성공적으로 실행됩니다.