prysm-pulse/tools/multi_arch.bzl

31 lines
970 B
Python
Raw Permalink Normal View History

"a rule transitioning an oci_image to multiple platforms"
def _multiarch_transition(settings, attr):
return [
{"//command_line_option:platforms": str(platform)}
for platform in attr.platforms
]
multiarch_transition = transition(
implementation = _multiarch_transition,
inputs = [],
outputs = ["//command_line_option:platforms"],
)
# multiarch_transition impl returns a DefaultInfo provider with the image deps as declared outputs to
# build.
def _impl(ctx):
return DefaultInfo(files = depset(ctx.files.image))
# The multi_arch rule builds the image for multiple platforms defined in the platforms attribute.
multi_arch = rule(
implementation = _impl,
attrs = {
"image": attr.label(cfg = multiarch_transition),
"platforms": attr.label_list(),
"_allowlist_function_transition": attr.label(
default = "@bazel_tools//tools/allowlists/function_transition_allowlist",
),
},
)