summaryrefslogtreecommitdiffhomepage
path: root/runsc/BUILD
blob: 5e7dacb87aa0eb47f268838d43e1778166879661 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
package(licenses = ["notice"])  # Apache 2.0

load("@io_bazel_rules_go//go:def.bzl", "go_binary")
load("@bazel_tools//tools/build_defs/pkg:pkg.bzl", "pkg_deb", "pkg_tar")

go_binary(
    name = "runsc",
    srcs = [
        "main.go",
        "version.go",
    ],
    pure = "on",
    visibility = [
        "//visibility:public",
    ],
    x_defs = {"main.version": "{STABLE_VERSION}"},
    deps = [
        "//pkg/log",
        "//pkg/refs",
        "//pkg/sentry/platform",
        "//runsc/boot",
        "//runsc/cmd",
        "//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:runsc-race", since 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 = "on",
    visibility = [
        "//visibility:public",
    ],
    x_defs = {"main.version": "{STABLE_VERSION}"},
    deps = [
        "//pkg/log",
        "//pkg/refs",
        "//pkg/sentry/platform",
        "//runsc/boot",
        "//runsc/cmd",
        "//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",
    outs = ["version.txt"],
    cmd = "$(location :runsc) -version | grep 'runsc version' | sed 's/^[^0-9]*//' > $@",
    stamp = 1,
    tools = [":runsc"],
)

pkg_deb(
    name = "runsc-debian",
    architecture = "amd64",
    data = ":debian-data",
    description_file = "debian/description",
    homepage = "https://gvisor.dev/",
    maintainer = "The gVisor Authors <gvisor-dev@googlegroups.com>",
    package = "runsc",
    postinst = "debian/postinst.sh",
    tags = [
        # TODO(b/135475885): pkg_deb requires python2:
        # https://github.com/bazelbuild/bazel/issues/8443
        "manual",
    ],
    version_file = ":version.txt",
    visibility = [
        "//visibility:public",
    ],
)

sh_test(
    name = "version_test",
    size = "small",
    srcs = ["version_test.sh"],
    data = [":runsc"],
)