diff --git a/Makefile b/Makefile index c4c1ca95bdfa..e00342a8972a 100644 --- a/Makefile +++ b/Makefile @@ -21,11 +21,20 @@ K0S_GO_BUILD_CACHE ?= build/cache GO_SRCS := $(shell find . -type f -name '*.go' -not -path './$(K0S_GO_BUILD_CACHE)/*' -not -path './inttest/*' -not -name '*_test.go' -not -name 'zz_generated*') GO_CHECK_UNIT_DIRS := . ./cmd/... ./pkg/... ./internal/... ./static/... ./hack/... +DOCKER = docker # EMBEDDED_BINS_BUILDMODE can be either: # docker builds the binaries in docker # none does not embed any binaries -EMBEDDED_BINS_BUILDMODE ?= docker +ifeq ($(DOCKER),false) + EMBEDDED_BINS_BUILDMODE ?= none + K0S_BUILD_IMAGE_FILE = + GO ?= go +else + EMBEDDED_BINS_BUILDMODE ?= docker + K0S_BUILD_IMAGE_FILE = .k0sbuild.docker-image.k0s + GO ?= $(GO_ENV) go +endif # k0s runs on linux even if it's built on mac or windows TARGET_OS ?= linux BUILD_UID ?= $(shell id -u) @@ -69,7 +78,6 @@ endif endif LD_FLAGS += $(BUILD_GO_LDFLAGS_EXTRA) -DOCKER = docker GOLANG_IMAGE ?= $(golang_buildimage) K0S_GO_BUILD_CACHE_VOLUME_PATH=$(realpath $(K0S_GO_BUILD_CACHE)) GO_ENV ?= $(DOCKER) run --rm \ @@ -81,8 +89,7 @@ GO_ENV ?= $(DOCKER) run --rm \ -e CGO_CFLAGS \ -e GOARCH \ --user $(BUILD_UID):$(BUILD_GID) \ - -- '$(shell cat .k0sbuild.docker-image.k0s)' -GO ?= $(GO_ENV) go + -- '$(shell cat $(K0S_BUILD_IMAGE_FILE))' # https://www.gnu.org/software/make/manual/make.html#index-spaces_002c-in-variable-values nullstring := @@ -105,12 +112,12 @@ all: k0s k0s.exe $(K0S_GO_BUILD_CACHE): mkdir -p -- '$@' -.k0sbuild.docker-image.k0s: build/Dockerfile embedded-bins/Makefile.variables | $(K0S_GO_BUILD_CACHE) +$(K0S_BUILD_IMAGE_FILE): build/Dockerfile embedded-bins/Makefile.variables | $(K0S_GO_BUILD_CACHE) $(DOCKER) build --progress=plain --iidfile '$@' \ --build-arg BUILDIMAGE=$(GOLANG_IMAGE) \ - -t k0sbuild.docker-image.k0s - '$@' airgap-image-bundle-linux-amd64.tar: TARGET_PLATFORM := linux/amd64 @@ -256,7 +263,7 @@ else check-unit: GO_TEST_RACE ?= -race endif check-unit: BUILD_GO_TAGS += hack -check-unit: .k0sbuild.docker-image.k0s go.sum bindata +check-unit: $(K0S_BUILD_IMAGE_FILE) go.sum bindata CGO_CFLAGS='$(BUILD_CGO_CFLAGS)' $(GO) test -tags=$(subst $(space),$(comma),$(BUILD_GO_TAGS)) $(GO_TEST_RACE) -ldflags='$(LD_FLAGS)' `$(GO) list -tags=$(subst $(space),$(comma),$(BUILD_GO_TAGS)) $(GO_CHECK_UNIT_DIRS)` .PHONY: clean-gocache @@ -265,7 +272,7 @@ clean-gocache: rm -rf -- '$(K0S_GO_BUILD_CACHE)/go' .PHONY: clean-docker-image -clean-docker-image: IID_FILES = .k0sbuild.docker-image.k0s +clean-docker-image: IID_FILES = $(K0S_BUILD_IMAGE_FILE) clean-docker-image: $(clean-iid-files)