summaryrefslogtreecommitdiffhomepage
path: root/runsc/BUILD
diff options
context:
space:
mode:
Diffstat (limited to 'runsc/BUILD')
-rw-r--r--runsc/BUILD123
1 files changed, 123 insertions, 0 deletions
diff --git a/runsc/BUILD b/runsc/BUILD
new file mode 100644
index 000000000..757f6d44c
--- /dev/null
+++ b/runsc/BUILD
@@ -0,0 +1,123 @@
+load("//tools:defs.bzl", "go_binary", "pkg_deb", "pkg_tar")
+
+package(licenses = ["notice"])
+
+go_binary(
+ name = "runsc",
+ srcs = [
+ "main.go",
+ "version.go",
+ ],
+ pure = True,
+ visibility = [
+ "//visibility:public",
+ ],
+ x_defs = {"main.version": "{STABLE_VERSION}"},
+ deps = [
+ "//pkg/log",
+ "//pkg/refs",
+ "//pkg/sentry/platform",
+ "//runsc/boot",
+ "//runsc/cmd",
+ "//runsc/flag",
+ "//runsc/specutils",
+ "@com_github_google_subcommands//:go_default_library",
+ ],
+)
+
+# The runsc-race target is a race-compatible BUILD target. This must be built
+# via: bazel build --features=race :runsc-race
+#
+# This is neccessary because the race feature must apply to all dependencies
+# due a bug in gazelle file selection. The pure attribute must be off because
+# the race detector requires linking with non-Go components, although we still
+# require a static binary.
+#
+# Note that in the future this might be convertible to a compatible target by
+# using the pure and static attributes within a select function, but select is
+# not currently compatible with string attributes [1].
+#
+# [1] https://github.com/bazelbuild/bazel/issues/1698
+go_binary(
+ name = "runsc-race",
+ srcs = [
+ "main.go",
+ "version.go",
+ ],
+ static = True,
+ visibility = [
+ "//visibility:public",
+ ],
+ x_defs = {"main.version": "{STABLE_VERSION}"},
+ deps = [
+ "//pkg/log",
+ "//pkg/refs",
+ "//pkg/sentry/platform",
+ "//runsc/boot",
+ "//runsc/cmd",
+ "//runsc/flag",
+ "//runsc/specutils",
+ "@com_github_google_subcommands//:go_default_library",
+ ],
+)
+
+pkg_tar(
+ name = "runsc-bin",
+ srcs = [":runsc"],
+ mode = "0755",
+ package_dir = "/usr/bin",
+ strip_prefix = "/runsc/linux_amd64_pure_stripped",
+)
+
+pkg_tar(
+ name = "debian-data",
+ extension = "tar.gz",
+ deps = [
+ ":runsc-bin",
+ ],
+)
+
+genrule(
+ name = "deb-version",
+ # Note that runsc must appear in the srcs parameter and not the tools
+ # parameter, otherwise it will not be stamped. This is reasonable, as tools
+ # may be encoded differently in the build graph (cached more aggressively
+ # because they are assumes to be hermetic).
+ srcs = [":runsc"],
+ outs = ["version.txt"],
+ # Note that the little dance here is necessary because files in the $(SRCS)
+ # attribute are not executable by default, and we can't touch in place.
+ cmd = "cp $(location :runsc) $(@D)/runsc && \
+ chmod a+x $(@D)/runsc && \
+ $(@D)/runsc -version | grep version | sed 's/^[^0-9]*//' > $@ && \
+ rm -f $(@D)/runsc",
+ stamp = 1,
+)
+
+pkg_deb(
+ name = "runsc-debian",
+ architecture = "amd64",
+ data = ":debian-data",
+ # Note that the description_file will be flatten (all newlines removed),
+ # and therefore it is kept to a simple one-line description. The expected
+ # format for debian packages is "short summary\nLonger explanation of
+ # tool." and this is impossible with the flattening.
+ description_file = "debian/description",
+ homepage = "https://gvisor.dev/",
+ maintainer = "The gVisor Authors <gvisor-dev@googlegroups.com>",
+ package = "runsc",
+ postinst = "debian/postinst.sh",
+ version_file = ":version.txt",
+ visibility = [
+ "//visibility:public",
+ ],
+)
+
+sh_test(
+ name = "version_test",
+ size = "small",
+ srcs = ["version_test.sh"],
+ args = ["$(location :runsc)"],
+ data = [":runsc"],
+ tags = ["noguitar"],
+)