Skip to content

Commit 71a77cd

Browse files
committed
(go/v3-alpha) Makefile: install kustomize and controller-gen to
'<project root>/bin', and always use these instead of global binaries
1 parent c158f4f commit 71a77cd

File tree

4 files changed

+80
-112
lines changed

4 files changed

+80
-112
lines changed

pkg/plugin/v3/scaffolds/internal/templates/makefile.go

Lines changed: 20 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -127,35 +127,27 @@ docker-build: test
127127
docker-push:
128128
docker push ${IMG}
129129
130-
# find or download controller-gen
131-
# download controller-gen if necessary
130+
# Download controller-gen locally if necessary
131+
CONTROLLER_GEN = $(shell pwd)/bin/controller-gen
132132
controller-gen:
133-
ifeq (, $(shell which controller-gen))
134-
@{ \
135-
set -e ;\
136-
CONTROLLER_GEN_TMP_DIR=$$(mktemp -d) ;\
137-
cd $$CONTROLLER_GEN_TMP_DIR ;\
138-
go mod init tmp ;\
139-
go get sigs.k8s.io/controller-tools/cmd/controller-gen@{{ .ControllerToolsVersion }} ;\
140-
rm -rf $$CONTROLLER_GEN_TMP_DIR ;\
141-
}
142-
CONTROLLER_GEN=$(GOBIN)/controller-gen
143-
else
144-
CONTROLLER_GEN=$(shell which controller-gen)
145-
endif
133+
$(call go-get-tool,$(CONTROLLER_GEN),sigs.k8s.io/controller-tools/cmd/controller-gen@{{ .ControllerToolsVersion }})
146134
135+
# Download kustomize locally if necessary
136+
KUSTOMIZE = $(shell pwd)/bin/kustomize
147137
kustomize:
148-
ifeq (, $(shell which kustomize))
149-
@{ \
150-
set -e ;\
151-
KUSTOMIZE_GEN_TMP_DIR=$$(mktemp -d) ;\
152-
cd $$KUSTOMIZE_GEN_TMP_DIR ;\
153-
go mod init tmp ;\
154-
go get sigs.k8s.io/kustomize/kustomize/v3@{{ .KustomizeVersion }} ;\
155-
rm -rf $$KUSTOMIZE_GEN_TMP_DIR ;\
156-
}
157-
KUSTOMIZE=$(GOBIN)/kustomize
158-
else
159-
KUSTOMIZE=$(shell which kustomize)
160-
endif
138+
$(call go-get-tool,$(KUSTOMIZE),sigs.k8s.io/kustomize/kustomize/v3@{{ .KustomizeVersion }})
139+
140+
# go-get-tool will 'go get' any package $2 and install it to $1.
141+
PROJECT_DIR := $(shell dirname $(abspath $(lastword $(MAKEFILE_LIST))))
142+
define go-get-tool
143+
@[ -f $(1) ] || { \
144+
set -e ;\
145+
TMP_DIR=$$(mktemp -d) ;\
146+
cd $$TMP_DIR ;\
147+
go mod init tmp ;\
148+
echo "Downloading $(2)" ;\
149+
GOBIN=$(PROJECT_DIR)/bin go get $(2) ;\
150+
rm -rf $$TMP_DIR ;\
151+
}
152+
endef
161153
`

testdata/project-v3-addon/Makefile

Lines changed: 20 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -69,34 +69,26 @@ docker-build: test
6969
docker-push:
7070
docker push ${IMG}
7171

72-
# find or download controller-gen
73-
# download controller-gen if necessary
72+
# Download controller-gen locally if necessary
73+
CONTROLLER_GEN = $(shell pwd)/bin/controller-gen
7474
controller-gen:
75-
ifeq (, $(shell which controller-gen))
76-
@{ \
77-
set -e ;\
78-
CONTROLLER_GEN_TMP_DIR=$$(mktemp -d) ;\
79-
cd $$CONTROLLER_GEN_TMP_DIR ;\
80-
go mod init tmp ;\
81-
go get sigs.k8s.io/controller-tools/cmd/[email protected] ;\
82-
rm -rf $$CONTROLLER_GEN_TMP_DIR ;\
83-
}
84-
CONTROLLER_GEN=$(GOBIN)/controller-gen
85-
else
86-
CONTROLLER_GEN=$(shell which controller-gen)
87-
endif
75+
$(call go-get-tool,$(CONTROLLER_GEN),sigs.k8s.io/controller-tools/cmd/[email protected])
8876

77+
# Download kustomize locally if necessary
78+
KUSTOMIZE = $(shell pwd)/bin/kustomize
8979
kustomize:
90-
ifeq (, $(shell which kustomize))
91-
@{ \
92-
set -e ;\
93-
KUSTOMIZE_GEN_TMP_DIR=$$(mktemp -d) ;\
94-
cd $$KUSTOMIZE_GEN_TMP_DIR ;\
95-
go mod init tmp ;\
96-
go get sigs.k8s.io/kustomize/kustomize/[email protected] ;\
97-
rm -rf $$KUSTOMIZE_GEN_TMP_DIR ;\
98-
}
99-
KUSTOMIZE=$(GOBIN)/kustomize
100-
else
101-
KUSTOMIZE=$(shell which kustomize)
102-
endif
80+
$(call go-get-tool,$(KUSTOMIZE),sigs.k8s.io/kustomize/kustomize/[email protected])
81+
82+
# go-get-tool will 'go get' any package $2 and install it to $1.
83+
PROJECT_DIR := $(shell dirname $(abspath $(lastword $(MAKEFILE_LIST))))
84+
define go-get-tool
85+
@[ -f $(1) ] || { \
86+
set -e ;\
87+
TMP_DIR=$$(mktemp -d) ;\
88+
cd $$TMP_DIR ;\
89+
go mod init tmp ;\
90+
echo "Downloading $(2)" ;\
91+
GOBIN=$(PROJECT_DIR)/bin go get $(2) ;\
92+
rm -rf $$TMP_DIR ;\
93+
}
94+
endef

testdata/project-v3-multigroup/Makefile

Lines changed: 20 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -69,34 +69,26 @@ docker-build: test
6969
docker-push:
7070
docker push ${IMG}
7171

72-
# find or download controller-gen
73-
# download controller-gen if necessary
72+
# Download controller-gen locally if necessary
73+
CONTROLLER_GEN = $(shell pwd)/bin/controller-gen
7474
controller-gen:
75-
ifeq (, $(shell which controller-gen))
76-
@{ \
77-
set -e ;\
78-
CONTROLLER_GEN_TMP_DIR=$$(mktemp -d) ;\
79-
cd $$CONTROLLER_GEN_TMP_DIR ;\
80-
go mod init tmp ;\
81-
go get sigs.k8s.io/controller-tools/cmd/[email protected] ;\
82-
rm -rf $$CONTROLLER_GEN_TMP_DIR ;\
83-
}
84-
CONTROLLER_GEN=$(GOBIN)/controller-gen
85-
else
86-
CONTROLLER_GEN=$(shell which controller-gen)
87-
endif
75+
$(call go-get-tool,$(CONTROLLER_GEN),sigs.k8s.io/controller-tools/cmd/[email protected])
8876

77+
# Download kustomize locally if necessary
78+
KUSTOMIZE = $(shell pwd)/bin/kustomize
8979
kustomize:
90-
ifeq (, $(shell which kustomize))
91-
@{ \
92-
set -e ;\
93-
KUSTOMIZE_GEN_TMP_DIR=$$(mktemp -d) ;\
94-
cd $$KUSTOMIZE_GEN_TMP_DIR ;\
95-
go mod init tmp ;\
96-
go get sigs.k8s.io/kustomize/kustomize/[email protected] ;\
97-
rm -rf $$KUSTOMIZE_GEN_TMP_DIR ;\
98-
}
99-
KUSTOMIZE=$(GOBIN)/kustomize
100-
else
101-
KUSTOMIZE=$(shell which kustomize)
102-
endif
80+
$(call go-get-tool,$(KUSTOMIZE),sigs.k8s.io/kustomize/kustomize/[email protected])
81+
82+
# go-get-tool will 'go get' any package $2 and install it to $1.
83+
PROJECT_DIR := $(shell dirname $(abspath $(lastword $(MAKEFILE_LIST))))
84+
define go-get-tool
85+
@[ -f $(1) ] || { \
86+
set -e ;\
87+
TMP_DIR=$$(mktemp -d) ;\
88+
cd $$TMP_DIR ;\
89+
go mod init tmp ;\
90+
echo "Downloading $(2)" ;\
91+
GOBIN=$(PROJECT_DIR)/bin go get $(2) ;\
92+
rm -rf $$TMP_DIR ;\
93+
}
94+
endef

testdata/project-v3/Makefile

Lines changed: 20 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -69,34 +69,26 @@ docker-build: test
6969
docker-push:
7070
docker push ${IMG}
7171

72-
# find or download controller-gen
73-
# download controller-gen if necessary
72+
# Download controller-gen locally if necessary
73+
CONTROLLER_GEN = $(shell pwd)/bin/controller-gen
7474
controller-gen:
75-
ifeq (, $(shell which controller-gen))
76-
@{ \
77-
set -e ;\
78-
CONTROLLER_GEN_TMP_DIR=$$(mktemp -d) ;\
79-
cd $$CONTROLLER_GEN_TMP_DIR ;\
80-
go mod init tmp ;\
81-
go get sigs.k8s.io/controller-tools/cmd/[email protected] ;\
82-
rm -rf $$CONTROLLER_GEN_TMP_DIR ;\
83-
}
84-
CONTROLLER_GEN=$(GOBIN)/controller-gen
85-
else
86-
CONTROLLER_GEN=$(shell which controller-gen)
87-
endif
75+
$(call go-get-tool,$(CONTROLLER_GEN),sigs.k8s.io/controller-tools/cmd/[email protected])
8876

77+
# Download kustomize locally if necessary
78+
KUSTOMIZE = $(shell pwd)/bin/kustomize
8979
kustomize:
90-
ifeq (, $(shell which kustomize))
91-
@{ \
92-
set -e ;\
93-
KUSTOMIZE_GEN_TMP_DIR=$$(mktemp -d) ;\
94-
cd $$KUSTOMIZE_GEN_TMP_DIR ;\
95-
go mod init tmp ;\
96-
go get sigs.k8s.io/kustomize/kustomize/[email protected] ;\
97-
rm -rf $$KUSTOMIZE_GEN_TMP_DIR ;\
98-
}
99-
KUSTOMIZE=$(GOBIN)/kustomize
100-
else
101-
KUSTOMIZE=$(shell which kustomize)
102-
endif
80+
$(call go-get-tool,$(KUSTOMIZE),sigs.k8s.io/kustomize/kustomize/[email protected])
81+
82+
# go-get-tool will 'go get' any package $2 and install it to $1.
83+
PROJECT_DIR := $(shell dirname $(abspath $(lastword $(MAKEFILE_LIST))))
84+
define go-get-tool
85+
@[ -f $(1) ] || { \
86+
set -e ;\
87+
TMP_DIR=$$(mktemp -d) ;\
88+
cd $$TMP_DIR ;\
89+
go mod init tmp ;\
90+
echo "Downloading $(2)" ;\
91+
GOBIN=$(PROJECT_DIR)/bin go get $(2) ;\
92+
rm -rf $$TMP_DIR ;\
93+
}
94+
endef

0 commit comments

Comments
 (0)