구성원
- 디셋
- 기존_규칙
- 기존_규칙
- exports_files
- 글로브
- module_name
- 모듈 버전
- 패키지 그룹
- 패키지 이름
- package_Relative_label
- repository_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
매개변수를 허용합니다. 지원 중단되었으며 향후 삭제될 예정입니다. 삭제 후 direct
는 depset
함수의 단독 위치 매개변수가 됩니다. 따라서 다음 호출 모두 동등하며 미래에도 사용할 수 있습니다.
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요소가 오프셋의 간접 요소가 될 수 있는 디셋 목록. |
기존_규칙
unknown existing_rule(name)이 스레드의 패키지에서 인스턴스화된 규칙의 속성을 설명하는 변경 불가능한 dict 같은 객체를 반환하거나 해당 이름의 규칙 인스턴스가 없는 경우
None
을 반환합니다.여기서 변경 불가능한 사전 유사 객체는 사전과 같은 반복, len(x)
, name in x
, x[name]
, x.get(name)
, x.items()
, x.keys()
, x.values()
를 지원하는 변경 불가능한 객체 x
를 의미합니다.
--noincompatible_existing_rules_immutable_view
플래그가 설정되면 대신 동일한 콘텐츠로 변경 가능한 새 dict를 반환합니다.
결과에는 문자로 시작하는 비공개 속성 및 표시되지 않는 기존 속성 유형 몇 개를 제외한 각 속성에 대한 항목이 포함됩니다. 또한 dict에는 규칙 인스턴스의 name
및 kind
에 대한 항목이 포함됩니다 (예: 'cc_binary'
).
결과 값은 다음과 같이 속성 값을 나타냅니다.
- str, int, bool 유형의 속성은 그대로 표현됩니다.
- 라벨은 동일한 패키지의 대상에 대해
':foo'
형식의 문자열로, 다른 패키지의 대상에 대해'//pkg:name'
형식으로 변환됩니다. - 목록은 튜플로 표시되고 dict는 변경 가능한 새 dict로 변환됩니다. 이러한 요소는 동일한 방식으로 재귀적으로 변환됩니다.
select
값은 위에서 설명한 대로 콘텐츠가 변환된 상태로 반환됩니다.- 규칙 인스턴스화 중에 값이 지정되지 않았고 기본값이 계산된 속성은 결과에서 제외됩니다. 계산된 기본값은 분석 단계까지 계산할 수 없습니다.
가능하면 이 함수를 사용하지 마세요. 이로 인해 BUILD 파일이 손상되고 순서가 종속됩니다. 또한 내부 속성에서 Starlark로의 규칙 속성 값의 다른 두 가지 변환과 미묘한 차이가 있습니다. 하나는 계산된 기본값에서 사용되고 다른 하나는 ctx.attr.foo
에서 사용됩니다.
매개변수
매개변수 | 설명 |
---|---|
name
|
필수 대상의 이름입니다. |
기존_규칙
unknown existing_rules()지금까지 이 스레드의 패키지에서 인스턴스화한 규칙을 설명하는 변경 불가능한 dict 같은 객체를 반환합니다. dict와 유사한 객체의 각 항목은 규칙 인스턴스의 이름을
existing_rule(name)
에서 반환하는 결과에 매핑합니다.여기서 변경 불가능한 사전 유사 객체는 사전과 같은 반복, 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
플래그가 설정된 경우 이 함수가 비용이 많이 들 수 있으며 특히 루프 내에서 호출하는 경우 그렇습니다.
export_files
None exports_files(srcs, visibility=None, licenses=None)다른 패키지에 내보내는 이 패키지에 속한 파일의 목록을 지정합니다.
매개변수
매개변수 | 설명 |
---|---|
srcs
|
sequence of strings ,
필수내보낼 파일 목록입니다. |
visibility
|
sequence; or None ;
기본값 = None공개 상태 선언을 지정할 수 있습니다. 지정된 타겟에 파일이 표시됩니다. 공개 상태를 지정하지 않으면 파일이 모든 패키지에 표시됩니다. |
licenses
|
sequence of strings; or None ;
기본값 = None지정할 라이선스. |
글로브
sequence glob(include=[], exclude=[], exclude_directories=1, allow_empty=unbound)Glob은 현재 패키지에 있는 모든 파일의 변경 가능한 정렬된 새 목록을 반환합니다.
include
에 있는 1개 이상의 패턴과 일치합니다.exclude
의 패턴과 일치하지 않습니다 (기본값[]
).
exclude_directories
인수가 사용 설정된 경우 (1
로 설정됨) 결과 디렉터리 유형의 파일이 결과에서 생략됩니다 (기본값: 1
).
매개변수
매개변수 | 설명 |
---|---|
include
|
sequence of strings ;
default = []포함할 glob 패턴 목록입니다. |
exclude
|
sequence of strings ;
default = []제외할 glob 패턴 목록입니다. |
exclude_directories
|
default = 1 디렉터리 제외 여부를 나타내는 플래그입니다. |
allow_empty
|
기본값 = unbounded glob 패턴이 아무것도 일치하도록 허용하는지 여부입니다. `allow_empty` 가 False이면 각 개별 포함 패턴은 무언가와 일치해야 하며, 최종 결과는 비어 있지 않아야 합니다 (`exclude` 패턴의 일치가 제외된 후). |
module_name
string module_name()이 패키지가 있는 저장소와 연결된 Bazel 모듈의 이름입니다. 이 패키지가 MODULE.bazel 대신 WORKSPACE에 정의된 저장소에서 제공된 경우 비어 있습니다. 모듈 확장 프로그램으로 생성된 저장소의 경우 확장 프로그램을 호스팅하는 모듈의 이름입니다.
module_ctx.modules
에 표시되는 module.name
필드와 동일합니다.
None
가 반환될 수 있습니다.
모듈_버전
string module_version()이 패키지가 있는 저장소와 연결된 Bazel 모듈의 버전입니다. 이 패키지가 MODULE.bazel 대신 WORKSPACE에 정의된 저장소에서 제공된 경우 비어 있습니다. 모듈 확장 프로그램으로 생성된 저장소의 경우 확장 프로그램을 호스팅하는 모듈의 버전입니다.
module_ctx.modules
에 표시되는 module.version
필드와 동일합니다.
None
가 반환될 수 있습니다.
package_group
None package_group(name, packages=[], includes=[])이 함수는 패키지 집합을 정의하고 그룹에 라벨을 할당합니다. 라벨은
visibility
속성에서 참조할 수 있습니다.
매개변수
매개변수 | 설명 |
---|---|
name
|
필수 이 규칙의 고유한 이름입니다. |
packages
|
sequence of strings ;
default = []이 그룹에 있는 패키지의 전체 열거입니다. |
includes
|
sequence of strings ;
default = []이 패키지에 포함된 다른 패키지 그룹 |
package_name
string package_name()평가 중인 패키지의 이름입니다. 예를 들어 BUILD 파일
some/package/BUILD
에서 값은 some/package
입니다. BUILD 파일이 .bzl 파일에 정의된 함수를 호출하면 package_name()
는 호출자 BUILD 파일 패키지와 일치합니다. 이 함수는 지원 중단된 변수 PACKAGE_NAME
와 동일합니다.
package_Relative_label
Label package_relative_label(input)현재 초기화된 패키지의 컨텍스트 (즉, 현재 매크로가 실행 중인
BUILD
파일)에서 입력 문자열을 Label 객체로 변환합니다. 입력이 이미 Label
이면 변경되지 않은 상태로 반환됩니다.이 함수는 BUILD 파일과 해당 파일이 직간접적으로 호출하는 동안에만 호출할 수 있습니다. 규칙 구현 함수에서는 호출할 수 없습니다.
이 함수의 결과는 BUILD 파일에 선언된 타겟의 라벨 값 속성에 지정된 문자열을 전달하면 생성되는 것과 동일한 Label
값입니다.
사용 참고사항: 이 함수와 Label()의 차이점은 Label()
는 BUILD
파일의 패키지가 아닌 이 함수를 호출한 .bzl
파일의 패키지 컨텍스트를 사용한다는 것입니다. 컴파일러와 같이 매크로에 하드코딩된 고정된 타겟을 참조해야 하는 경우 Label()
를 사용합니다. BUILD 파일에서 Label
객체에 제공하는 라벨 문자열을 정규화해야 하는 경우 package_relative_label()
를 사용합니다. (빌드 파일 또는 호출 .bzl 파일 외의 다른 패키지에서는 문자열을 Label
로 변환할 수 없습니다. 따라서 외부 매크로는 항상 라벨 문자열이 아닌 내부 매크로에 Label 객체를 전달하는 것이 좋습니다.
매개변수
매개변수 | 설명 |
---|---|
input
|
string; or Label ,
필수입력 라벨 문자열 또는 라벨 객체입니다. Label 객체가 전달되면 그대로 반환됩니다. |
저장소_이름
string repository_name()규칙 또는 빌드 확장 프로그램이 호출되는 저장소 이름입니다. 예를 들어 WORKSPACE 스탠자
local_repository(name='local', path=...)
에 의해 존재가 호출되는 패키지에서는 @local
로 설정됩니다. 기본 저장소의 패키지에서는 @
로 설정됩니다. 이 함수는 지원 중단된 변수 REPOSITORY_NAME
와 동일합니다.
select
unknown select(x, no_match_error='')
select()
는 규칙 속성을 구성할 수 있는 도우미 함수입니다. 자세한 내용은 빌드 백과사전을 참고하세요.
매개변수
매개변수 | 설명 |
---|---|
x
|
필수 구성 조건을 값에 매핑하는 사전. 각 키는 config_setting 또는 constraints_value 인스턴스를 식별하는 Label 또는 라벨 문자열입니다. 문자열 대신 라벨을 사용하는 경우는 매크로 문서를 참고하세요. |
no_match_error
|
default = '' 일치하는 조건이 없는 경우 보고할 커스텀 오류(선택사항) |
하위 패키지
sequence subpackages(include, exclude=[], allow_empty=False)파일 시스템 디렉터리 깊이와 관계없이 현재 패키지의 모든 직접 하위 패키지의 변경 가능한 새 목록을 반환합니다. 반환된 목록은 정렬되며 현재 패키지를 기준으로 하는 하위 패키지의 이름이 포함됩니다. 이 함수를 직접 호출하는 대신 bazel_skylib.subpackages 모듈에서 메서드를 사용하는 것이 좋습니다.
매개변수
매개변수 | 설명 |
---|---|
include
|
sequence of strings ,
필수하위 패키지 스캔에 포함할 glob 패턴 목록입니다. |
exclude
|
sequence of strings ;
default = []하위 패키지 스캔에서 제외할 glob 패턴 목록입니다. |
allow_empty
|
default = False 호출에서 빈 목록을 반환하는 경우 성공할지 여부입니다. 기본적으로 빈 목록은 subpackages() 호출이 불필요하게 많은 BUILD 파일에서 잠재적인 오류를 나타냅니다. 이 경우 true로 설정하면 함수가 성공합니다. |