成员
- 全部
- analysis_test_transition
- 任意
- archive_override
- 方面
- bazel_dep
- 绑定
- bool
- configuration_field
- depset
- dict
- dir
- enumerate
- exec_group
- fail
- float
- getattr
- git_override
- hasattr
- 哈希
- int
- len
- list
- local_path_override
- max
- 分钟
- module
- module_extension
- multiple_version_override
- 打印
- 提供商
- range
- register_execution_platforms()
- register_execution_platforms(dev_dependency)
- register_toolchains()
- register_toolchains(dev_dependency)
- repository_rule
- repr
- reversed
- 规则
- 选择
- single_version_override
- 已排序
- str
- tag_class
- tuple
- type
- use_extension
- use_repo
- 可见性
- 工作区
- zip
全部
bool all(elements)
all(["hello", 3, True]) == True all([-1, 0, 1]) == False
参数
| 参数 | 说明 |
|---|---|
elements
|
必需 一个字符串或一个元素集合。 |
analysis_test_transition
transition analysis_test_transition(settings)
创建配置转换,以应用于分析测试规则的依赖项。此过渡效果只能应用于具有 analysis_test = True 的规则的属性。此类规则的功能受到限制(例如,其依赖树的大小受到限制),因此与使用 transition 创建的过渡相比,使用此函数创建的过渡的潜在范围受到限制。
此函数主要用于帮助实现分析测试框架核心库。如需了解最佳实践,请参阅其文档(或其实现)。
参数
| 参数 | 说明 |
|---|---|
settings
|
必需 一个字典,包含有关应通过此配置转换设置的配置设置的信息。键是 build 设置标签,值是它们在过渡后的新值。所有其他设置保持不变。使用此属性可声明分析测试通过所需的特定配置设置。 |
任意
bool any(elements)
any([-1, 0, 1]) == True any([False, 0, ""]) == False
参数
| 参数 | 说明 |
|---|---|
elements
|
必需 一个字符串或一个元素集合。 |
archive_override
None archive_override(module_name, urls, integrity='', strip_prefix='', patches=[], patch_cmds=[], patch_strip=0)
参数
| 参数 | 说明 |
|---|---|
module_name
|
必需 要应用此替换项的 Bazel 模块依赖项的名称。 |
urls
|
string; or Iterable of strings;
必需归档的网址;可以是 http(s):// 或 file:// 网址。 |
integrity
|
default = '' 归档文件的预期校验和,采用子资源完整性格式。 |
strip_prefix
|
default = '' 要从提取的文件中剥离的目录前缀。 |
patches
|
Iterable of strings;
default = []指向要为此模块应用的补丁文件的标签列表。补丁文件必须存在于顶级项目的源代码树中。它们会按列表顺序应用。 |
patch_cmds
|
Iterable of strings;
default = []在应用补丁后,要在 Linux/Macos 上应用的一系列 Bash 命令。 |
patch_strip
|
default = 0 与 Unix patch 的 --strip 实参相同。 |
切面
Aspect aspect(implementation, attr_aspects=[], attrs=None, required_providers=[], required_aspect_providers=[], provides=[], requires=[], fragments=[], host_fragments=[], toolchains=[], incompatible_use_toolchain_transition=False, doc='', *, apply_to_generating_rules=False, exec_compatible_with=[], exec_groups=None)
参数
| 参数 | 说明 |
|---|---|
implementation
|
必需 实现此方面的 Starlark 函数,具有两个参数:Target(应用该方面的目标)和 ctx(创建目标的规则上下文)。目标的相关属性可通过 ctx.rule 字段获取。此函数在分析阶段针对方面对目标的每次应用进行评估。
|
attr_aspects
|
sequence of strings;
default = []属性名称列表。方面会沿着具有这些名称的目标属性中指定的依赖项进行传播。此处的常见值包括 deps 和 exports。该列表还可以包含单个字符串 "*",以沿目标的所有依赖项传播。
|
attrs
|
dict; or None;
默认值 = None一个字典,用于声明方面的所有属性。它从属性名称映射到属性对象,例如 `attr.label` 或 `attr.string`(请参阅 attr 模块)。方面属性可作为 ctx 形参的字段供实现函数使用。以 显式属性必须具有 |
required_providers
|
default = [] 此属性允许方面将其传播限制为仅限那些规则声明了其所需提供程序的目标。该值必须是一个列表,其中包含单个提供商或提供商列表,但不能同时包含这两者。例如, [[FooInfo], [BarInfo], [BazInfo, QuxInfo]] 是有效值,而 [FooInfo, BarInfo, [BazInfo, QuxInfo]] 不是有效值。未嵌套的提供商列表将自动转换为包含一个提供商列表的列表。也就是说, 为了使某个规则(例如 |
required_aspect_providers
|
default = [] 此属性允许此方面检查其他方面。该值必须是一个列表,其中包含单个提供商或提供商列表,但不能同时包含这两者。例如, [[FooInfo], [BarInfo], [BazInfo, QuxInfo]] 是有效值,而 [FooInfo, BarInfo, [BazInfo, QuxInfo]] 不是有效值。未嵌套的提供商列表将自动转换为包含一个提供商列表的列表。也就是说, 若要使另一个方面(例如 |
provides
|
default = [] 实现函数必须返回的提供程序列表。 如果实现函数从其返回值中省略了此处列出的任何类型的提供程序,则会出错。不过,实现函数可能会返回此处未列出的其他提供程序。 列表中的每个元素都是 |
requires
|
sequence of Aspects;
default = []在传播此方面之前需要传播的方面列表。 |
fragments
|
sequence of strings;
default = []方面在目标配置中所需的配置 fragment 的名称列表。 |
host_fragments
|
sequence of strings;
default = []方面在宿主配置中所需的配置 fragment 的名称列表。 |
toolchains
|
sequence;
default = []如果已设置,则表示此规则所需的工具链集。该列表可以包含 String、Label 或 StarlarkToolchainTypeApi 对象,并且可以包含任意组合。通过检查当前平台来查找 Toolchain,并通过 ctx.toolchain 提供给规则实现。
|
incompatible_use_toolchain_transition
|
default = False 已弃用,此参数不再使用,应移除。 |
doc
|
default = '' 可由文档生成工具提取的方面说明。 |
apply_to_generating_rules
|
default = False 如果为 true,则宽高比在应用于输出文件时,会改为应用于输出文件的生成规则。 例如,假设某个方面通过属性“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
|
sequence of strings;
default = []适用于相应方面所有实例的执行平台限制条件列表。 |
exec_groups
|
dict; or None;
default = None执行组名称(字符串)与 exec_group 的字典。如果设置,则允许方面在单个实例中的多个执行平台上运行操作。如需了解详情,请参阅执行组文档。
|
bazel_dep
None bazel_dep(name, version='', max_compatibility_level=-1, repo_name='', dev_dependency=False)
参数
| 参数 | 说明 |
|---|---|
name
|
必需 要添加为直接依赖项的模块的名称。 |
version
|
default = '' 要添加为直接依赖项的模块的版本。 |
max_compatibility_level
|
default = -1 作为直接依赖项添加的模块支持的最大 compatibility_level。模块的版本表示支持的最低 compatibility_level,如果未指定此属性,则还表示支持的最高 compatibility_level。
|
repo_name
|
default = '' 表示相应依赖项的外部代码库的名称。默认情况下,这是模块的名称。 |
dev_dependency
|
default = False 如果为 true,则当当前模块不是根模块或启用了 `--ignore_dev_dependency` 时,系统会忽略此依赖项。 |
绑定
None bind(name, actual=None)
警告:不建议使用 bind()。如需详细了解相关问题和替代方案,请参阅考虑移除绑定。
为 //external 软件包中的目标指定别名。
参数
| 参数 | 说明 |
|---|---|
name
|
必需 “//external”下的标签,用作别名 |
actual
|
string; or None;
default = None要别名的真实标签 |
bool
bool bool(x=False)
None、False、空字符串 ("")、数字 0 或空集合(例如 ()、[]),则返回 False。否则,返回 True。
参数
| 参数 | 说明 |
|---|---|
x
|
default = False 要转换的变量。 |
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
|
必需 包含后期绑定值的配置 fragment 的名称。 |
name
|
必需 要从配置 fragment 中获取的值的名称。 |
depset
depset depset(direct=None, order="default", *, transitive=None)
direct 参数是 depset 的直接元素列表,transitive 参数是 depset 的列表,这些 depset 的元素会成为所创建 depset 的间接元素。将 depset 转换为列表时,返回元素的顺序由 order 参数指定。如需了解详情,请参阅 Depset 概览。
depset 的所有元素(直接和间接)都必须具有相同的类型,如表达式 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;
default = Nonedepset 的直接元素列表。 |
order
|
default = "default" 新 depset 的遍历策略。如需了解可能的值,请点击此处。 |
transitive
|
sequence of depsets; or None;
default = None一个 depsets 列表,其元素将成为 depset 的间接元素。 |
dict
dict dict(pairs=[], **kwargs)
参数
| 参数 | 说明 |
|---|---|
pairs
|
default = [] 一个字典,或一个可迭代对象,其每个元素的长度均为 2(键、值)。 |
kwargs
|
必需 其他条目的字典。 |
dir
list dir(x)
参数
| 参数 | 说明 |
|---|---|
x
|
必需 要检查的对象。 |
枚举
list enumerate(list, start=0)
enumerate([24, 21, 84]) == [(0, 24), (1, 21), (2, 84)]
参数
| 参数 | 说明 |
|---|---|
list
|
必需 输入序列。 |
start
|
default = 0 start index. |
exec_group
exec_group exec_group(toolchains=[], exec_compatible_with=[], copy_from_rule=False)
参数
| 参数 | 说明 |
|---|---|
toolchains
|
sequence;
default = []相应执行组所需的工具链集。该列表可以包含 String、Label 或 StarlarkToolchainTypeApi 对象,并且可以包含任意组合。 |
exec_compatible_with
|
sequence of strings;
default = []执行平台上的限制条件列表。 |
copy_from_rule
|
default = False 如果设置为 true,此执行组会继承所附加规则的工具链和限制。如果设置为任何其他字符串,则会抛出错误。 |
fail
None fail(msg=None, attr=None, *args)
参数
| 参数 | 说明 |
|---|---|
msg
|
default = None 已弃用:请改用位置实参。此实参的作用类似于隐式前导位置实参。 |
attr
|
string; or None;
default = None已弃用。导致在错误消息中添加包含此字符串的可选前缀。 |
args
|
必需 一个值列表,使用 debugPrint(默认情况下等同于 str)进行格式化,并使用空格联接,显示在错误消息中。 |
float
float float(x=unbound)
- 如果
x已经是浮点数,则float会原封不动地返回该值。 - 如果
x是布尔值,则float会针对 True 返回 1.0,针对 False 返回 0.0。 - 如果
x是 int,float会返回最接近 x 的有限浮点值,如果幅度过大,则返回错误。 - 如果
x是字符串,则必须是有效的浮点字面量,或者等于(忽略大小写)NaN、Inf或Infinity,并且可以选择性地以+或-符号开头。
float() 会返回 0.0。
参数
| 参数 | 说明 |
|---|---|
x
|
default = unbound 要转换的值。 |
getattr
unknown getattr(x, name, default=unbound)
default(如果已指定)或引发错误。getattr(x, "foobar") 等效于 x.foobar。getattr(ctx.attr, "myattr") getattr(ctx.attr, "myattr", "mydefault")
参数
| 参数 | 说明 |
|---|---|
x
|
必需 要访问其属性的结构体。 |
name
|
必需属性 结构体属性的名称。 |
default
|
default = unbound 如果结构体没有指定名称的属性,则返回的默认值。 |
git_override
None git_override(module_name, remote, commit='', patches=[], patch_cmds=[], patch_strip=0)
参数
| 参数 | 说明 |
|---|---|
module_name
|
必需 要应用此替换项的 Bazel 模块依赖项的名称。 |
remote
|
必需 远程 Git 代码库的网址。 |
commit
|
default = '' 应签出的提交。 |
patches
|
Iterable of strings;
default = []指向要为此模块应用的补丁文件的标签列表。补丁文件必须存在于顶级项目的源代码树中。它们会按列表顺序应用。 |
patch_cmds
|
Iterable of strings;
default = []在应用补丁后,要在 Linux/Macos 上应用的一系列 Bash 命令。 |
patch_strip
|
default = 0 与 Unix patch 的 --strip 实参相同。 |
hasattr
bool hasattr(x, name)
x 具有指定 name 的属性或方法,则返回 True,否则返回 False。示例:hasattr(ctx.attr, "myattr")
参数
| 参数 | 说明 |
|---|---|
x
|
必需 要检查的对象。 |
name
|
必需 属性的名称。 |
哈希
int hash(value)
String.hashCode() 相同的算法确定性地计算得出,即:s[0] * (31^(n-1)) + s[1] * (31^(n-2)) + ... + s[n-1]
参数
| 参数 | 说明 |
|---|---|
value
|
必需 要进行哈希处理的字符串值。 |
int
int int(x, base=unbound)
- 如果
x已经是 int,int会按原样返回。 - 如果
x是布尔值,则int会针对 True 返回 1,针对 False 返回 0。 - 如果
x是字符串,则必须采用<sign><prefix><digits>格式。<sign>是"+"、"-"或空(解释为正)。<digits>是从 0 到base- 1 的数字序列,其中字母 a-z(或等效的 A-Z)用作 10-35 的数字。如果base为 2/8/16,则<prefix>为可选,并且可以分别为 0b/0o/0x(或等效的 0B/0O/0X);如果base是除这些基数或特殊值 0 之外的任何其他值,则前缀必须为空。如果base为 0,则字符串会被解释为整数字面量,也就是说,系统会根据所用的前缀(如果有)选择基数 2/8/10/16 中的一个。如果base为 0,则不使用任何前缀,并且位数超过一位,则首位不能为 0;这是为了避免八进制和十进制混淆。字符串表示的数字的大小必须在 int 类型的允许范围内。 - 如果
x是浮点数,int会返回该浮点数的整数值,并向零舍入。如果 x 为非有限值(NaN 或无穷大),则会出错。
x 是任何其他类型,或者该值是不满足上述格式的字符串,此函数会失败。与 Python 的 int 函数不同,此函数不允许使用零个实参,也不允许字符串实参包含多余的空格。示例:
int("123") == 123
int("-123") == -123
int("+123") == 123
int("FF", 16) == 255
int("0xFF", 16) == 255
int("10", 0) == 10
int("-0x10", 0) == -16
int("-0x10", 0) == -16
int("123.456") == 123
参数
| 参数 | 说明 |
|---|---|
x
|
必需 要转换的字符串。 |
base
|
default = unbound 用于解释字符串值的基数;默认为 10。必须介于 2 到 36(含)之间,或为 0 以检测基数,就像 x 是整数字面量一样。如果该值不是字符串,则不得提供此参数。
|
len
int len(x)
参数
| 参数 | 说明 |
|---|---|
x
|
必需 要报告长度的值。 |
list
list list(x=[])
list([1, 2]) == [1, 2]
list((2, 3, 2)) == [2, 3, 2]
list({5: "a", 2: "b", 4: "c"}) == [5, 2, 4]参数
| 参数 | 说明 |
|---|---|
x
|
default = [] 要转换的对象。 |
local_path_override
None local_path_override(module_name, path)
参数
| 参数 | 说明 |
|---|---|
module_name
|
必需 要应用此替换项的 Bazel 模块依赖项的名称。 |
path
|
必需 相应模块所在的目录的路径。 |
max
unknown max(*args)
max(2, 5, 4) == 5 max([5, 6, 3]) == 6
参数
| 参数 | 说明 |
|---|---|
args
|
必需 要检查的元素。 |
分钟
unknown min(*args)
min(2, 5, 4) == 2 min([5, 6, 3]) == 3
参数
| 参数 | 说明 |
|---|---|
args
|
必需 要检查的元素。 |
module
None module(name='', version='', compatibility_level=0, repo_name='', bazel_compatibility=[])
最多只能调用一次。只有当相应模块是根模块(即不会被其他模块依赖)时,才能省略此属性。
参数
| 参数 | 说明 |
|---|---|
name
|
default = '' 模块的名称。只有当相应模块是根模块(即不会被其他模块依赖)时,才能省略此属性。有效的模块名称必须符合以下条件:1) 只能包含小写字母 (a-z)、数字 (0-9)、句点 (.)、连字符 (-) 和下划线 (_);2) 以小写字母开头;3) 以小写字母或数字结尾。 |
version
|
default = '' 模块的版本。只有当相应模块是根模块(即不会被其他模块依赖)时,才能省略此属性。 |
compatibility_level
|
默认值 = 0 模块的兼容性级别;每次引入重大不兼容的更改时,都应更改此值。这在 SemVer 方面基本上是模块的“主要版本”,只不过它不是嵌入在版本字符串本身中,而是作为单独的字段存在。具有不同兼容性级别的模块会参与版本解析,就像它们是具有不同名称的模块一样,但最终的依赖关系图不能包含多个名称相同但兼容性级别不同的模块(除非 multiple_version_override 生效;有关更多详细信息,请参阅该部分)。
|
repo_name
|
default = '' 相应模块所代表的代码库的名称,以模块本身所见为准。默认情况下,代码库的名称与模块的名称相同。可以指定此属性,以便于迁移那些一直使用与模块名称不同的代码库名称的项目。 |
bazel_compatibility
|
Iterable of strings;
default = []一个 Bazel 版本列表,允许用户声明哪些 Bazel 版本与此模块兼容。它不会影响依赖项解析,但 bzlmod 会使用此信息来检查您当前的 Bazel 版本是否兼容。此值的格式为以英文逗号分隔的某些限制值组成的字符串。支持以下三种限制:<=X.X.X:Bazel 版本必须等于或低于 X.X.X。当新版本中存在已知的不兼容变更时使用。>=X.X.X:Bazel 版本必须等于或高于 X.X.X。当您依赖于仅自 X.X.X 起可用的某些功能时使用。-X.X.X:Bazel 版本 X.X.X 不兼容。如果 X.X.X 中存在会影响您的 bug,但在后续版本中已修复,则使用此属性。 |
module_extension
unknown module_extension(implementation, *, tag_classes={}, doc='', environ=[], os_dependent=False, arch_dependent=False)参数
| 参数 | 说明 |
|---|---|
implementation
|
必需 实现此模块扩展的函数。必须接受单个参数 module_ctx。在 build 开始时调用一次,以确定可用的 repo 集。
|
tag_classes
|
default = {} 用于声明扩展程序使用的所有标记类的字典。它从标记类的名称映射到 tag_class 对象。
|
doc
|
default = '' 可由文档生成工具提取的模块扩展程序说明。 |
environ
|
sequence of strings;
default = []提供此模块扩展所依赖的环境变量的列表。如果该列表中的某个环境变量发生变化,系统将重新评估扩展程序。 |
os_dependent
|
default = False 指示相应扩展程序是否依赖于操作系统 |
arch_dependent
|
default = False 表示相应扩展程序是否依赖于架构 |
multiple_version_override
None multiple_version_override(module_name, versions, registry='')
参数
| 参数 | 说明 |
|---|---|
module_name
|
必需 要应用此替换项的 Bazel 模块依赖项的名称。 |
versions
|
Iterable of strings;
必需明确指定允许共存的版本。这些版本必须已存在于预选的依赖关系图中。对该模块的依赖项将“升级”到同一兼容性级别中最近的更高允许版本,而版本高于同一兼容性级别中任何允许版本的依赖项将导致错误。 |
registry
|
default = '' 替换相应模块的注册表;不从默认注册表列表中查找相应模块,而应使用给定的注册表。 |
输出
None print(sep=" ", *args)
args。它将以字符串 "DEBUG" 和相应调用的位置(文件和行号)为前缀。将实参转换为字符串的确切方式未指定,并且可能会随时更改。具体而言,它可能与 str() 和 repr() 执行的格式设置不同(且更详细)。不建议在生产代码中使用 print,因为这会给用户带来垃圾内容。对于弃用,请尽可能使用 fail() 来实现硬性错误。
参数
| 参数 | 说明 |
|---|---|
sep
|
default = " " 对象之间的分隔符字符串,默认为空格 (" ")。 |
args
|
必需 要打印的对象。 |
provider
unknown provider(doc='', *, 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,则返回一个包含 2 个元素的元组:一个 Provider 可调用值和一个原始构造函数可调用值。如需了解详情,请参阅规则(自定义提供程序的自定义初始化)以及下文中对 init 参数的讨论。
参数
| 参数 | 说明 |
|---|---|
doc
|
default = '' A description of the provider that can be extracted by documentation generating tools. |
fields
|
sequence of strings; or dict; or None;
default = None如果指定,则限制允许的字段集。 可能的值包括:
|
init
|
callable; or None;
default = NoneAn optional callback for preprocessing and validating the provider's field values during instantiation. 如果指定了 init,provider() 会返回一个包含 2 个元素的元组:常规提供程序符号和原始构造函数。下文将给出精确的说明;如需直观地了解相关内容和使用情形,请参阅规则(提供程序的自定义初始化)。 假设
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 = ...) |
范围
sequence range(start_or_stop, stop_or_none=None, step=1)
start 到 stop,增量为 step。如果只提供一个实参,则项的范围将从 0 到该元素。range(4) == [0, 1, 2, 3] range(3, 9, 2) == [3, 5, 7] range(3, 0, -1) == [3, 2, 1]
参数
| 参数 | 说明 |
|---|---|
start_or_stop
|
必需 如果提供了 stop,则为 start 元素的值;否则为 stop 的值,实际的 start 为 0 |
stop_or_none
|
int; or None;
default = None可选的第一个不包含在结果列表中的项的索引;列表的生成会在达到 stop 之前停止。 |
step
|
default = 1 增量(默认值为 1)。可能为负值。 |
register_execution_platforms()
None register_execution_platforms(*platform_labels)
参数
| 参数 | 说明 |
|---|---|
platform_labels
|
sequence of strings;
必需要注册的平台的标签。 |
register_execution_platforms(dev_dependency)
None register_execution_platforms(dev_dependency=False, *platform_labels)
@ 或 // 开头)。如需了解详情,请参阅工具链解析。
参数
| 参数 | 说明 |
|---|---|
dev_dependency
|
default = False 如果为 true,则当当前模块不是根模块或启用了 `--ignore_dev_dependency` 时,不会注册执行平台。 |
platform_labels
|
sequence of strings;
必需要注册的平台的标签。 |
register_toolchains()
None register_toolchains(*toolchain_labels)
参数
| 参数 | 说明 |
|---|---|
toolchain_labels
|
sequence of strings;
必需要注册的工具链的标签。 |
register_toolchains(dev_dependency)
None register_toolchains(dev_dependency=False, *toolchain_labels)
@ 或 // 开头)。如需了解详情,请参阅工具链解析。
参数
| 参数 | 说明 |
|---|---|
dev_dependency
|
default = False 如果为 true,则当当前模块不是根模块或启用了 `--ignore_dev_dependency` 时,不会注册工具链。 |
toolchain_labels
|
sequence of strings;
必需要注册的工具链的标签。 |
repository_rule
callable repository_rule(implementation, *, attrs=None, local=False, environ=[], configure=False, remotable=False, doc='')
参数
| 参数 | 说明 |
|---|---|
implementation
|
必需 实现此规则的函数。必须具有单个形参 repository_ctx。在加载阶段,系统会针对规则的每个实例调用该函数。
|
attrs
|
dict; or None;
默认值 = None用于声明规则的所有属性的字典。它从属性名称映射到属性对象(请参阅 attr 模块)。以 _ 开头的属性是私有属性,可用于向文件添加对标签的隐式依赖项(存储库规则不能依赖于生成的制品)。系统会隐式添加属性 name,因此不得指定该属性。
|
local
|
default = False 表示此规则从本地系统提取所有内容,并且应在每次提取时重新评估。 |
environ
|
sequence of strings;
default = []提供此代码库规则所依赖的环境变量列表。如果该列表中的环境变量发生变化,系统将重新提取相应代码库。 |
configure
|
default = False 指示代码库是否出于配置目的检查系统 |
remotable
|
default = False 实验性。此参数目前处于实验阶段,随时可能发生变化。请勿依赖此功能。可通过设置 ---experimental_repo_remote_exec 启用此功能(实验性) |
doc
|
default = '' 可由文档生成工具提取的库规则说明。 |
repr
string repr(x)
repr("ab") == '"ab"'参数
| 参数 | 说明 |
|---|---|
x
|
必需 要转换的对象。 |
reversed
list reversed(sequence)
reversed([3, 5, 4]) == [4, 5, 3]
参数
| 参数 | 说明 |
|---|---|
sequence
|
必需 要反转的可迭代序列(例如列表)。 |
规则
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='', *, provides=[], exec_compatible_with=[], analysis_test=False, build_setting=None, cfg=None, exec_groups=None, compile_one_filetype=None, name=None)
规则必须分配给 .bzl 文件中的全局变量;全局变量的名称就是规则的名称。
测试规则的名称必须以 _test 结尾,而所有其他规则的名称都不得包含此后缀。(此限制仅适用于规则,而不适用于规则的目标。)
参数
| 参数 | 说明 |
|---|---|
implementation
|
必需 实现相应规则的 Starlark 函数,必须只有一个参数:ctx。在分析阶段,系统会针对规则的每个实例调用该函数。它可以访问用户提供的属性。它必须创建操作来生成所有已声明的输出。 |
test
|
default = False 此规则是否为测试规则,即是否可作为 blaze test 命令的主题。所有测试规则都会自动被视为可执行;无需(也不建议)为测试规则明确设置 executable = True。如需了解详情,请参阅 “规则”页面。
|
attrs
|
dict; or None;
默认值 = None用于声明规则的所有属性的字典。它从属性名称映射到属性对象(请参阅 attr 模块)。以 _ 开头的属性是私有属性,可用于添加对标签的隐式依赖项。系统会隐式添加属性 name,因此不得指定该属性。系统会隐式添加属性 visibility、deprecation、tags、testonly 和 features,并且这些属性无法被替换。大多数规则只需要少量属性。为了限制内存使用量,规则函数对属性的大小施加了上限。
|
outputs
|
dict; or None; or function;
default = None已弃用。此参数已被弃用,很快就会被移除。请勿依赖此功能。它已通过 ---incompatible_no_rule_outputs_param 停用。使用此标志可验证您的代码与即将进行的移除操作兼容。此参数已被弃用。请迁移规则,改用 OutputGroupInfo 或 attr.output。用于定义预先声明的输出的架构。与 此实参的值可以是字典,也可以是生成字典的回调函数。回调的工作方式与计算出的依赖属性类似:系统会将函数的形参名称与规则的属性进行匹配,因此,举例来说,如果您传递定义为 字典中的每个条目都会创建一个预先声明的输出,其中键是标识符,值是用于确定输出标签的字符串模板。在规则的实现函数中,标识符会成为用于在
在实践中,最常见的替换占位符是 |
executable
|
default = False 相应规则是否被视为可执行,即是否可作为 blaze run 命令的主题。如需了解详情,请参阅 “规则”页面。
|
output_to_genfiles
|
default = False 如果为 true,则文件将生成在 genfiles 目录中,而不是 bin 目录中。除非您需要此标志来与现有规则兼容(例如,在为 C++ 生成头文件时),否则请勿设置此标志。 |
fragments
|
sequence of strings;
default = []规则在目标配置中所需的配置 fragment 的名称列表。 |
host_fragments
|
sequence of strings;
default = []规则在主机配置中所需的配置 fragment 的名称列表。 |
_skylark_testable
|
default = False (实验性) 如果为 true,此规则将通过 Actions 提供程序公开其操作,以供依赖于它的规则检查。通过调用 ctx.created_actions(),规则本身也可以使用提供程序。 这仅应用于测试 Starlark 规则的分析时行为。此标志可能会在未来版本中移除。 |
toolchains
|
sequence;
default = []如果已设置,则表示此规则所需的工具链集。该列表可以包含 String、Label 或 StarlarkToolchainTypeApi 对象,并且可以包含任意组合。通过检查当前平台来查找 Toolchain,并通过 ctx.toolchain 提供给规则实现。
|
incompatible_use_toolchain_transition
|
default = False 已弃用,此参数不再使用,应移除。 |
doc
|
default = '' 可由文档生成工具提取的规则说明。 |
provides
|
default = [] 实现函数必须返回的提供程序列表。 如果实现函数从其返回值中省略了此处列出的任何类型的提供程序,则会出错。不过,实现函数可能会返回此处未列出的其他提供程序。 列表中的每个元素都是 |
exec_compatible_with
|
sequence of strings;
default = []适用于相应规则类型的所有目标的执行平台限制条件列表。 |
analysis_test
|
default = False 如果为 true,则将此规则视为分析测试。 注意:分析测试规则主要使用核心 Starlark 库中提供的基础架构进行定义。如需指导,请参阅测试。 如果规则定义为分析测试规则,则允许在其属性上使用通过 analysis_test_transition 定义的配置转换,但会选择加入一些限制:
|
build_setting
|
BuildSetting; or None;
默认值 = None如果已设置,则描述相应规则属于哪种 build setting。请参阅 config 模块。如果设置了此属性,系统会自动向相应规则添加名为“build_setting_default”的必需属性,其类型与此处传入的值相对应。
|
cfg
|
default = None 如果设置,则指向规则在分析之前将应用于其自身配置的配置转换。 |
exec_groups
|
dict; or None;
default = None执行组名称(字符串)与 exec_group 的字典。如果设置,则允许规则在单个目标中的多个执行平台上运行操作。如需了解详情,请参阅执行组文档。
|
compile_one_filetype
|
sequence of strings; or None;
default = NoneUsed by --compile_one_dependency: if multiple rules consume the specified file, should we choose this rule over others. |
name
|
string; or None;
default = None已弃用。此参数已被弃用,很快就会被移除。请勿依赖此功能。它已通过 --+incompatible_remove_rule_name_parameter 停用。使用此标志可验证您的代码与即将进行的移除操作兼容。已弃用:请勿使用。 此规则的名称,Bazel 会识别此名称,并在日志记录、 如果省略此参数,则规则的名称将设置为在声明规则的 .bzl 模块中绑定到该规则的第一个 Starlark 全局变量的名称。因此,如果名称为 为规则指定明确的名称不会改变允许您实例化规则的位置。 |
选择
unknown select(x, no_match_error='')
select() 是一个辅助函数,用于使规则属性可配置。如需了解详情,请参阅构建百科全书。
参数
| 参数 | 说明 |
|---|---|
x
|
必需 将配置条件映射到值的字典。每个键都是一个用于标识 config_setting 或 constraint_value 实例的标签或标签字符串。如需了解何时使用 Label 而不是字符串,请参阅有关宏的文档。 |
no_match_error
|
default = '' 如果没有任何条件匹配,则报告的可选自定义错误。 |
single_version_override
None single_version_override(module_name, version='', registry='', patches=[], patch_cmds=[], patch_strip=0)
参数
| 参数 | 说明 |
|---|---|
module_name
|
必需 要应用此替换项的 Bazel 模块依赖项的名称。 |
version
|
default = '' 替换依赖关系图中此模块的声明版本。换句话说,相应模块将“固定”到此替换版本。如果只想替换注册表或补丁,则可以忽略此属性。 |
registry
|
default = '' 替换相应模块的注册表;不从默认注册表列表中查找相应模块,而应使用给定的注册表。 |
patches
|
Iterable of strings;
default = []指向要为此模块应用的补丁文件的标签列表。补丁文件必须存在于顶级项目的源代码树中。它们会按列表顺序应用。 |
patch_cmds
|
Iterable of strings;
default = []在应用补丁后,要在 Linux/Macos 上应用的一系列 Bash 命令。 |
patch_strip
|
default = 0 与 Unix patch 的 --strip 实参相同。 |
已排序
list sorted(iterable, *, key=None, reverse=False)
sorted([3, 5, 4]) == [3, 4, 5]
参数
| 参数 | 说明 |
|---|---|
iterable
|
必需 要排序的可迭代序列。 |
key
|
default = None 一种可选函数,在比较之前应用于每个元素。 |
reverse
|
default = False 按降序返回结果。 |
str
string str(x)
str("ab") == "ab"
str(8) == "8"参数
| 参数 | 说明 |
|---|---|
x
|
必需 要转换的对象。 |
tag_class
tag_class tag_class(attrs={}, *, doc='')
参数
| 参数 | 说明 |
|---|---|
attrs
|
default = {} 用于声明相应标记类的所有属性的字典。它从属性名称映射到属性对象(请参阅 attr 模块)。 |
doc
|
default = '' 可由文档生成工具提取的标记类的说明。 |
tuple
tuple tuple(x=())
tuple([1, 2]) == (1, 2)
tuple((2, 3, 2)) == (2, 3, 2)
tuple({5: "a", 2: "b", 4: "c"}) == (5, 2, 4)参数
| 参数 | 说明 |
|---|---|
x
|
default = () 要转换的对象。 |
类型
string type(x)
type(2) == "int" type([1]) == "list" type(struct(a = 2)) == "struct"
if type(x) == type([]): # if x is a list
参数
| 参数 | 说明 |
|---|---|
x
|
必需参数 要检查类型的对象。 |
use_extension
module_extension_proxy use_extension(extension_bzl_file, extension_name, *, dev_dependency=False, isolate=False)
参数
| 参数 | 说明 |
|---|---|
extension_bzl_file
|
必需 定义模块扩展程序的 Starlark 文件的标签。 |
extension_name
|
必需 要使用的模块扩展程序的名称。具有此名称的符号必须由 Starlark 文件导出。 |
dev_dependency
|
default = False 如果为 true,则当当前模块不是根模块或启用了 `--ignore_dev_dependency` 时,系统会忽略此模块扩展的用法。 |
isolate
|
default = False 实验性。此参数目前处于实验阶段,随时可能发生变化。请勿依赖此功能。可以通过设置 ---experimental_isolated_extension_usages 以实验性方式启用。如果为 true,则此模块扩展的使用将与此模块和其他模块中的所有其他使用隔离。为此使用场景创建的代码不会影响其他使用场景,并且扩展程序为此使用场景生成的代码库将不同于扩展程序生成的其他所有代码库。 此参数目前处于实验阶段,仅在设置了 |
use_repo
None use_repo(extension_proxy, *args, **kwargs)
参数
| 参数 | 说明 |
|---|---|
extension_proxy
|
必需 由 use_extension 调用返回的模块扩展代理对象。
|
args
|
必需 要导入的代码库的名称。 |
kwargs
|
必需 指定要以不同名称导入到当前模块范围内的特定代码库。键应为要在当前作用域中使用的名称,而值应为模块扩展程序导出的原始名称。 |
visibility
None visibility(value)
设置当前正在初始化的 .bzl 模块的加载可见性。
模块的加载可见性决定了其他 BUILD 文件和 .bzl 文件是否可以加载该模块。(这与底层 .bzl 源文件的目标可见性不同,后者决定了该文件是否可以作为其他目标的依赖项出现。)加载可见性在软件包级别起作用:要加载模块,执行加载的文件必须位于已获得模块可见性的软件包中。无论模块的可见性如何,始终可以在其自己的软件包中加载该模块。
每个 .bzl 文件只能调用一次 visibility(),并且只能在顶层调用,不能在函数内调用。首选样式是将此调用放在 load() 语句和确定实参所需的任何简短逻辑之后。
如果标志 --check_bzl_visibility 设置为 false,加载可见性违规行为将发出警告,但不会导致 build 失败。
参数
| 参数 | 说明 |
|---|---|
value
|
必需 软件包规范字符串的列表或单个软件包规范字符串。 软件包规范的格式与
不允许使用“@”语法;所有规范都相对于当前模块的代码库进行解读。 如果 请注意,标志 |
工作区
None workspace(name)
此函数只能在 WORKSPACE 文件中使用,并且必须在 WORKSPACE 文件中的所有其他函数之前声明。每个 WORKSPACE 文件都应有一个 workspace 函数。
设置相应工作区的名称。工作区名称应采用 Java 软件包风格的项目说明,使用下划线作为分隔符,例如,github.com/bazelbuild/bazel 应使用 com_github_bazelbuild_bazel。
此名称用于存储代码库运行时文件的目录。例如,如果本地代码库中有一个 runfile foo/bar,并且 WORKSPACE 文件包含 workspace(name = 'baz'),则该 runfile 将在 mytarget.runfiles/baz/foo/bar 下可用。如果未指定工作区名称,则 runfile 将符号链接到 bar.runfiles/foo/bar。
远程代码库规则名称必须是有效的工作区名称。例如,您可以有 maven_jar(name = 'foo'),但不能有 maven_jar(name = 'foo%bar'),因为 Bazel 会尝试为包含 workspace(name = 'foo%bar') 的 maven_jar 写入 WORKSPACE 文件。
参数
| 参数 | 说明 |
|---|---|
name
|
必需 工作区的名称。名称必须以字母开头,并且只能包含字母、数字、下划线、短划线和点。 |
zip
list zip(*args)
tuple 的 list,其中第 i 个元组包含每个实参序列或可迭代对象的第 i 个元素。该列表的大小与最短输入相同。如果只有一个可迭代实参,则返回一个包含 1 元组的列表。如果不带任何实参,则返回一个空列表。示例:zip() # == [] zip([1, 2]) # == [(1,), (2,)] zip([1, 2], [3, 4]) # == [(1, 3), (2, 4)] zip([1, 2], [3, 4, 5]) # == [(1, 3), (2, 4)]
参数
| 参数 | 说明 |
|---|---|
args
|
要压缩的必需列表。 |