diff --git a/BUILD b/BUILD index bc608fb..ff8f40e 100644 --- a/BUILD +++ b/BUILD @@ -1,5 +1,7 @@ load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library") load("//src/undocker:rules.bzl", "rootfs") +load("@io_bazel_rules_docker//container:container.bzl", "container_bundle", +) go_library( name = "go_default_library", @@ -18,3 +20,14 @@ go_binary( embed = [":go_default_library"], visibility = ["//visibility:public"], ) + +container_bundle( + name="alpine", + images={"base": "@alpine//image"}, +) + +rootfs( + name="alpine-rootfs1", + src=":alpine.tar", + output="alpine-rootfs.tar", +) diff --git a/rules.bzl b/rules.bzl index bc48244..539ad51 100644 --- a/rules.bzl +++ b/rules.bzl @@ -1,22 +1,27 @@ def _rootfs_impl(ctx): + output = ctx.outputs.output ctx.actions.run( - executable = ctx.files._undocker, + outputs = [output], + executable = ctx.files._undocker[0], arguments = [ - ctx.attr.src, - ctx.output, + ctx.attr.src.path, + output.path, ], ) rootfs = rule( doc = "Generate a rootfs from a docker container image", implementation = _rootfs_impl, + outputs = { + "out": "%{name}.tar", + }, attrs = { "src": attr.label( doc = "Input container tarball", mandatory = True, allow_single_file = [".tar"], ), - "out": attr.output( + "output": attr.output( doc = "Output rootfs tarball", mandatory = True, ),