From 72326d3b6b460f666414296a77a168eab183b062 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. --- GNUmakefile | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) 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.