过渡

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

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

会员

过渡

transition transition(implementation, inputs, outputs)

这种转换会读取一组输入构建设置并写入一组输出构建设置。

示例:

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 参数是一个字典,其键集由输入参数定义。因此,对于每个构建设置 --//foo=bar,如果 inputs 包含 //foosettings 将具有一个条目 settings['//foo']='bar'

attr 参数是对 ctx.attr 的引用。这使得实现函数可以访问规则的属性,以实现属性化参数化过渡。

此函数必须从 build 设置标识符返回一个 dict 到 build 设置值;这代表配置转换:对于返回的 dict 中的每个条目,该过渡都会将相应设置更新为新值。其他所有设置保持不变。如果拆分转换,此函数还可以返回 dictlistdictdict

inputs sequence of strings;必需
此过渡可读取的构建设置的列表。这将成为实现函数参数的 settings 参数的键集。
outputs sequence of strings;必需
此过渡可写入的构建设置的列表。它必须是此转换返回的字典键集的超集。