From 628404e7d20bb313de264157b4f5b18dbe63d4a8 Mon Sep 17 00:00:00 2001 From: Richard Hartmann Date: Wed, 27 Jan 2016 08:25:43 +0100 Subject: [PATCH] Update Makefile.COMMON from utils repo --- Makefile.COMMON | 74 +++++++++++++++++++++++++++++-------------------- 1 file changed, 44 insertions(+), 30 deletions(-) diff --git a/Makefile.COMMON b/Makefile.COMMON index 29f8ec1..ac286fd 100644 --- a/Makefile.COMMON +++ b/Makefile.COMMON @@ -44,10 +44,10 @@ SRC ?= $(shell find . -type f -name "*.go" ! -path "./.build/*") GOOS ?= $(shell uname | tr A-Z a-z) GOARCH ?= $(subst x86_64,amd64,$(patsubst i%86,386,$(shell uname -m))) -GO_VERSION ?= 1.5.1 -GOURL ?= https://golang.org/dl -GOPKG ?= go$(GO_VERSION).$(GOOS)-$(GOARCH).tar.gz -GOPATH := $(CURDIR)/.build/gopath +GO_VERSION ?= 1.5.3 +GOPATH ?= $(CURDIR)/.build/gopath +ROOTPKG ?= github.com/prometheus/$(TARGET) +SELFLINK ?= $(GOPATH)/src/$(ROOTPKG) # Check for the correct version of go in the path. If we find it, use it. # Otherwise, prepare to build go locally. @@ -56,10 +56,20 @@ ifeq ($(shell command -v "go" >/dev/null && go version | sed -e 's/^[^0-9.]*\([0 GOFMT ?= $(shell command -v "gofmt") GO ?= GOPATH=$(GOPATH) $(GOCC) else + GOURL ?= https://golang.org/dl + GOPKG ?= go$(GO_VERSION).$(GOOS)-$(GOARCH).tar.gz GOROOT ?= $(CURDIR)/.build/go$(GO_VERSION) GOCC ?= $(GOROOT)/bin/go GOFMT ?= $(GOROOT)/bin/gofmt - GO ?= GOROOT=$(GOROOT) GOPATH=$(GOPATH) $(GOCC) + GO ?= GOPATH=$(GOPATH) GOROOT=$(GOROOT) $(GOCC) +endif + +# Use vendored dependencies if available. Otherwise try to download them. +ifneq (,$(wildcard vendor)) + DEPENDENCIES := $(shell find vendor/ -type f -iname '*.go') + GO := GO15VENDOREXPERIMENT=1 $(GO) +else + DEPENDENCIES := dependencies-stamp endif # Never honor GOBIN, should it be set at all. @@ -68,36 +78,17 @@ unexport GOBIN SUFFIX ?= $(GOOS)-$(GOARCH) BINARY ?= $(TARGET) ARCHIVE ?= $(TARGET)-$(VERSION).$(SUFFIX).tar.gz -ROOTPKG ?= github.com/prometheus/$(TARGET) -SELFLINK ?= $(GOPATH)/src/$(ROOTPKG) default: $(BINARY) -$(GOCC): - @echo Go version $(GO_VERSION) required but not found in PATH. - @echo About to download and install go$(GO_VERSION) to $(GOROOT) - @echo Abort now if you want to manually install it system-wide instead. - @echo - @sleep 5 - mkdir -p $(GOROOT) - curl -L $(GOURL)/$(GOPKG) | tar -C $(GOROOT) --strip 1 -xz - -$(SELFLINK): - mkdir -p $(dir $@) - ln -s $(CURDIR) $@ - -dependencies-stamp: $(GOCC) $(SRC) | $(SELFLINK) - $(GO) get -d - touch $@ - -$(BINARY): $(GOCC) $(SRC) dependencies-stamp Makefile Makefile.COMMON - $(GO) build $(GOFLAGS) -o $@ +$(BINARY): $(GOCC) $(SRC) $(DEPENDENCIES) Makefile Makefile.COMMON | $(SELFLINK) + cd $(SELFLINK) && $(GO) build $(GOFLAGS) -o $@ .PHONY: archive archive: $(ARCHIVE) $(ARCHIVE): $(BINARY) - tar --owner=root --group=root -czf $@ $< + tar -czf $@ $< .PHONY: tag tag: @@ -105,13 +96,36 @@ tag: git push --tags .PHONY: test -test: $(GOCC) dependencies-stamp - $(GO) test ./... +test: $(GOCC) $(DEPENDENCIES) | $(SELFLINK) + cd $(SELFLINK) && $(GO) test $$($(GO) list ./... | grep -v /vendor/) .PHONY: format format: $(GOCC) - find . -iname '*.go' | egrep -v "^\./\.build|./generated|\./Godeps|\.(l|y)\.go" | xargs -n1 $(GOFMT) -w -s=true + find . -iname '*.go' | egrep -v "^\./\.build|./generated|\./vendor|\.(l|y)\.go" | xargs -n1 $(GOFMT) -w -s=true .PHONY: clean clean: rm -rf $(BINARY) $(ARCHIVE) .build *-stamp + + + +$(GOCC): + @echo Go version $(GO_VERSION) required but not found in PATH. + @echo About to download and install go$(GO_VERSION) to $(GOROOT) + @echo Abort now if you want to manually install it system-wide instead. + @echo + @sleep 5 + mkdir -p .build + # The archive contains a single directory called 'go/'. + curl -L $(GOURL)/$(GOPKG) | tar -C .build -xzf - + rm -rf $(GOROOT) + mv .build/go $(GOROOT) + +$(SELFLINK): + mkdir -p $(dir $@) + ln -s $(CURDIR) $@ + +# Download dependencies if project doesn't vendor them. +dependencies-stamp: $(GOCC) $(SRC) | $(SELFLINK) + $(GO) get -d + touch $@ -- 2.25.1