blob: efcebdc44a9d2b292ab56344dd3a601d4dd2a172 [file] [log] [blame]
def _node_image_impl(ctx):
img_file = ctx.actions.declare_file(ctx.label.name + ".img")
ctx.actions.run(
mnemonic = "MkImage",
executable = ctx.executable._mkimage,
arguments = [
"-efi",
ctx.file.kernel.path,
"-system",
ctx.file.system.path,
"-out",
img_file.path,
],
inputs = [
ctx.file.kernel,
ctx.file.system,
],
outputs = [img_file],
)
return [DefaultInfo(files = depset([img_file]), runfiles = ctx.runfiles(files = [img_file]))]
node_image = rule(
implementation = _node_image_impl,
doc = """
Build a disk image from an EFI kernel payload and system partition
contents. See //metropolis/node/build/mkimage for more information.
""",
attrs = {
"kernel": attr.label(
doc = "EFI binary containing a kernel.",
mandatory = True,
allow_single_file = True,
),
"system": attr.label(
doc = "Contents of the system partition.",
mandatory = True,
allow_single_file = True,
),
"_mkimage": attr.label(
doc = "The mkimage executable.",
default = "//metropolis/node/build/mkimage",
allow_single_file = True,
executable = True,
cfg = "exec",
),
},
)