load("//tools:defs.bzl", "go_library", "go_test")

package(licenses = ["notice"])

go_library(
    name = "boot",
    srcs = [
        "compat.go",
        "compat_amd64.go",
        "compat_arm64.go",
        "controller.go",
        "debug.go",
        "events.go",
        "fs.go",
        "limits.go",
        "loader.go",
        "network.go",
        "strace.go",
        "vfs.go",
    ],
    visibility = [
        "//pkg/test:__subpackages__",
        "//runsc:__subpackages__",
        "//test:__subpackages__",
    ],
    deps = [
        "//pkg/abi",
        "//pkg/abi/linux",
        "//pkg/bpf",
        "//pkg/cleanup",
        "//pkg/context",
        "//pkg/control/server",
        "//pkg/cpuid",
        "//pkg/eventchannel",
        "//pkg/fd",
        "//pkg/fspath",
        "//pkg/log",
        "//pkg/memutil",
        "//pkg/rand",
        "//pkg/refs",
        "//pkg/sentry/arch",
        "//pkg/sentry/arch:registers_go_proto",
        "//pkg/sentry/control",
        "//pkg/sentry/devices/memdev",
        "//pkg/sentry/devices/ttydev",
        "//pkg/sentry/devices/tundev",
        "//pkg/sentry/fdimport",
        "//pkg/sentry/fs",
        "//pkg/sentry/fs/dev",
        "//pkg/sentry/fs/gofer",
        "//pkg/sentry/fs/host",
        "//pkg/sentry/fs/proc",
        "//pkg/sentry/fs/ramfs",
        "//pkg/sentry/fs/sys",
        "//pkg/sentry/fs/tmpfs",
        "//pkg/sentry/fs/tty",
        "//pkg/sentry/fs/user",
        "//pkg/sentry/fsimpl/devpts",
        "//pkg/sentry/fsimpl/devtmpfs",
        "//pkg/sentry/fsimpl/fuse",
        "//pkg/sentry/fsimpl/gofer",
        "//pkg/sentry/fsimpl/host",
        "//pkg/sentry/fsimpl/overlay",
        "//pkg/sentry/fsimpl/proc",
        "//pkg/sentry/fsimpl/sys",
        "//pkg/sentry/fsimpl/tmpfs",
        "//pkg/sentry/inet",
        "//pkg/sentry/kernel",
        "//pkg/sentry/kernel:uncaught_signal_go_proto",
        "//pkg/sentry/kernel/auth",
        "//pkg/sentry/limits",
        "//pkg/sentry/loader",
        "//pkg/sentry/pgalloc",
        "//pkg/sentry/platform",
        "//pkg/sentry/sighandling",
        "//pkg/sentry/socket/hostinet",
        "//pkg/sentry/socket/netlink",
        "//pkg/sentry/socket/netlink/route",
        "//pkg/sentry/socket/netlink/uevent",
        "//pkg/sentry/socket/netstack",
        "//pkg/sentry/socket/unix",
        "//pkg/sentry/state",
        "//pkg/sentry/strace",
        "//pkg/sentry/syscalls/linux/vfs2",
        "//pkg/sentry/time",
        "//pkg/sentry/unimpl:unimplemented_syscall_go_proto",
        "//pkg/sentry/usage",
        "//pkg/sentry/vfs",
        "//pkg/sentry/watchdog",
        "//pkg/sync",
        "//pkg/syserror",
        "//pkg/tcpip",
        "//pkg/tcpip/link/fdbased",
        "//pkg/tcpip/link/loopback",
        "//pkg/tcpip/link/packetsocket",
        "//pkg/tcpip/link/qdisc/fifo",
        "//pkg/tcpip/link/sniffer",
        "//pkg/tcpip/network/arp",
        "//pkg/tcpip/network/ipv4",
        "//pkg/tcpip/network/ipv6",
        "//pkg/tcpip/stack",
        "//pkg/tcpip/transport/icmp",
        "//pkg/tcpip/transport/raw",
        "//pkg/tcpip/transport/tcp",
        "//pkg/tcpip/transport/udp",
        "//pkg/urpc",
        "//runsc/boot/filter",
        "//runsc/boot/platforms",
        "//runsc/boot/pprof",
        "//runsc/config",
        "//runsc/specutils",
        "//runsc/specutils/seccomp",
        "@com_github_golang_protobuf//proto:go_default_library",
        "@com_github_opencontainers_runtime_spec//specs-go:go_default_library",
        "@org_golang_x_sys//unix:go_default_library",
    ],
)

go_test(
    name = "boot_test",
    size = "small",
    srcs = [
        "compat_test.go",
        "fs_test.go",
        "loader_test.go",
    ],
    library = ":boot",
    deps = [
        "//pkg/control/server",
        "//pkg/fd",
        "//pkg/fspath",
        "//pkg/log",
        "//pkg/p9",
        "//pkg/sentry/contexttest",
        "//pkg/sentry/fs",
        "//pkg/sentry/vfs",
        "//pkg/sync",
        "//pkg/unet",
        "//runsc/config",
        "//runsc/fsgofer",
        "@com_github_opencontainers_runtime_spec//specs-go:go_default_library",
        "@org_golang_x_sys//unix:go_default_library",
    ],
)