blob: a884f6b9655e4808a340ad4302955d3bd9765bef [file] [log] [blame]
Tim Windelschmidt79ffbbe2024-02-22 19:15:51 +01001load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library")
Tim Windelschmidt79ffbbe2024-02-22 19:15:51 +01002load("//build/static_binary_tarball:def.bzl", "static_binary_tarball")
Jan Schär1b6cd6f2025-04-29 15:30:22 +00003load("//osbase/build:def.bzl", "build_static_target")
Lorenz Brune08c1602025-06-17 19:19:33 +02004load("//osbase/build/genproductinfo:defs.bzl", "product_info")
Tim Windelschmidtbed76d92025-02-18 03:04:14 +01005load("//osbase/build/mkcpio:def.bzl", "node_initramfs")
Tim Windelschmidt79ffbbe2024-02-22 19:15:51 +01006
7go_library(
8 name = "takeover_lib",
9 srcs = ["takeover.go"],
10 embedsrcs = [
11 "//third_party/linux", #keep
Tim Windelschmidt65bf3112024-04-08 21:32:14 +020012 "//third_party:ucode", #keep
Tim Windelschmidt79ffbbe2024-02-22 19:15:51 +010013 ":initramfs", #keep
14 ],
15 importpath = "source.monogon.dev/cloud/agent/takeover",
16 visibility = ["//visibility:private"],
17 deps = [
18 "//cloud/agent/api",
Tim Windelschmidt9f21f532024-05-07 15:14:20 +020019 "//osbase/bootparam",
20 "//osbase/kexec",
Tim Windelschmidt10ef8f92024-08-13 15:35:10 +020021 "//osbase/net/dump",
22 "//osbase/net/proto",
Tim Windelschmidt79ffbbe2024-02-22 19:15:51 +010023 "@com_github_cavaliergopher_cpio//:cpio",
24 "@com_github_klauspost_compress//zstd",
25 "@org_golang_google_protobuf//proto",
26 "@org_golang_x_sys//unix",
27 ],
28)
29
Tim Windelschmidt681d5152025-01-08 00:19:33 +010030go_binary(
31 name = "takeover_bin",
32 embed = [":takeover_lib"],
33 visibility = ["//visibility:private"],
34)
35
36# Used by e2e tests, forces a static build
Jan Schär1b6cd6f2025-04-29 15:30:22 +000037build_static_target(
Tim Windelschmidt681d5152025-01-08 00:19:33 +010038 name = "takeover",
Jan Schär1b6cd6f2025-04-29 15:30:22 +000039 dep = ":takeover_bin",
Tim Windelschmidt681d5152025-01-08 00:19:33 +010040 visibility = ["//visibility:public"],
41)
42
43# Used by container_images, forces a static build
44static_binary_tarball(
45 name = "takeover_layer",
46 executable = ":takeover_bin",
47 visibility = ["//visibility:public"],
48)
49
Lorenz Brune08c1602025-06-17 19:19:33 +020050product_info(
51 name = "product_info",
52 os_id = "monogon-cloud-agent",
53 os_name = "Monogon Cloud Agent",
54 out_os_release = ":product_info_os_release",
55 stamp_var = "STABLE_MONOGON_cloud_version",
56)
57
Tim Windelschmidt79ffbbe2024-02-22 19:15:51 +010058node_initramfs(
59 name = "initramfs",
60 files = {
Tim Windelschmidt24bf6fd2025-02-12 04:48:24 +010061 "/init": "//cloud/agent:agent",
62 "/etc/resolv.conf": "//osbase/net/dns:resolv.conf",
63 "/etc/ssl/cert.pem": "@cacerts//file",
Lorenz Brune08c1602025-06-17 19:19:33 +020064 "/etc/product-info.json": ":product_info",
Tim Windelschmidt79ffbbe2024-02-22 19:15:51 +010065 },
66 fsspecs = [
Tim Windelschmidtc2290c22024-08-15 19:56:00 +020067 "//osbase/build:earlydev.fsspec",
Tim Windelschmidt65bf3112024-04-08 21:32:14 +020068 "//third_party:firmware",
Tim Windelschmidt79ffbbe2024-02-22 19:15:51 +010069 ],
70 visibility = ["//cloud/agent:__subpackages__"],
71)