# Should be the same as upstream version in production VERSION ?= dev UBOOT_VERSION=v2026.01 # Target kube version KUBE_VERSION ?= v1.35.0 GIT_REV := $(shell git rev-parse HEAD) PACKAGES_DIR := packages BIN_DIR := bin OUT_DIR := out UBOOT_TAR := $(PACKAGES_DIR)/uboot-$(UBOOT_VERSION).tar.gz BUILDINFO_FILE := pkg/buildinfo/buildinfo_gen.go CRD_PATHS := ./pkg/apis/... $(PACKAGES_DIR): mkdir -p $@ # Never cache this .buildinfo: @mkdir -p $(dir $(BUILDINFO_FILE)) @printf '%s\n' \ 'package buildinfo' \ '' \ 'const (' \ ' Version = "$(VERSION)"' \ ' KubeVersion = "$(KUBE_VERSION)"' \ ' GitRevision = "$(GIT_REV)"' \ ' Timestamp = "'$$(TZ=UTC date +%Y%m%d.%H%M%S)'"' \ ')' \ > $(BUILDINFO_FILE) $(UBOOT_TAR): | $(PACKAGES_DIR) git clone --depth 1 --branch v2026.01 --filter=blob:none https://github.com/u-boot/u-boot.git $(OUT_DIR)/u-boot-$(UBOOT_VERSION) tar -C "$(OUT_DIR)/u-boot-$(UBOOT_VERSION)" -zcf "$@" . rm -rf $(OUT_DIR)/u-boot-$(UBOOT_VERSION) test -f $@ uboot-tools: $(UBOOT_TAR) docker buildx build --platform linux/arm64 \ -f docker/uboot-tools.Dockerfile \ --build-arg UBOOT_VERSION=$(UBOOT_VERSION) \ --build-arg UBOOT_TAR=$(UBOOT_TAR) \ --output type=local,dest=./$(OUT_DIR) . build: .buildinfo mkdir -p $(BIN_DIR) $(OUT_DIR)/crds controller-gen crd paths=$(CRD_PATHS) output:crd:dir=$(OUT_DIR)/crds GOOS=linux GOARCH=arm64 go build -o $(BIN_DIR)/ctl-linux-aarch64-$(VERSION) ./cmd/ctl build-agent: build uboot-tools docker build \ -f docker/ctl-agent.Dockerfile \ --platform=linux/arm64 \ --build-arg VERSION=$(VERSION) \ -t localhost/monok8s/control-agent:$(VERSION) . build-local: .buildinfo mkdir -p $(BIN_DIR) go build -o $(BIN_DIR)/ctl-$(VERSION) ./cmd/ctl run-agent: go run -tags dev ./cmd/ctl agent --env-file ./out/cluster.env clean: -docker image rm localhost/monok8s/control-agent:$(VERSION) rm -rf $(BIN_DIR) \ $(BUILDINFO_FILE) \ $(OUT_DIR)/crds all: build build-agent build-local .PHONY: clean all run .buildinfo build build-local build-agent uboot-tools