Get everything building without hooking up mtls_cgo.
Co-Authored-By: Qwen3.6-35B-A3B <noreply@qwen.ai>
load("@gazelle//:def.bzl", "gazelle")
# gazelle:proto legacy
+# gazelle:map_kind go_binary go_multi_binary //bazel:go.bzl
+# gazelle:map_kind go_library go_multi_library //bazel:go.bzl
gazelle(name = "gazelle")
-load("@rules_go//go:def.bzl", "go_binary", "go_library")
+load("//bazel:go.bzl", "go_multi_binary", "go_multi_library")
-go_library(
+go_multi_library(
name = "cgo_lib",
srcs = [
"extension.h",
],
)
-go_binary(
+go_multi_binary(
name = "cgo",
embed = [":cgo_lib"],
visibility = ["//visibility:public"],
-load("@rules_go//go:def.bzl", "go_binary", "go_library")
+load("//bazel:go.bzl", "go_multi_binary", "go_multi_library")
-go_library(
+go_multi_library(
name = "client_lib",
srcs = ["main.go"],
importpath = "go.fuhry.dev/runtime/attestation/client",
deps = ["//attestation/internal/attestation"],
)
-go_binary(
+go_multi_binary(
name = "client",
embed = [":client_lib"],
visibility = ["//visibility:public"],
-load("@rules_go//go:def.bzl", "go_library")
+load("//bazel:go.bzl", "go_multi_library")
-go_library(
+go_multi_library(
name = "attestation",
srcs = [
"api.go",
-load("@rules_go//go:def.bzl", "go_binary", "go_library")
+load("//bazel:go.bzl", "go_multi_binary", "go_multi_library")
-go_library(
+go_multi_library(
name = "rpc_client_lib",
srcs = ["main.go"],
importpath = "go.fuhry.dev/runtime/attestation/rpc_client",
],
)
-go_binary(
+go_multi_binary(
name = "rpc_client",
embed = [":rpc_client_lib"],
visibility = ["//visibility:public"],
-load("@rules_go//go:def.bzl", "go_binary", "go_library")
+load("//bazel:go.bzl", "go_multi_binary", "go_multi_library")
-go_library(
+go_multi_library(
name = "rpc_server_lib",
srcs = ["main.go"],
importpath = "go.fuhry.dev/runtime/attestation/rpc_server",
],
)
-go_binary(
+go_multi_binary(
name = "rpc_server",
embed = [":rpc_server_lib"],
visibility = ["//visibility:public"],
-load("@rules_go//go:def.bzl", "go_library")
+load("//bazel:go.bzl", "go_multi_library")
-go_library(
+go_multi_library(
name = "bryston_ctl",
srcs = [
"bryston_ctl.go",
-load("@rules_go//go:def.bzl", "go_binary", "go_library")
+load("//bazel:go.bzl", "go_multi_binary", "go_multi_library")
-go_library(
+go_multi_library(
name = "cli_lib",
srcs = ["main.go"],
importpath = "go.fuhry.dev/runtime/automation/bryston_ctl/cli",
],
)
-go_binary(
+go_multi_binary(
name = "cli",
embed = [":cli_lib"],
visibility = ["//visibility:public"],
-load("@rules_go//go:def.bzl", "go_binary", "go_library")
+load("//bazel:go.bzl", "go_multi_binary", "go_multi_library")
-go_library(
+go_multi_library(
name = "client_lib",
srcs = ["main.go"],
importpath = "go.fuhry.dev/runtime/automation/bryston_ctl/client",
],
)
-go_binary(
+go_multi_binary(
name = "client",
embed = [":client_lib"],
visibility = ["//visibility:public"],
-load("@rules_go//go:def.bzl", "go_binary", "go_library")
+load("//bazel:go.bzl", "go_multi_binary", "go_multi_library")
-go_library(
+go_multi_library(
name = "server_lib",
srcs = ["main.go"],
importpath = "go.fuhry.dev/runtime/automation/bryston_ctl/server",
],
)
-go_binary(
+go_multi_binary(
name = "server",
embed = [":server_lib"],
visibility = ["//visibility:public"],
--- /dev/null
+def deepcopy(thing):
+ if type(thing) == list:
+ return [deepcopy(i) for i in thing]
+ elif type(thing) == dict:
+ return {
+ k: deepcopy(v) for k, v in thing.items()
+ }
+ elif type(thing) in [str, bool, int] or thing == None:
+ return thing
+ else:
+ return thing
def _go_cross_target(
base_target,
platform,
+ cross_lib_target,
):
+ """Create a single cross-compiled binary variant."""
go_cross_binary(
name = "{}_{}".format(base_target, platform),
platform = "@rules_go//go/toolchain:{}".format(platform),
- target = ":{}".format(base_target),
+ target = cross_lib_target,
)
def go_cross_binaries(
mac = False,
openbsd = False,
linux_arm = False,
+ linux_amd64_alpine = False,
+ cross_lib = None,
):
"""
- go_cross_binaries
+ Create cross-compiled binary variants of a base target.
+
+ For libraries that have both no_cgo and _cgo variants (like mtls),
+ cross binaries automatically use the no_cgo variant to avoid CGO issues.
Args:
- base_target: base go_binary target
- mac: generate targets for macOS
- openbsd: generate targets for OpenBSD
- linux_arm: generate targets for Linux arm64
+ base_target: base go_binary target name (without :)
+ mac: generate targets for macOS (darwin_amd64, darwin_arm64)
+ openbsd: generate target for OpenBSD amd64
+ linux_arm: generate target for Linux arm64
+ linux_amd64_alpine: generate Alpine Linux amd64 target (pure, fully_static_link)
+ cross_lib: explicit label of the cross-compiled library to use.
+ If not provided, auto-derived from base_target:
+ - If {base_target}_lib exists and has a {base_target}_lib_no_cgo variant,
+ use that
+ - Otherwise falls back to {base_target}_lib (legacy behavior)
"""
+ # Determine which library label to use for cross compilation
+ if cross_lib:
+ lib_target = cross_lib
+ else:
+ lib_target = ":" + base_target + "_lib"
+
+ def _cross(lib_label, platform):
+ _go_cross_target(base_target, platform, lib_label)
+
if mac:
for arch in ["amd64", "arm64"]:
- _go_cross_target(base_target, "darwin_{}".format(arch))
-
+ _cross(lib_target, "darwin_{}".format(arch))
+
if openbsd:
- _go_cross_target(base_target, "openbsd_amd64")
-
+ _cross(lib_target, "openbsd_amd64")
+
if linux_arm:
- _go_cross_target(base_target, "linux_arm64")
\ No newline at end of file
+ _cross(lib_target, "linux_arm64")
+
+ if linux_amd64_alpine:
+ go_cross_binary(
+ name = "{}_linux_amd64_alpine".format(base_target),
+ platform = "@rules_go//go/toolchain:linux_amd64",
+ target = lib_target,
+ features = [
+ "pure",
+ "fully_static_link",
+ ],
+ )
--- /dev/null
+load("@rules_go//go:def.bzl", "go_binary", "go_library")
+load("//bazel:copy.bzl", "deepcopy")
+
+def rewrite_deps(
+ kwargs, # type: dict[str, Any]
+ keys, # type: list[str]
+ suffix, # type: str
+): # type: dict[str, Any]
+ new_kwa = deepcopy(kwargs)
+ for k in keys:
+ if k in new_kwa:
+ new_kwa[k] = [
+ dep + suffix if (dep.startswith(":") or dep.startswith("//")) else dep
+ for dep in new_kwa[k]
+ ]
+
+ return new_kwa
+
+def go_multi_library(name, **kwargs):
+ """
+ Create a Go library target.
+
+ Args:
+ name: Library name (without : or //)
+ **kwargs: Passed to go_library. Must include srcs, importpath, deps, etc.
+
+ Creates:
+ - {name}: single library target
+ """
+ go_library(
+ name = name,
+ **kwargs,
+ )
+
+def _pkcs11_select():
+ """Return a select() expression that enables pkcs11 only on linux_amd64 host."""
+ return select({
+ "@rules_go//go/platform:linux_amd64": ["pkcs11"],
+ "//conditions:default": [],
+ })
+
+def go_multi_binary(name, **kwargs):
+ """
+ Create a Go binary target with conditional pkcs11 gotag.
+
+ pkcs11 is only enabled when the host platform is linux_amd64 (where
+ cgo + libtpm2-pkcs11 are available). On other host platforms it is
+ excluded automatically via select().
+
+ Args:
+ name: Binary name
+ **kwargs: Passed to go_binary. embed, deps, etc.
+
+ Creates:
+ - {name}: native binary with conditional pkcs11 gotag
+ """
+ native_kwargs = deepcopy(kwargs)
+ # Conditional pkcs11: only when host platform is linux_amd64
+ native_kwargs.setdefault("gotags", _pkcs11_select())
+
+ go_binary(
+ name = name,
+ **native_kwargs,
+ )
data, # type: list[str]
):
#for packager in ["deb", "archlinux", "rpm"]:
- for packager in ["archlinux"]:
+ for packager in ["archlinux", "apk", "deb"]:
_nfpm_package(name, config, data, packager)
\ No newline at end of file
-load("@rules_go//go:def.bzl", "go_binary", "go_library")
+load("//bazel:go.bzl", "go_multi_binary", "go_multi_library")
-go_library(
+go_multi_library(
name = "subst_lib",
srcs = ["main.go"],
importpath = "go.fuhry.dev/runtime/bazel/subst",
deps = ["//utils/subst"],
)
-go_binary(
+go_multi_binary(
name = "subst",
embed = [":subst_lib"],
visibility = ["//visibility:public"],
-load("@rules_go//go:def.bzl", "go_binary", "go_library")
-load("//bazel:cross.bzl", "go_cross_binaries")
+load("//bazel:go.bzl", "go_multi_binary", "go_multi_library")
load("//bazel:svc.bzl", "systemd_service")
-go_library(
+go_multi_library(
name = "apcups_exporter_lib",
srcs = ["main.go"],
importpath = "go.fuhry.dev/runtime/cmd/apcups_exporter",
],
)
-go_binary(
+go_multi_binary(
name = "apcups_exporter",
embed = [":apcups_exporter_lib"],
visibility = ["//visibility:public"],
user = "daemon",
deps = ["apcupsd.service"],
)
-
-go_cross_binaries(
- base_target = "apcups_exporter",
- linux_arm = True,
-)
-load("@rules_go//go:def.bzl", "go_binary", "go_library")
+load("//bazel:go.bzl", "go_multi_binary", "go_multi_library")
-go_library(
+go_multi_library(
name = "echo_client_lib",
srcs = ["main.go"],
importpath = "go.fuhry.dev/runtime/cmd/echo_client",
],
)
-go_binary(
+go_multi_binary(
name = "echo_client",
embed = [":echo_client_lib"],
visibility = ["//visibility:public"],
-load("@rules_go//go:def.bzl", "go_binary", "go_library")
+load("//bazel:go.bzl", "go_multi_binary", "go_multi_library")
-go_library(
+go_multi_library(
name = "echo_server_lib",
srcs = ["main.go"],
importpath = "go.fuhry.dev/runtime/cmd/echo_server",
],
)
-go_binary(
+go_multi_binary(
name = "echo_server",
embed = [":echo_server_lib"],
visibility = ["//visibility:public"],
-load("@rules_go//go:def.bzl", "go_binary", "go_library")
+load("//bazel:go.bzl", "go_multi_binary", "go_multi_library")
-go_library(
+go_multi_library(
name = "ephs_client_lib",
srcs = ["main.go"],
importpath = "go.fuhry.dev/runtime/cmd/ephs_client",
],
)
-go_binary(
+go_multi_binary(
name = "ephs_client",
embed = [":ephs_client_lib"],
visibility = ["//visibility:public"],
-load("@rules_go//go:def.bzl", "go_binary", "go_library")
+load("//bazel:go.bzl", "go_multi_binary", "go_multi_library")
-go_library(
+go_multi_library(
name = "ephs_server_lib",
srcs = ["main.go"],
importpath = "go.fuhry.dev/runtime/cmd/ephs_server",
deps = [
"//ephs/servicer",
"//grpc",
+ "//mint",
"//mtls",
"//proto/service/ephs",
"//utils/context",
],
)
-go_binary(
+go_multi_binary(
name = "ephs_server",
embed = [":ephs_server_lib"],
visibility = ["//visibility:public"],
-load("@rules_go//go:def.bzl", "go_binary", "go_library")
+load("//bazel:go.bzl", "go_multi_binary", "go_multi_library")
-go_library(
+go_multi_library(
name = "grpc_health_probe_lib",
srcs = ["main.go"],
importpath = "go.fuhry.dev/runtime/cmd/grpc_health_probe",
],
)
-go_binary(
+go_multi_binary(
name = "grpc_health_probe",
embed = [":grpc_health_probe_lib"],
visibility = ["//visibility:public"],
-load("@rules_go//go:def.bzl", "go_binary", "go_library")
+load("//bazel:go.bzl", "go_multi_binary", "go_multi_library")
load("//bazel:svc.bzl", "systemd_service")
-go_library(
+go_multi_library(
name = "http_proxy_lib",
srcs = ["main.go"],
importpath = "go.fuhry.dev/runtime/cmd/http_proxy",
],
)
-go_binary(
+go_multi_binary(
name = "http_proxy",
embed = [":http_proxy_lib"],
visibility = ["//visibility:public"],
-load("@rules_go//go:def.bzl", "go_binary", "go_library")
+load("//bazel:go.bzl", "go_multi_binary", "go_multi_library")
load("//bazel:svc.bzl", "systemd_service")
-go_library(
+go_multi_library(
name = "ldap_health_exporter_lib",
srcs = ["main.go"],
importpath = "go.fuhry.dev/runtime/cmd/ldap_health_exporter",
],
)
-go_binary(
+go_multi_binary(
name = "ldap_health_exporter",
embed = [":ldap_health_exporter_lib"],
visibility = ["//visibility:public"],
-load("@rules_go//go:def.bzl", "go_binary", "go_library")
load("//bazel:cross.bzl", "go_cross_binaries")
+load("//bazel:go.bzl", "go_multi_binary", "go_multi_library")
-go_library(
+go_multi_library(
name = "machines_agent_lib",
srcs = ["main.go"],
importpath = "go.fuhry.dev/runtime/cmd/machines_agent",
],
)
-go_binary(
+go_multi_binary(
name = "machines_agent",
embed = [":machines_agent_lib"],
visibility = ["//visibility:public"],
-load("@rules_go//go:def.bzl", "go_binary", "go_library")
+load("//bazel:go.bzl", "go_multi_binary", "go_multi_library")
-go_library(
+go_multi_library(
name = "machines_event_monitor_lib",
srcs = ["main.go"],
importpath = "go.fuhry.dev/runtime/cmd/machines_event_monitor",
],
)
-go_binary(
+go_multi_binary(
name = "machines_event_monitor",
embed = [":machines_event_monitor_lib"],
visibility = ["//visibility:public"],
-load("@rules_go//go:def.bzl", "go_binary", "go_library")
+load("//bazel:go.bzl", "go_multi_binary", "go_multi_library")
load("//bazel:svc.bzl", "systemd_dbus_service")
-go_library(
+go_multi_library(
name = "metricbus_server_lib",
srcs = ["main.go"],
importpath = "go.fuhry.dev/runtime/cmd/metricbus_server",
],
)
-go_binary(
+go_multi_binary(
name = "metricbus_server",
embed = [":metricbus_server_lib"],
visibility = ["//visibility:public"],
-load("@rules_go//go:def.bzl", "go_binary", "go_library")
+load("//bazel:go.bzl", "go_multi_binary", "go_multi_library")
-go_library(
+go_multi_library(
name = "mint_server_lib",
srcs = ["main.go"],
importpath = "go.fuhry.dev/runtime/cmd/mint_server",
],
)
-go_binary(
+go_multi_binary(
name = "mint_server",
embed = [":mint_server_lib"],
visibility = ["//visibility:public"],
-load("@rules_go//go:def.bzl", "go_binary", "go_library")
+load("//bazel:go.bzl", "go_multi_binary", "go_multi_library")
load("//bazel:svc.bzl", "systemd_service")
-go_library(
+go_multi_library(
name = "mtls_exporter_lib",
srcs = ["main.go"],
importpath = "go.fuhry.dev/runtime/cmd/mtls_exporter",
],
)
-go_binary(
+go_multi_binary(
name = "mtls_exporter",
embed = [":mtls_exporter_lib"],
visibility = ["//visibility:public"],
-load("@rules_go//go:def.bzl", "go_binary", "go_library")
+load("//bazel:go.bzl", "go_multi_binary", "go_multi_library")
-go_library(
+go_multi_library(
name = "mtls_supervisor_lib",
srcs = [
"main.go",
],
)
-go_binary(
+go_multi_binary(
name = "mtls_supervisor",
embed = [":mtls_supervisor_lib"],
visibility = ["//visibility:public"],
-load("@rules_go//go:def.bzl", "go_binary", "go_library")
+load("//bazel:go.bzl", "go_multi_binary", "go_multi_library")
-go_library(
+go_multi_library(
name = "mtls_verify_tool_lib",
srcs = ["main.go"],
importpath = "go.fuhry.dev/runtime/cmd/mtls_verify_tool",
],
)
-go_binary(
+go_multi_binary(
name = "mtls_verify_tool",
embed = [":mtls_verify_tool_lib"],
visibility = ["//visibility:public"],
-load("@rules_go//go:def.bzl", "go_binary", "go_library")
+load("//bazel:go.bzl", "go_multi_binary", "go_multi_library")
load("//bazel:svc.bzl", "systemd_service")
-go_library(
+go_multi_library(
name = "prometheus_http_discovery_lib",
srcs = ["main.go"],
importpath = "go.fuhry.dev/runtime/cmd/prometheus_http_discovery",
visibility = ["//visibility:private"],
deps = [
"//constants",
+ "//mint",
"//mtls",
"//sd",
"//utils/context",
],
)
-go_binary(
+go_multi_binary(
name = "prometheus_http_discovery",
embed = [":prometheus_http_discovery_lib"],
visibility = ["//visibility:public"],
-load("@rules_go//go:def.bzl", "go_binary", "go_library")
load("//bazel:cross.bzl", "go_cross_binaries")
+load("//bazel:go.bzl", "go_multi_binary", "go_multi_library")
-go_library(
+go_multi_library(
name = "sase_ws_proxy_client_lib",
srcs = ["main.go"],
importpath = "go.fuhry.dev/runtime/cmd/sase_ws_proxy_client",
],
)
-go_binary(
+go_multi_binary(
name = "sase_ws_proxy_client",
embed = [":sase_ws_proxy_client_lib"],
visibility = ["//visibility:public"],
-load("@rules_go//go:def.bzl", "go_binary", "go_library")
+load("//bazel:go.bzl", "go_multi_binary", "go_multi_library")
-go_library(
+go_multi_library(
name = "sase_ws_tcp_proxy_lib",
srcs = ["main.go"],
importpath = "go.fuhry.dev/runtime/cmd/sase_ws_tcp_proxy",
],
)
-go_binary(
+go_multi_binary(
name = "sase_ws_tcp_proxy",
embed = [":sase_ws_tcp_proxy_lib"],
visibility = ["//visibility:public"],
-load("@rules_go//go:def.bzl", "go_binary", "go_library")
+load("//bazel:go.bzl", "go_multi_binary", "go_multi_library")
load("//bazel:svc.bzl", "systemd_service")
-go_library(
+go_multi_library(
name = "sd_health_exporter_lib",
srcs = ["main.go"],
importpath = "go.fuhry.dev/runtime/cmd/sd_health_exporter",
],
)
-go_binary(
+go_multi_binary(
name = "sd_health_exporter",
embed = [":sd_health_exporter_lib"],
visibility = ["//visibility:public"],
-load("@rules_go//go:def.bzl", "go_binary", "go_library")
+load("//bazel:go.bzl", "go_multi_binary", "go_multi_library")
-go_library(
+go_multi_library(
name = "sd_publish_lib",
srcs = ["main.go"],
importpath = "go.fuhry.dev/runtime/cmd/sd_publish",
],
)
-go_binary(
+go_multi_binary(
name = "sd_publish",
embed = [":sd_publish_lib"],
visibility = ["//visibility:public"],
-load("@rules_go//go:def.bzl", "go_binary", "go_library")
+load("//bazel:go.bzl", "go_multi_binary", "go_multi_library")
load("//bazel:svc.bzl", "systemd_service")
-go_library(
+go_multi_library(
name = "sd_register_lib",
srcs = ["main.go"],
importpath = "go.fuhry.dev/runtime/cmd/sd_register",
],
)
-go_binary(
+go_multi_binary(
name = "sd_register",
embed = [":sd_register_lib"],
visibility = ["//visibility:public"],
-load("@rules_go//go:def.bzl", "go_binary", "go_library")
+load("//bazel:go.bzl", "go_multi_binary", "go_multi_library")
-go_library(
+go_multi_library(
name = "sd_watcher_lib",
srcs = ["main.go"],
importpath = "go.fuhry.dev/runtime/cmd/sd_watcher",
],
)
-go_binary(
+go_multi_binary(
name = "sd_watcher",
embed = [":sd_watcher_lib"],
visibility = ["//visibility:public"],
-load("@rules_go//go:def.bzl", "go_library")
+load("//bazel:go.bzl", "go_multi_library")
-go_library(
+go_multi_library(
name = "config_watcher",
srcs = [
"backend_ephs.go",
-load("@rules_go//go:def.bzl", "go_library")
+load("//bazel:go.bzl", "go_multi_library")
# Ignore this package in gazelle so constants_in.go is picked up by IDEs but not builds.
# gazelle:exclude constants_fake.go
],
)
-go_library(
+go_multi_library(
name = "constants",
srcs = ["constants.go"],
importpath = "go.fuhry.dev/runtime/constants",
-load("@rules_go//go:def.bzl", "go_binary", "go_library")
+load("//bazel:go.bzl", "go_multi_binary", "go_multi_library")
-go_library(
+go_multi_library(
name = "generate_lib",
srcs = ["main.go"],
importpath = "go.fuhry.dev/runtime/constants/generate",
visibility = ["//visibility:private"],
)
-go_binary(
+go_multi_binary(
name = "generate",
embed = [":generate_lib"],
visibility = ["//visibility:public"],
-load("@rules_go//go:def.bzl", "go_library")
+load("//bazel:go.bzl", "go_multi_library")
-go_library(
+go_multi_library(
name = "echo",
srcs = ["server.go"],
importpath = "go.fuhry.dev/runtime/echo",
-load("@rules_go//go:def.bzl", "go_library")
+load("//bazel:go.bzl", "go_multi_library")
-go_library(
+go_multi_library(
name = "ephs",
srcs = [
"client.go",
-load("@rules_go//go:def.bzl", "go_library", "go_test")
+load("@rules_go//go:def.bzl", "go_test")
+load("//bazel:go.bzl", "go_multi_library")
-go_library(
+go_multi_library(
name = "ephsll",
srcs = [
"client.go",
-load("@rules_go//go:def.bzl", "go_library", "go_test")
+load("@rules_go//go:def.bzl", "go_test")
+load("//bazel:go.bzl", "go_multi_library")
-go_library(
+go_multi_library(
name = "servicer",
srcs = [
"acl.go",
-load("@rules_go//go:def.bzl", "go_library")
+load("//bazel:go.bzl", "go_multi_library")
-go_library(
+go_multi_library(
name = "grpc",
srcs = ["imports.go"],
importpath = "go.fuhry.dev/runtime/grpc",
-load("@rules_go//go:def.bzl", "go_library")
+load("//bazel:go.bzl", "go_multi_library")
-go_library(
+go_multi_library(
name = "acl",
srcs = ["acl_yaml.go"],
importpath = "go.fuhry.dev/runtime/grpc/internal/acl",
-load("@rules_go//go:def.bzl", "go_library")
+load("//bazel:go.bzl", "go_multi_library")
package(
default_visibility = [
],
)
-go_library(
+go_multi_library(
name = "client",
srcs = [
"client.go",
-load("@rules_go//go:def.bzl", "go_library")
+load("//bazel:go.bzl", "go_multi_library")
package(
default_visibility = [
],
)
-go_library(
+go_multi_library(
name = "common",
srcs = [
"conn_base.go",
-load("@rules_go//go:def.bzl", "go_library")
+load("//bazel:go.bzl", "go_multi_library")
-go_library(
+go_multi_library(
name = "server",
srcs = [
"context.go",
-load("@rules_go//go:def.bzl", "go_library", "go_test")
+load("@rules_go//go:def.bzl", "go_test")
+load("//bazel:go.bzl", "go_multi_library")
-go_library(
+go_multi_library(
name = "http",
srcs = [
"http.go",
-load("@rules_go//go:def.bzl", "go_library")
+load("//bazel:go.bzl", "go_multi_library")
-go_library(
+go_multi_library(
name = "ldap",
srcs = [
"scraper.go",
-load("@rules_go//go:def.bzl", "go_library", "go_test")
+load("@rules_go//go:def.bzl", "go_test")
+load("//bazel:go.bzl", "go_multi_library")
-go_library(
+go_multi_library(
name = "machines",
srcs = [
"agent.go",
-load("@rules_go//go:def.bzl", "go_library")
+load("//bazel:go.bzl", "go_multi_library")
-go_library(
+go_multi_library(
name = "coredns_plugin",
srcs = [
"registry.go",
-load("@rules_go//go:def.bzl", "go_library")
+load("//bazel:go.bzl", "go_multi_library")
-go_library(
+go_multi_library(
name = "metricbus",
srcs = ["constants.go"],
importpath = "go.fuhry.dev/runtime/metrics/metricbus",
-load("@rules_go//go:def.bzl", "go_library")
+load("//bazel:go.bzl", "go_multi_library")
-go_library(
+go_multi_library(
name = "mbclient",
srcs = [
"common.go",
-load("@rules_go//go:def.bzl", "go_binary", "go_library")
+load("//bazel:go.bzl", "go_multi_binary", "go_multi_library")
-go_library(
+go_multi_library(
name = "example_lib",
srcs = ["main.go"],
importpath = "go.fuhry.dev/runtime/metrics/metricbus/mbclient/example",
],
)
-go_binary(
+go_multi_binary(
name = "example",
embed = [":example_lib"],
visibility = ["//visibility:public"],
-load("@rules_go//go:def.bzl", "go_library")
+load("//bazel:go.bzl", "go_multi_library")
-go_library(
+go_multi_library(
name = "mbserver",
srcs = [
"dbus_interface.go",
-load("@rules_go//go:def.bzl", "go_library")
+load("//bazel:go.bzl", "go_multi_library")
-go_library(
+go_multi_library(
name = "mtls",
srcs = ["stats.go"],
importpath = "go.fuhry.dev/runtime/metrics/mtls",
-load("@rules_go//go:def.bzl", "go_library")
+load("//bazel:go.bzl", "go_multi_library")
-go_library(
+go_multi_library(
name = "mint",
srcs = [
"client.go",
-load("@rules_go//go:def.bzl", "go_library")
+load("//bazel:go.bzl", "go_multi_library")
-go_library(
+go_multi_library(
name = "remote_signer",
srcs = ["remote_signer.go"],
importpath = "go.fuhry.dev/runtime/mint/remote_signer",
-load("@rules_go//go:def.bzl", "go_library", "go_test")
+load("@rules_go//go:def.bzl", "go_test")
+load("//bazel:go.bzl", "go_multi_library")
-go_library(
+go_multi_library(
name = "servicer",
srcs = [
"acl.go",
-load("@rules_go//go:def.bzl", "go_library")
+load("//bazel:go.bzl", "go_multi_library")
-go_library(
- name = "mtls",
+# No-CGO variant: excludes all CGO-gated source files.
+# Used by cross-compiled binaries where CGO is not supported.
+go_multi_library(
+ name = "mtls_no_cgo",
+ srcs = [
+ "config.go",
+ "identity.go",
+ "lazy_identity.go",
+ "provider_anonymous.go",
+ "provider_file.go",
+ "provider_interface.go",
+ "provider_shared.go",
+ "verify_names.go",
+ "verify_roots.go",
+ ],
+ embedsrcs = [
+ "configs/prod.yaml",
+ "configs/user.yaml",
+ ],
+ importpath = "go.fuhry.dev/runtime/mtls",
+ visibility = ["//visibility:public"],
+ deps = [
+ "//constants",
+ "//mtls/certutil",
+ "//mtls/fsnotify",
+ "//utils/fsutil",
+ "//utils/hashset",
+ "//utils/hostname",
+ "//utils/log",
+ "//utils/subst",
+ "@in_gopkg_yaml_v3//:yaml_v3",
+ ],
+)
+
+# CGO variant: includes all source files including platform-specific ones.
+# Used by native linux_amd64 builds (with pkcs11) and darwin builds (with keychain).
+go_multi_library(
+ name = "mtls_cgo",
srcs = [
"config.go",
"identity.go",
"verify_names.go",
"verify_roots.go",
],
- cgo = select({
- "@rules_go//go/platform:linux_amd64": True,
- "//conditions:default": False,
- }),
+ cgo = True,
embedsrcs = [
"configs/prod.yaml",
"configs/user.yaml",
"//utils/log",
"//utils/subst",
"@com_github_thalesignite_crypto11//:crypto11",
+ "@com_github_keybase_go_keychain//:go-keychain",
"@in_gopkg_yaml_v3//:yaml_v3",
- ] + select({
- "@rules_go//go/platform:darwin": [
- "//utils/stringmatch",
- "@com_github_keybase_go_keychain//:go-keychain",
- ],
- "@rules_go//go/platform:ios": [
- "//utils/stringmatch",
- "@com_github_keybase_go_keychain//:go-keychain",
- ],
- "//conditions:default": [],
+ ],
+)
+
+alias(
+ name = "mtls",
+ actual = select({
+ "@rules_go//go/platform:linux_amd64": ":mtls_cgo",
+ "@rules_go//go/platform:darwin_amd64": ":mtls_cgo",
+ "@rules_go//go/platform:darwin_arm64": ":mtls_cgo",
+ "//conditions:default": ":mtls_no_cgo",
}),
+ visibility = ["//visibility:public"],
)
-load("@rules_go//go:def.bzl", "go_library")
+load("//bazel:go.bzl", "go_multi_library")
-go_library(
+go_multi_library(
name = "certutil",
srcs = ["certutil.go"],
importpath = "go.fuhry.dev/runtime/mtls/certutil",
-load("@rules_go//go:def.bzl", "go_library", "go_test")
+load("@rules_go//go:def.bzl", "go_test")
+load("//bazel:go.bzl", "go_multi_library")
-go_library(
+go_multi_library(
name = "fsnotify",
srcs = [
"fsnotify.go",
-//go:build cgo
+//go:build pkcs11
package mtls
"sync"
"github.com/ThalesIgnite/crypto11"
+
"go.fuhry.dev/runtime/constants"
"go.fuhry.dev/runtime/utils/log"
)
pkcs11Logger.V(1).Infof("trying to find device trust certificate with object label %s", deviceTrustObjectLabel)
cert, err := p.cHandle.FindCertificate(nil, []byte(deviceTrustObjectLabel), nil)
if err != nil {
- pkcs11Logger.V(1).Errorf("find devicetrust certificate filed: %v", err)
+ pkcs11Logger.V(1).Errorf("find devicetrust certificate failed: %v", err)
return nil, err
}
privateKey, err := p.GetPrivateKey()
if err != nil {
- pkcs11Logger.V(1).Errorf("find devicetrust private key filed: %v", err)
+ pkcs11Logger.V(1).Errorf("find devicetrust private key failed: %v", err)
return nil, err
}
"time"
"github.com/keybase/go-keychain"
+ "gopkg.in/yaml.v3"
+
"go.fuhry.dev/runtime/constants"
"go.fuhry.dev/runtime/mtls/certutil"
"go.fuhry.dev/runtime/utils/hashset"
"go.fuhry.dev/runtime/utils/log"
"go.fuhry.dev/runtime/utils/stringmatch"
- "gopkg.in/yaml.v3"
)
type macosKeychainCertificate struct {
return nil, fmt.Errorf("failed to identify any private key/certificate pairs")
})
-
if err != nil {
return nil, nil, err
}
return getMtlsIntermediatesFromMacKeychain()
}
-func (f *macosKeychainProviderFactory) New(_ *yaml.Node) (identityLoaderFunc, error) {
+func (f *macosKeychainProviderFactory) New(_ *yaml.Node) (IdentityLoaderFunc, error) {
return NewCertificateFromMacKeychain, nil
}
-//go:build cgo
+//go:build pkcs11
package mtls
"fmt"
"path"
+ "gopkg.in/yaml.v3"
+
"go.fuhry.dev/runtime/constants"
"go.fuhry.dev/runtime/mtls/certutil"
- "gopkg.in/yaml.v3"
)
type tpmProviderFactory struct{}
}
func init() {
- RegisterIdentityDriver("tpm2-pkcs11", func(cls PrincipalClass, serviceName string) (CertificateProvider, error) {
+ RegisterIdentityDriver("tpm2_pkcs11", func(cls PrincipalClass, serviceName string) (CertificateProvider, error) {
if cls != ServicePrincipal || serviceName != constants.DeviceTrustPrincipal {
return nil, ErrUnsupportedClass
}
return NewTPMBackedCertificate()
})
+
+ RegisterProviderFactory("tpm2_pkcs11", &tpmProviderFactory{})
}
-load("@rules_go//go:def.bzl", "go_library")
+load("//bazel:go.bzl", "go_multi_library")
-go_library(
+go_multi_library(
name = "net",
srcs = ["happy_eyeballs.go"],
importpath = "go.fuhry.dev/runtime/net",
-load("@rules_go//go:def.bzl", "go_library")
+load("//bazel:go.bzl", "go_multi_library")
-go_library(
+go_multi_library(
name = "dns",
srcs = [
"dns_cache.go",
-load("@rules_go//go:def.bzl", "go_binary", "go_library")
+load("//bazel:go.bzl", "go_multi_binary", "go_multi_library")
-go_library(
+go_multi_library(
name = "nfpmgen_lib",
srcs = [
"config_generator.go",
],
)
-go_binary(
+go_multi_binary(
name = "nfpmgen",
embed = [":nfpmgen_lib"],
visibility = ["//visibility:public"],
-load("@rules_go//go:def.bzl", "go_library")
+load("//bazel:go.bzl", "go_multi_library")
filegroup(
name = "go_default_library_protos",
visibility = ["//visibility:public"],
)
-go_library(
+go_multi_library(
name = "attest",
srcs = [
"attest_server.pb.go",
-load("@rules_go//go:def.bzl", "go_library")
+load("//bazel:go.bzl", "go_multi_library")
filegroup(
name = "go_default_library_protos",
visibility = ["//visibility:public"],
)
-go_library(
+go_multi_library(
name = "bryston_ctl",
srcs = [
"bryston_ctl.pb.go",
-load("@rules_go//go:def.bzl", "go_library")
+load("//bazel:go.bzl", "go_multi_library")
filegroup(
name = "go_default_library_protos",
visibility = ["//visibility:public"],
)
-go_library(
+go_multi_library(
name = "echo",
srcs = [
"echo_server.pb.go",
-load("@rules_go//go:def.bzl", "go_library")
+load("//bazel:go.bzl", "go_multi_library")
filegroup(
name = "go_default_library_protos",
visibility = ["//visibility:public"],
)
-go_library(
+go_multi_library(
name = "ephs",
srcs = [
"ephs_service.pb.go",
-load("@rules_go//go:def.bzl", "go_library")
+load("//bazel:go.bzl", "go_multi_library")
# gazelle:proto legacy
visibility = ["//visibility:public"],
)
-go_library(
+go_multi_library(
name = "mint",
srcs = [
"mint_service.pb.go",
-load("@rules_go//go:def.bzl", "go_library")
+load("//bazel:go.bzl", "go_multi_library")
-go_library(
+go_multi_library(
name = "rand",
srcs = ["range.go"],
importpath = "go.fuhry.dev/runtime/rand",
-load("@rules_go//go:def.bzl", "go_library", "go_test")
+load("@rules_go//go:def.bzl", "go_test")
+load("//bazel:go.bzl", "go_multi_library")
-go_library(
+go_multi_library(
name = "sase",
srcs = [
"acl.go",
-load("@rules_go//go:def.bzl", "go_library")
+load("//bazel:go.bzl", "go_multi_library")
-go_library(
+go_multi_library(
name = "sd",
srcs = [
"etcd_factory.go",
-load("@rules_go//go:def.bzl", "go_binary", "go_library")
+load("//bazel:go.bzl", "go_multi_binary", "go_multi_library")
-go_library(
+go_multi_library(
name = "registry_lib",
srcs = ["main.go"],
importpath = "go.fuhry.dev/runtime/thirdparty/registry",
],
)
-go_binary(
+go_multi_binary(
name = "registry",
embed = [":registry_lib"],
visibility = ["//visibility:public"],
-load("@rules_go//go:def.bzl", "go_library")
+load("//bazel:go.bzl", "go_multi_library")
-go_library(
+go_multi_library(
name = "utils",
srcs = ["reverse.go"],
importpath = "go.fuhry.dev/runtime/utils",
-load("@rules_go//go:def.bzl", "go_library")
+load("//bazel:go.bzl", "go_multi_library")
-go_library(
+go_multi_library(
name = "ansi",
srcs = ["color.go"],
importpath = "go.fuhry.dev/runtime/utils/ansi",
-load("@rules_go//go:def.bzl", "go_library")
+load("//bazel:go.bzl", "go_multi_library")
-go_library(
+go_multi_library(
name = "checkers",
srcs = ["contains_key.go"],
importpath = "go.fuhry.dev/runtime/utils/checkers",
-load("@rules_go//go:def.bzl", "go_library")
+load("//bazel:go.bzl", "go_multi_library")
-go_library(
+go_multi_library(
name = "context",
srcs = [
"imports.go",
-load("@rules_go//go:def.bzl", "go_library")
+load("//bazel:go.bzl", "go_multi_library")
-go_library(
+go_multi_library(
name = "daemon",
srcs = [
"constants_linux.go",
-load("@rules_go//go:def.bzl", "go_library", "go_test")
+load("@rules_go//go:def.bzl", "go_test")
+load("//bazel:go.bzl", "go_multi_library")
-go_library(
+go_multi_library(
name = "debounce",
srcs = ["debounce.go"],
importpath = "go.fuhry.dev/runtime/utils/debounce",
-load("@rules_go//go:def.bzl", "go_library")
+load("//bazel:go.bzl", "go_multi_library")
-go_library(
+go_multi_library(
name = "fsutil",
srcs = ["file.go"],
importpath = "go.fuhry.dev/runtime/utils/fsutil",
-load("@rules_go//go:def.bzl", "go_library")
+load("//bazel:go.bzl", "go_multi_library")
-go_library(
+go_multi_library(
name = "generics",
srcs = ["math.go"],
importpath = "go.fuhry.dev/runtime/utils/generics",
-load("@rules_go//go:def.bzl", "go_library", "go_test")
+load("@rules_go//go:def.bzl", "go_test")
+load("//bazel:go.bzl", "go_multi_library")
-go_library(
+go_multi_library(
name = "hashset",
srcs = ["hashset.go"],
importpath = "go.fuhry.dev/runtime/utils/hashset",
-load("@rules_go//go:def.bzl", "go_library", "go_test")
+load("@rules_go//go:def.bzl", "go_test")
+load("//bazel:go.bzl", "go_multi_library")
-go_library(
+go_multi_library(
name = "hostname",
srcs = [
"hostname.go",
-load("@rules_go//go:def.bzl", "go_library")
+load("//bazel:go.bzl", "go_multi_library")
-go_library(
+go_multi_library(
name = "log",
srcs = [
"http.go",
-load("@rules_go//go:def.bzl", "go_library")
+load("//bazel:go.bzl", "go_multi_library")
-go_library(
+go_multi_library(
name = "option",
srcs = ["option.go"],
importpath = "go.fuhry.dev/runtime/utils/option",
-load("@rules_go//go:def.bzl", "go_library")
+load("//bazel:go.bzl", "go_multi_library")
-go_library(
+go_multi_library(
name = "rollout",
srcs = ["rollout.go"],
importpath = "go.fuhry.dev/runtime/utils/rollout",
-load("@rules_go//go:def.bzl", "go_library")
+load("//bazel:go.bzl", "go_multi_library")
-go_library(
+go_multi_library(
name = "slices2",
srcs = ["map.go"],
importpath = "go.fuhry.dev/runtime/utils/slices2",
-load("@rules_go//go:def.bzl", "go_library", "go_test")
+load("@rules_go//go:def.bzl", "go_test")
+load("//bazel:go.bzl", "go_multi_library")
-go_library(
+go_multi_library(
name = "stringmatch",
srcs = [
"matchers.go",
-load("@rules_go//go:def.bzl", "go_library")
+load("//bazel:go.bzl", "go_multi_library")
-go_library(
+go_multi_library(
name = "strings2",
srcs = ["strings2.go"],
importpath = "go.fuhry.dev/runtime/utils/strings2",
-load("@rules_go//go:def.bzl", "go_library")
+load("//bazel:go.bzl", "go_multi_library")
-go_library(
+go_multi_library(
name = "subst",
srcs = ["subst.go"],
importpath = "go.fuhry.dev/runtime/utils/subst",