diff --git a/pkg/plugins/golang/v3/scaffolds/internal/templates/makefile.go b/pkg/plugins/golang/v3/scaffolds/internal/templates/makefile.go index b0603d69372..4272f6c81b6 100644 --- a/pkg/plugins/golang/v3/scaffolds/internal/templates/makefile.go +++ b/pkg/plugins/golang/v3/scaffolds/internal/templates/makefile.go @@ -179,7 +179,13 @@ KUSTOMIZE_INSTALL_SCRIPT ?= "https://raw.githubusercontent.com/kubernetes-sigs/k .PHONY: kustomize kustomize: $(KUSTOMIZE) ## Download kustomize locally if necessary. $(KUSTOMIZE): $(LOCALBIN) +ifeq "$(uname -s)" "Darwin" +ifeq "$(uname -m)" "aarch64" + curl -s "https://raw.githubusercontent.com/everettraven/kubebuilder/feat/temp-arm-support/scripts/build-kustomize.sh" | bash -s -- $(KUSTOMIZE_VERSION) $(LOCALBIN) +endif +else curl -s $(KUSTOMIZE_INSTALL_SCRIPT) | bash -s -- $(subst v,,$(KUSTOMIZE_VERSION)) $(LOCALBIN) +endif .PHONY: controller-gen controller-gen: $(CONTROLLER_GEN) ## Download controller-gen locally if necessary. @@ -187,7 +193,21 @@ $(CONTROLLER_GEN): $(LOCALBIN) GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-tools/cmd/controller-gen@$(CONTROLLER_TOOLS_VERSION) .PHONY: envtest -envtest: $(ENVTEST) ## Download envtest-setup locally if necessary. +envtest: $(ENVTEST) get-etcd ## Download envtest-setup locally if necessary. $(ENVTEST): $(LOCALBIN) GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-runtime/tools/setup-envtest@latest + +ETCD_SCRIPT ?= "https://raw.githubusercontent.com/everettraven/kubebuilder/feat/temp-arm-support/scripts/build-etcd.sh" +.PHONY: build-etcd +build-etcd: ## build etcd locally + curl -s $(ETCD_SCRIPT) | bash -s + +.PHONY: get-etcd +get-etcd: ## runs the build-etcd target only if the platform is darwin/arm64 +## if M1 Mac, build etcd locally if it doesn't already exist +ifeq "$(uname -s)" "Darwin" +ifeq "$(uname -m)" "aarch64" + etcd --version &> /dev/null || make build-etcd +endif +endif ` diff --git a/scripts/build-etcd.sh b/scripts/build-etcd.sh new file mode 100755 index 00000000000..ed057b199de --- /dev/null +++ b/scripts/build-etcd.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +# Copyright 2022 The Kubernetes Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +OS=$(uname -s | awk '{ print tolower($0) }') +ARCH=$(uname -m) +echo "Building etcd locally for $OS/$ARCH" + +TEMP_DIR=$(mktemp -d) +cd $TEMP_DIR +git clone https://github.com/etcd-io/etcd.git +cd etcd +make build +if [ -d $HOME/bin ] +then + mv ./bin/etcd $HOME/bin/etcd +else + mkdir $HOME/bin + mv ./bin/etcd $HOME/bin/etcd +fi +cd ../../ +rm -rf $TEMP_DIR diff --git a/scripts/build-kustomize.sh b/scripts/build-kustomize.sh new file mode 100755 index 00000000000..deb946a4d7f --- /dev/null +++ b/scripts/build-kustomize.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +# Copyright 2022 The Kubernetes Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +KUSTOMIZE_VERSION=$1 +INSTALL_PATH=$2 +if [ ! -f $INSTALL_PATH/kustomize ] +then + +OS=$(uname -s | awk '{ print tolower($0) }') +ARCH=$(uname -m) + +echo "Building kustomize $KUSTOMIZE_VERSION locally for $OS/$ARCH" + +TEMP_DIR=$(mktemp -d) +cd $TEMP_DIR +git clone --depth 1 --branch kustomize/$KUSTOMIZE_VERSION https://github.com/kubernetes-sigs/kustomize.git +cd kustomize/kustomize +GOBIN=$INSTALL_PATH go install . +cd ../../.. +rm -rf $TEMP_DIR +fi \ No newline at end of file diff --git a/testdata/project-v3-addon/Makefile b/testdata/project-v3-addon/Makefile index 4c98e81e111..878f1b8c0f3 100644 --- a/testdata/project-v3-addon/Makefile +++ b/testdata/project-v3-addon/Makefile @@ -120,7 +120,13 @@ KUSTOMIZE_INSTALL_SCRIPT ?= "https://raw.githubusercontent.com/kubernetes-sigs/k .PHONY: kustomize kustomize: $(KUSTOMIZE) ## Download kustomize locally if necessary. $(KUSTOMIZE): $(LOCALBIN) +ifeq "$(uname -s)" "Darwin" +ifeq "$(uname -m)" "aarch64" + curl -s "https://raw.githubusercontent.com/everettraven/kubebuilder/feat/temp-arm-support/scripts/build-kustomize.sh" | bash -s -- $(KUSTOMIZE_VERSION) $(LOCALBIN) +endif +else curl -s $(KUSTOMIZE_INSTALL_SCRIPT) | bash -s -- $(subst v,,$(KUSTOMIZE_VERSION)) $(LOCALBIN) +endif .PHONY: controller-gen controller-gen: $(CONTROLLER_GEN) ## Download controller-gen locally if necessary. @@ -131,3 +137,9 @@ $(CONTROLLER_GEN): $(LOCALBIN) envtest: $(ENVTEST) ## Download envtest-setup locally if necessary. $(ENVTEST): $(LOCALBIN) GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-runtime/tools/setup-envtest@latest + + +ETCD_SCRIPT ?= "https://raw.githubusercontent.com/everettraven/kubebuilder/feat/temp-arm-support/scripts/build-etcd.sh" +.PHONY: etcd +etcd: ## build etcd locally + curl -s $(ETCD_SCRIPT) | bash -s diff --git a/testdata/project-v3-config/Makefile b/testdata/project-v3-config/Makefile index 4c98e81e111..878f1b8c0f3 100644 --- a/testdata/project-v3-config/Makefile +++ b/testdata/project-v3-config/Makefile @@ -120,7 +120,13 @@ KUSTOMIZE_INSTALL_SCRIPT ?= "https://raw.githubusercontent.com/kubernetes-sigs/k .PHONY: kustomize kustomize: $(KUSTOMIZE) ## Download kustomize locally if necessary. $(KUSTOMIZE): $(LOCALBIN) +ifeq "$(uname -s)" "Darwin" +ifeq "$(uname -m)" "aarch64" + curl -s "https://raw.githubusercontent.com/everettraven/kubebuilder/feat/temp-arm-support/scripts/build-kustomize.sh" | bash -s -- $(KUSTOMIZE_VERSION) $(LOCALBIN) +endif +else curl -s $(KUSTOMIZE_INSTALL_SCRIPT) | bash -s -- $(subst v,,$(KUSTOMIZE_VERSION)) $(LOCALBIN) +endif .PHONY: controller-gen controller-gen: $(CONTROLLER_GEN) ## Download controller-gen locally if necessary. @@ -131,3 +137,9 @@ $(CONTROLLER_GEN): $(LOCALBIN) envtest: $(ENVTEST) ## Download envtest-setup locally if necessary. $(ENVTEST): $(LOCALBIN) GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-runtime/tools/setup-envtest@latest + + +ETCD_SCRIPT ?= "https://raw.githubusercontent.com/everettraven/kubebuilder/feat/temp-arm-support/scripts/build-etcd.sh" +.PHONY: etcd +etcd: ## build etcd locally + curl -s $(ETCD_SCRIPT) | bash -s diff --git a/testdata/project-v3-multigroup/Makefile b/testdata/project-v3-multigroup/Makefile index 4c98e81e111..878f1b8c0f3 100644 --- a/testdata/project-v3-multigroup/Makefile +++ b/testdata/project-v3-multigroup/Makefile @@ -120,7 +120,13 @@ KUSTOMIZE_INSTALL_SCRIPT ?= "https://raw.githubusercontent.com/kubernetes-sigs/k .PHONY: kustomize kustomize: $(KUSTOMIZE) ## Download kustomize locally if necessary. $(KUSTOMIZE): $(LOCALBIN) +ifeq "$(uname -s)" "Darwin" +ifeq "$(uname -m)" "aarch64" + curl -s "https://raw.githubusercontent.com/everettraven/kubebuilder/feat/temp-arm-support/scripts/build-kustomize.sh" | bash -s -- $(KUSTOMIZE_VERSION) $(LOCALBIN) +endif +else curl -s $(KUSTOMIZE_INSTALL_SCRIPT) | bash -s -- $(subst v,,$(KUSTOMIZE_VERSION)) $(LOCALBIN) +endif .PHONY: controller-gen controller-gen: $(CONTROLLER_GEN) ## Download controller-gen locally if necessary. @@ -131,3 +137,9 @@ $(CONTROLLER_GEN): $(LOCALBIN) envtest: $(ENVTEST) ## Download envtest-setup locally if necessary. $(ENVTEST): $(LOCALBIN) GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-runtime/tools/setup-envtest@latest + + +ETCD_SCRIPT ?= "https://raw.githubusercontent.com/everettraven/kubebuilder/feat/temp-arm-support/scripts/build-etcd.sh" +.PHONY: etcd +etcd: ## build etcd locally + curl -s $(ETCD_SCRIPT) | bash -s diff --git a/testdata/project-v3-v1beta1/Makefile b/testdata/project-v3-v1beta1/Makefile index fc483bd85a4..5db0b6d784d 100644 --- a/testdata/project-v3-v1beta1/Makefile +++ b/testdata/project-v3-v1beta1/Makefile @@ -122,7 +122,13 @@ KUSTOMIZE_INSTALL_SCRIPT ?= "https://raw.githubusercontent.com/kubernetes-sigs/k .PHONY: kustomize kustomize: $(KUSTOMIZE) ## Download kustomize locally if necessary. $(KUSTOMIZE): $(LOCALBIN) +ifeq "$(uname -s)" "Darwin" +ifeq "$(uname -m)" "aarch64" + curl -s "https://raw.githubusercontent.com/everettraven/kubebuilder/feat/temp-arm-support/scripts/build-kustomize.sh" | bash -s -- $(KUSTOMIZE_VERSION) $(LOCALBIN) +endif +else curl -s $(KUSTOMIZE_INSTALL_SCRIPT) | bash -s -- $(subst v,,$(KUSTOMIZE_VERSION)) $(LOCALBIN) +endif .PHONY: controller-gen controller-gen: $(CONTROLLER_GEN) ## Download controller-gen locally if necessary. @@ -133,3 +139,9 @@ $(CONTROLLER_GEN): $(LOCALBIN) envtest: $(ENVTEST) ## Download envtest-setup locally if necessary. $(ENVTEST): $(LOCALBIN) GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-runtime/tools/setup-envtest@latest + + +ETCD_SCRIPT ?= "https://raw.githubusercontent.com/everettraven/kubebuilder/feat/temp-arm-support/scripts/build-etcd.sh" +.PHONY: etcd +etcd: ## build etcd locally + curl -s $(ETCD_SCRIPT) | bash -s diff --git a/testdata/project-v3-with-kustomize-v2/Makefile b/testdata/project-v3-with-kustomize-v2/Makefile index 4c7b9547f28..cc979bffd31 100644 --- a/testdata/project-v3-with-kustomize-v2/Makefile +++ b/testdata/project-v3-with-kustomize-v2/Makefile @@ -120,7 +120,13 @@ KUSTOMIZE_INSTALL_SCRIPT ?= "https://raw.githubusercontent.com/kubernetes-sigs/k .PHONY: kustomize kustomize: $(KUSTOMIZE) ## Download kustomize locally if necessary. $(KUSTOMIZE): $(LOCALBIN) +ifeq "$(uname -s)" "Darwin" +ifeq "$(uname -m)" "aarch64" + curl -s "https://raw.githubusercontent.com/everettraven/kubebuilder/feat/temp-arm-support/scripts/build-kustomize.sh" | bash -s -- $(KUSTOMIZE_VERSION) $(LOCALBIN) +endif +else curl -s $(KUSTOMIZE_INSTALL_SCRIPT) | bash -s -- $(subst v,,$(KUSTOMIZE_VERSION)) $(LOCALBIN) +endif .PHONY: controller-gen controller-gen: $(CONTROLLER_GEN) ## Download controller-gen locally if necessary. @@ -131,3 +137,9 @@ $(CONTROLLER_GEN): $(LOCALBIN) envtest: $(ENVTEST) ## Download envtest-setup locally if necessary. $(ENVTEST): $(LOCALBIN) GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-runtime/tools/setup-envtest@latest + + +ETCD_SCRIPT ?= "https://raw.githubusercontent.com/everettraven/kubebuilder/feat/temp-arm-support/scripts/build-etcd.sh" +.PHONY: etcd +etcd: ## build etcd locally + curl -s $(ETCD_SCRIPT) | bash -s diff --git a/testdata/project-v3/Makefile b/testdata/project-v3/Makefile index 4c98e81e111..878f1b8c0f3 100644 --- a/testdata/project-v3/Makefile +++ b/testdata/project-v3/Makefile @@ -120,7 +120,13 @@ KUSTOMIZE_INSTALL_SCRIPT ?= "https://raw.githubusercontent.com/kubernetes-sigs/k .PHONY: kustomize kustomize: $(KUSTOMIZE) ## Download kustomize locally if necessary. $(KUSTOMIZE): $(LOCALBIN) +ifeq "$(uname -s)" "Darwin" +ifeq "$(uname -m)" "aarch64" + curl -s "https://raw.githubusercontent.com/everettraven/kubebuilder/feat/temp-arm-support/scripts/build-kustomize.sh" | bash -s -- $(KUSTOMIZE_VERSION) $(LOCALBIN) +endif +else curl -s $(KUSTOMIZE_INSTALL_SCRIPT) | bash -s -- $(subst v,,$(KUSTOMIZE_VERSION)) $(LOCALBIN) +endif .PHONY: controller-gen controller-gen: $(CONTROLLER_GEN) ## Download controller-gen locally if necessary. @@ -131,3 +137,9 @@ $(CONTROLLER_GEN): $(LOCALBIN) envtest: $(ENVTEST) ## Download envtest-setup locally if necessary. $(ENVTEST): $(LOCALBIN) GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-runtime/tools/setup-envtest@latest + + +ETCD_SCRIPT ?= "https://raw.githubusercontent.com/everettraven/kubebuilder/feat/temp-arm-support/scripts/build-etcd.sh" +.PHONY: etcd +etcd: ## build etcd locally + curl -s $(ETCD_SCRIPT) | bash -s