blob: ff81abe08be9743cca8c04e0b0c77cd1047de42b [file] [log] [blame]
Tim Windelschmidt79ffbbe2024-02-22 19:15:51 +01001load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library")
Jan Schär06341a62025-07-09 08:02:35 +00002load("//build/binary_tarball:def.bzl", "binary_tarball")
Lorenz Brune08c1602025-06-17 19:19:33 +02003load("//osbase/build/genproductinfo:defs.bzl", "product_info")
Tim Windelschmidtbed76d92025-02-18 03:04:14 +01004load("//osbase/build/mkcpio:def.bzl", "node_initramfs")
Tim Windelschmidt79ffbbe2024-02-22 19:15:51 +01005
6go_library(
7 name = "takeover_lib",
8 srcs = ["takeover.go"],
9 embedsrcs = [
10 "//third_party/linux", #keep
Tim Windelschmidt65bf3112024-04-08 21:32:14 +020011 "//third_party:ucode", #keep
Tim Windelschmidt79ffbbe2024-02-22 19:15:51 +010012 ":initramfs", #keep
13 ],
14 importpath = "source.monogon.dev/cloud/agent/takeover",
15 visibility = ["//visibility:private"],
16 deps = [
17 "//cloud/agent/api",
Tim Windelschmidt9f21f532024-05-07 15:14:20 +020018 "//osbase/bootparam",
19 "//osbase/kexec",
Tim Windelschmidt10ef8f92024-08-13 15:35:10 +020020 "//osbase/net/dump",
21 "//osbase/net/proto",
Tim Windelschmidt79ffbbe2024-02-22 19:15:51 +010022 "@com_github_cavaliergopher_cpio//:cpio",
23 "@com_github_klauspost_compress//zstd",
24 "@org_golang_google_protobuf//proto",
25 "@org_golang_x_sys//unix",
26 ],
27)
28
Tim Windelschmidt681d5152025-01-08 00:19:33 +010029go_binary(
Tim Windelschmidt681d5152025-01-08 00:19:33 +010030 name = "takeover",
Jan Schär2b9a0a02025-07-09 07:54:12 +000031 embed = [":takeover_lib"],
Tim Windelschmidt681d5152025-01-08 00:19:33 +010032 visibility = ["//visibility:public"],
33)
34
Jan Schär06341a62025-07-09 08:02:35 +000035binary_tarball(
Tim Windelschmidt681d5152025-01-08 00:19:33 +010036 name = "takeover_layer",
Jan Schär2b9a0a02025-07-09 07:54:12 +000037 executable = ":takeover",
Tim Windelschmidt681d5152025-01-08 00:19:33 +010038 visibility = ["//visibility:public"],
39)
40
Lorenz Brune08c1602025-06-17 19:19:33 +020041product_info(
42 name = "product_info",
43 os_id = "monogon-cloud-agent",
44 os_name = "Monogon Cloud Agent",
45 out_os_release = ":product_info_os_release",
46 stamp_var = "STABLE_MONOGON_cloud_version",
47)
48
Tim Windelschmidt79ffbbe2024-02-22 19:15:51 +010049node_initramfs(
50 name = "initramfs",
51 files = {
Tim Windelschmidt24bf6fd2025-02-12 04:48:24 +010052 "/init": "//cloud/agent:agent",
53 "/etc/resolv.conf": "//osbase/net/dns:resolv.conf",
54 "/etc/ssl/cert.pem": "@cacerts//file",
Lorenz Brune08c1602025-06-17 19:19:33 +020055 "/etc/product-info.json": ":product_info",
Tim Windelschmidt79ffbbe2024-02-22 19:15:51 +010056 },
57 fsspecs = [
Tim Windelschmidtc2290c22024-08-15 19:56:00 +020058 "//osbase/build:earlydev.fsspec",
Tim Windelschmidt65bf3112024-04-08 21:32:14 +020059 "//third_party:firmware",
Tim Windelschmidt79ffbbe2024-02-22 19:15:51 +010060 ],
61 visibility = ["//cloud/agent:__subpackages__"],
62)