过渡

报告问题 查看源代码 夜间版 · 8.0 . 7.47.3 · 7.2 · 7.1 · 7.0 · 6.5

表示依赖项边缘上的配置转换。例如,如果 //package:foo 依赖于具有配置转换的 //package:bar,则这两个目标的配置将有所不同://package:bar 的转换将由 //package:foo 的转换决定,具体取决于转换对象定义的函数。

成员

过渡

transition transition(implementation, inputs, outputs)

用于读取一组输入 build 设置并写入一组输出 build 设置的转换。

示例:

def _transition_impl(settings, attr):
    # This transition just reads the current CPU value as a demonstration.
    # A real transition could incorporate this into its followup logic.
    current_cpu = settings["//command_line_option:cpu"]
    return {"//command_line_option:compilation_mode": "dbg"}

build_in_debug_mode = transition(
    implementation = _transition_impl,
    inputs = ["//command_line_option:cpu"],
    outputs = ["//command_line_option:compilation_mode"],
)

如要了解详情,请点击此处

参数

参数 说明
implementation 可调用; 必需
用于实现此转换的函数。此函数始终有两个参数:settingsattrsettings 参数是一个字典,其键集由 inputs 参数定义。因此,对于每个 build 设置 --//foo=bar,如果 inputs 包含 //foo,则 settings 将包含条目 settings['//foo']='bar'

attr 参数是对 ctx.attr 的引用。这样,实现函数便可以访问规则的属性,从而实现基于属性的参数化转换。

此函数必须返回一个 dict,用于将 build 设置标识符转换为 build 设置值;这表示配置转换:对于返回的 dict 中的每个条目,转换都会将该设置更新为新值。所有其他设置保持不变。在分屏转场的情况下,此函数还可以返回由 dict 组成的 list 或由 dict 组成的 dict

inputs 字符串序列; 必需
此转换可以读取的 build 设置的列表。这将成为实现函数参数的设置参数的键集。
outputs 字符串序列; 必需
此转换可以写入的 build 设置的列表。此集必须是此转换返回的字典的键集的超集。