@@ -21,10 +21,11 @@ DEB_VERSION ?= $(VERSION_MAJOR).$(VERSION_MINOR)-$(VERSION_BUILD)
21
21
INSTALL_SIZE ?= $(shell du out/minikube-windows-amd64.exe | cut -f1)
22
22
BUILDROOT_BRANCH ?= 2017.02
23
23
REGISTRY? =gcr.io/k8s-minikube
24
- DARWIN_BUILD_IMAGE ?= karalabe/xgo-1.8.3
25
- ISO_BUILD_IMAGE ?= $(REGISTRY ) /buildroot-image
26
24
27
- # The iso will be versioned the same as minikube
25
+ MINIKUBE_BUILD_IMAGE ?= karalabe/xgo-1.8.3
26
+ LOCALKUBE_BUILD_IMAGE ?= gcr.io/google_containers/kube-cross:v1.7.1-0
27
+ ISO_BUILD_IMAGE ?= $(REGISTRY ) /buildroot-image
28
+
28
29
ISO_VERSION ?= v0.20.0
29
30
ISO_BUCKET ?= minikube/iso
30
31
@@ -33,13 +34,6 @@ GOARCH ?= $(shell go env GOARCH)
33
34
BUILD_DIR ?= ./out
34
35
ORG := k8s.io
35
36
REPOPATH ?= $(ORG ) /minikube
36
- BUILD_IMAGE ?= gcr.io/google_containers/kube-cross:v1.7.1-0
37
- IS_EXE ?=
38
-
39
- ifeq ($(IN_DOCKER ) ,1)
40
- GOPATH := /go
41
- export GOPATH
42
- endif
43
37
44
38
# Use system python if it exists, otherwise use Docker.
45
39
PYTHON := $(shell command -v python || echo "docker run --rm -it -v $(shell pwd) :/minikube -w /minikube python python")
@@ -58,32 +52,56 @@ LOCALKUBE_LDFLAGS := "$(K8S_VERSION_LDFLAGS) $(MINIKUBE_LDFLAGS) -s -w -extldfla
58
52
LOCALKUBEFILES := GOPATH=$(GOPATH ) go list -f '{{join .Deps "\n"}}' ./cmd/localkube/ | grep k8s.io | GOPATH=$(GOPATH ) xargs go list -f '{{ range $$file := .GoFiles }} {{$$.Dir}}/{{$$file}}{{"\n"}}{{end}}'
59
53
MINIKUBEFILES := GOPATH=$(GOPATH ) go list -f '{{join .Deps "\n"}}' ./cmd/minikube/ | grep k8s.io | GOPATH=$(GOPATH ) xargs go list -f '{{ range $$file := .GoFiles }} {{$$.Dir}}/{{$$file}}{{"\n"}}{{end}}'
60
54
55
+ MINIKUBE_ENV_LINUX := CGO_ENABLED=1 GOARCH=amd64 GOOS=linux
56
+ MINIKUBE_ENV_DARWIN := CC=o64-clang CXX=o64-clang++ CGO_ENABLED=1 GOARCH=amd64 GOOS=darwin
57
+ MINIKUBE_ENV_WINDOWS := CGO_ENABLED=1 GOARCH=amd64 GOOS=linux
58
+
59
+ MINIKUBE_DOCKER_CMD := docker run -e IN_DOCKER=1 --user $(shell id -u) :$(shell id -g) --workdir /go/src/$(REPOPATH ) --entrypoint /bin/bash -v $(PWD ) :/go/src/$(REPOPATH ) $(MINIKUBE_BUILD_IMAGE ) -c
60
+ KUBE_CROSS_DOCKER_CMD := docker run -w /go/src/$(REPOPATH ) --user $(shell id -u) :$(shell id -g) -e IN_DOCKER=1 -v $(shell pwd) :/go/src/$(REPOPATH ) $(LOCALKUBE_BUILD_IMAGE )
61
+
62
+ # $(call MINIKUBE_GO_BUILD_CMD, output file, OS)
63
+ define MINIKUBE_GO_BUILD_CMD
64
+ $(call uc,MINIKUBE_ENV_$(2 ) ) go build --installsuffix cgo -ldflags="$(MINIKUBE_LDFLAGS ) $(K8S_VERSION_LDFLAGS ) " -o $(1 ) k8s.io/minikube/cmd/minikube
65
+ endef
66
+
67
+ ifeq ($(BUILD_IN_DOCKER ) ,y)
68
+ MINIKUBE_BUILD_IN_DOCKER=y
69
+ LOCALKUBE_BUILD_IN_DOCKER=y
70
+ endif
71
+
72
+ # If not on linux, localkube must be built in docker
73
+ ifneq ($(BUILD_OS ) ,Linux)
74
+ LOCALKUBE_BUILD_IN_DOCKER=y
75
+ endif
76
+
77
+ ifeq ($(IN_DOCKER ) ,1)
78
+ MINIKUBE_BUILD_IN_DOCKER=n
79
+ LOCALKUBE_BUILD_IN_DOCKER=n
80
+ endif
81
+
61
82
ifeq ($(GOOS ) ,windows)
62
83
IS_EXE = ".exe"
63
84
endif
64
85
out/minikube$(IS_EXE ) : out/minikube-$(GOOS ) -$(GOARCH )$(IS_EXE )
65
- cp $(BUILD_DIR ) /minikube-$(GOOS ) -$(GOARCH )$( IS_EXE ) $(BUILD_DIR ) /minikube$(IS_EXE )
86
+ cp $(BUILD_DIR ) /minikube-$(GOOS ) -$(GOARCH ) $(BUILD_DIR ) /minikube$(IS_EXE )
66
87
67
88
out/localkube : $(shell $(LOCALKUBEFILES ) )
68
- ifeq ($(BUILD_OS ) ,Linux )
69
- CGO_ENABLED=1 go build -tags static_build -ldflags=$(LOCALKUBE_LDFLAGS) -o $(BUILD_DIR)/localkube ./cmd/localkube
89
+ ifeq ($(LOCALKUBE_BUILD_IN_DOCKER ) ,y )
90
+ $(KUBE_CROSS_DOCKER_CMD) make $@
70
91
else
71
- docker run -w /go/src/$(REPOPATH ) -e IN_DOCKER=1 -v $(shell pwd):/go/src/$(REPOPATH) $(BUILD_IMAGE) make out /localkube
92
+ CGO_ENABLED=1 go build -tags static_build -ldflags=$(LOCALKUBE_LDFLAGS ) -o $(BUILD_DIR)/localkube ./cmd /localkube
72
93
endif
73
94
74
- out/minikube-darwin-amd64 : pkg/minikube/assets/assets.go $(shell $(MINIKUBEFILES ) )
75
- ifeq ($(IN_DOCKER ) ,1)
76
- CC=o64-clang CXX=o64-clang++ CGO_ENABLED=1 GOARCH=amd64 GOOS=darwin go build --installsuffix cgo -ldflags="$(MINIKUBE_LDFLAGS) $(K8S_VERSION_LDFLAGS)" -a -o $(BUILD_DIR)/minikube-darwin-amd64 k8s.io/minikube/cmd/minikube
95
+ out/minikube-windows-amd64.exe : out/minikube-windows-amd64
96
+ mv out/minikube-windows-amd64 out/minikube-windows-amd64.exe
97
+
98
+ out/minikube-% -amd64 : pkg/minikube/assets/assets.go $(shell $(MINIKUBEFILES ) )
99
+ ifeq ($(MINIKUBE_BUILD_IN_DOCKER ) ,y)
100
+ $(MINIKUBE_DOCKER_CMD) '$(call MINIKUBE_GO_BUILD_CMD, $@, $*)'
77
101
else
78
- docker run -e IN_DOCKER=1 --workdir /go/src/$(REPOPATH) --entrypoint /usr/bin/make -v $(PWD):/go/src/$(REPOPATH) $(DARWIN_BUILD_IMAGE) out/minikube-darwin-amd64
102
+ $(call MINIKUBE_GO_BUILD_CMD, $@, $*)
79
103
endif
80
104
81
- out/minikube-linux-amd64 : pkg/minikube/assets/assets.go $(shell $(MINIKUBEFILES ) )
82
- CGO_ENABLED=1 GOARCH=amd64 GOOS=linux go build --installsuffix cgo -ldflags=" $( MINIKUBE_LDFLAGS) $( K8S_VERSION_LDFLAGS) " -a -o $(BUILD_DIR ) /minikube-linux-amd64 k8s.io/minikube/cmd/minikube
83
-
84
- out/minikube-windows-amd64.exe : pkg/minikube/assets/assets.go $(shell $(MINIKUBEFILES ) )
85
- CGO_ENABLED=0 GOARCH=amd64 GOOS=windows go build --installsuffix cgo -ldflags=" $( MINIKUBE_LDFLAGS) $( K8S_VERSION_LDFLAGS) " -a -o $(BUILD_DIR ) /minikube-windows-amd64.exe k8s.io/minikube/cmd/minikube
86
-
87
105
minikube_iso : # old target kept for making tests happy
88
106
echo $(ISO_VERSION ) > deploy/iso/minikube-iso/board/coreos/minikube/rootfs-overlay/etc/VERSION
89
107
if [ ! -d $( BUILD_DIR) /buildroot ]; then \
0 commit comments