From 06613d652bfaf3750f745fe113b3e0c9f8f2d055 Mon Sep 17 00:00:00 2001 From: Seth Hoenig Date: Wed, 16 Feb 2022 11:59:50 -0600 Subject: [PATCH] build: respect GOBIN when using make targets This PR updates GNUMakefile to respect $GOBIN if it is set in the environment or via an $GOENV file. Previously we hard-coded the output to $GOPATH/bin, which is not necessarily the desired behavior. --- .changelog/12077.txt | 3 +++ GNUmakefile | 16 +++++++++++----- 2 files changed, 14 insertions(+), 5 deletions(-) create mode 100644 .changelog/12077.txt diff --git a/.changelog/12077.txt b/.changelog/12077.txt new file mode 100644 index 000000000000..38309b812339 --- /dev/null +++ b/.changelog/12077.txt @@ -0,0 +1,3 @@ +```release-note:improvement +build: make targets now respect GOBIN variable +``` diff --git a/GNUmakefile b/GNUmakefile index 50b84edc0d52..57658aa7343e 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -12,7 +12,13 @@ ifneq (MSYS_NT,$(THIS_OS)) # GOPATH supports PATH style multi-paths; assume the first entry is favorable. # Necessary because new Circle images override GOPATH with multiple values. # See: https://discuss.circleci.com/t/gopath-is-set-to-multiple-directories/7174 -GOPATH=$(shell go env GOPATH | cut -d: -f1) +GOPATH := $(shell go env GOPATH | cut -d: -f1) +endif + +# Respect $GOBIN if set in environment or via $GOENV file. +BIN := $(shell go env GOBIN) +ifndef BIN +BIN := $(shell go env GOPATH)/bin endif GO_TAGS ?= @@ -253,15 +259,15 @@ dev: hclfmt ## Build for the current development platform @echo "==> Removing old development build..." @rm -f $(PROJECT_ROOT)/$(DEV_TARGET) @rm -f $(PROJECT_ROOT)/bin/nomad - @rm -f $(GOPATH)/bin/nomad + @rm -f $(BIN)/nomad @if [ -d vendor ]; then echo -e "==> WARNING: Found vendor directory. This may cause build errors, consider running 'rm -r vendor' or 'make clean' to remove.\n"; fi @$(MAKE) --no-print-directory \ $(DEV_TARGET) \ GO_TAGS="$(GO_TAGS) $(NOMAD_UI_TAG)" @mkdir -p $(PROJECT_ROOT)/bin - @mkdir -p $(GOPATH)/bin + @mkdir -p $(BIN) @cp $(PROJECT_ROOT)/$(DEV_TARGET) $(PROJECT_ROOT)/bin/ - @cp $(PROJECT_ROOT)/$(DEV_TARGET) $(GOPATH)/bin + @cp $(PROJECT_ROOT)/$(DEV_TARGET) $(BIN) .PHONY: prerelease prerelease: GO_TAGS=ui codegen_generated release @@ -341,7 +347,7 @@ clean: ## Remove build artifacts @rm -rf "$(PROJECT_ROOT)/bin/" @rm -rf "$(PROJECT_ROOT)/pkg/" @rm -rf "$(PROJECT_ROOT)/vendor/" - @rm -f "$(GOPATH)/bin/nomad" + @rm -f "$(BIN)/nomad" .PHONY: testcluster testcluster: ## Bring up a Linux test cluster using Vagrant. Set PROVIDER if necessary.