|
@@ -8,6 +8,12 @@ TEST_FLAGS?=
|
8
|
8
|
include docker/kubectl.version
|
9
|
9
|
include docker/helm.version
|
10
|
10
|
|
|
11
|
+# NB default target architecture is amd64. If you would like to try the
|
|
12
|
+# other one -- pass an ARCH variable, e.g.,
|
|
13
|
+# `make ARCH=arm64`
|
|
14
|
+ifeq ($(ARCH),)
|
|
15
|
+ ARCH=amd64
|
|
16
|
+endif
|
11
|
17
|
CURRENT_OS_ARCH=$(shell echo `go env GOOS`-`go env GOARCH`)
|
12
|
18
|
|
13
|
19
|
# NB because this outputs absolute file names, you have to be careful
|
|
@@ -27,11 +33,21 @@ BUILD_DATE:=$(shell date -u +'%Y-%m-%dT%H:%M:%SZ')
|
27
|
33
|
all: $(GOPATH)/bin/fluxctl $(GOPATH)/bin/fluxd $(GOPATH)/bin/helm-operator build/.flux.done build/.helm-operator.done
|
28
|
34
|
|
29
|
35
|
release-bins:
|
|
36
|
+ function do_build() { \
|
|
37
|
+ os=$$1 \
|
|
38
|
+ arch=$$2 \
|
|
39
|
+ CGO_ENABLED=0 GOOS=$$os GOARCH=$$arch go build -o "build/fluxctl_"$$os"_$$arch" $(LDFLAGS) -ldflags "-X main.version=$(shell ./docker/image-tag)" ./cmd/fluxctl/; \
|
|
40
|
+ };\
|
30
|
41
|
for arch in amd64; do \
|
31
|
42
|
for os in linux darwin windows; do \
|
32
|
|
- CGO_ENABLED=0 GOOS=$$os GOARCH=$$arch go build -o "build/fluxctl_"$$os"_$$arch" $(LDFLAGS) -ldflags "-X main.version=$(shell ./docker/image-tag)" ./cmd/fluxctl/; \
|
|
43
|
+ do_build "$$os" "$$arch"; \
|
33
|
44
|
done; \
|
34
|
|
- done
|
|
45
|
+ done; \
|
|
46
|
+ for arch in arm arm64; do \
|
|
47
|
+ for os in linux; do \
|
|
48
|
+ do_build "$$os" "$$arch"; \
|
|
49
|
+ done; \
|
|
50
|
+ done;
|
35
|
51
|
|
36
|
52
|
clean:
|
37
|
53
|
go clean
|
|
@@ -58,33 +74,33 @@ build/.helm-operator.done: build/helm-operator build/kubectl build/helm docker/s
|
58
|
74
|
|
59
|
75
|
build/fluxd: $(FLUXD_DEPS)
|
60
|
76
|
build/fluxd: cmd/fluxd/*.go
|
61
|
|
- CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o $@ $(LDFLAGS) -ldflags "-X main.version=$(shell ./docker/image-tag)" ./cmd/fluxd
|
|
77
|
+ CGO_ENABLED=0 GOOS=linux GOARCH=${ARCH} go build -o $@ $(LDFLAGS) -ldflags "-X main.version=$(shell ./docker/image-tag)" ./cmd/fluxd
|
62
|
78
|
|
63
|
79
|
build/helm-operator: $(HELM_OPERATOR_DEPS)
|
64
|
80
|
build/helm-operator: cmd/helm-operator/*.go
|
65
|
|
- CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o $@ $(LDFLAGS) -ldflags "-X main.version=$(shell ./docker/image-tag)" ./cmd/helm-operator
|
|
81
|
+ CGO_ENABLED=0 GOOS=linux GOARCH=${ARCH} go build -o $@ $(LDFLAGS) -ldflags "-X main.version=$(shell ./docker/image-tag)" ./cmd/helm-operator
|
66
|
82
|
|
67
|
|
-build/kubectl: cache/linux-amd64/kubectl-$(KUBECTL_VERSION)
|
|
83
|
+build/kubectl: cache/linux-$(ARCH)/kubectl-$(KUBECTL_VERSION)
|
68
|
84
|
test/bin/kubectl: cache/$(CURRENT_OS_ARCH)/kubectl-$(KUBECTL_VERSION)
|
69
|
|
-build/helm: cache/linux-amd64/helm-$(HELM_VERSION)
|
|
85
|
+build/helm: cache/linux-$(ARCH)/helm-$(HELM_VERSION)
|
70
|
86
|
test/bin/helm: cache/$(CURRENT_OS_ARCH)/helm-$(HELM_VERSION)
|
71
|
87
|
build/kubectl test/bin/kubectl build/helm test/bin/helm:
|
72
|
88
|
mkdir -p build
|
73
|
89
|
cp $< $@
|
74
|
|
- if [ `basename $@` = "build" -a $(CURRENT_OS_ARCH) = "linux-amd64" ]; then strip $@; fi
|
|
90
|
+ if [ `basename $@` = "build" -a $(CURRENT_OS_ARCH) = "linux-$(ARCH)" ]; then strip $@; fi
|
75
|
91
|
chmod a+x $@
|
76
|
92
|
|
77
|
93
|
cache/%/kubectl-$(KUBECTL_VERSION): docker/kubectl.version
|
78
|
94
|
mkdir -p cache/$*
|
79
|
95
|
curl -L -o cache/$*/kubectl-$(KUBECTL_VERSION).tar.gz "https://dl.k8s.io/$(KUBECTL_VERSION)/kubernetes-client-$*.tar.gz"
|
80
|
|
- [ $* != "linux-amd64" ] || echo "$(KUBECTL_CHECKSUM) cache/$*/kubectl-$(KUBECTL_VERSION).tar.gz" | shasum -a 256 -c
|
|
96
|
+ [ $* != "linux-$(ARCH)" ] || echo "$(KUBECTL_CHECKSUM_$(ARCH)) cache/$*/kubectl-$(KUBECTL_VERSION).tar.gz" | shasum -a 256 -c
|
81
|
97
|
tar -m --strip-components 3 -C ./cache/$* -xzf cache/$*/kubectl-$(KUBECTL_VERSION).tar.gz kubernetes/client/bin/kubectl
|
82
|
98
|
mv ./cache/$*/kubectl $@
|
83
|
99
|
|
84
|
100
|
cache/%/helm-$(HELM_VERSION): docker/helm.version
|
85
|
101
|
mkdir -p cache/$*
|
86
|
102
|
curl -L -o cache/$*/helm-$(HELM_VERSION).tar.gz "https://storage.googleapis.com/kubernetes-helm/helm-v$(HELM_VERSION)-$*.tar.gz"
|
87
|
|
- [ $* != "linux-amd64" ] || echo "$(HELM_CHECKSUM) cache/$*/helm-$(HELM_VERSION).tar.gz" | shasum -a 256 -c
|
|
103
|
+ [ $* != "linux-$(ARCH)" ] || echo "$(HELM_CHECKSUM_$(ARCH)) cache/$*/helm-$(HELM_VERSION).tar.gz" | shasum -a 256 -c
|
88
|
104
|
tar -m -C ./cache -xzf cache/$*/helm-$(HELM_VERSION).tar.gz $*/helm
|
89
|
105
|
mv cache/$*/helm $@
|
90
|
106
|
|
|
@@ -106,3 +122,4 @@ integration-test: all
|
106
|
122
|
check-generated:
|
107
|
123
|
./bin/helm/update_codegen.sh
|
108
|
124
|
git diff --exit-code -- integrations/apis intergrations/client
|
|
125
|
+
|