Add a script to check the Go version before building dex. This
gives a nice error message rather than just failing to compile.
With changes:
    $ go version
    go version go1.6.4 linux/amd64
    $ make
    ERROR: dex requires Go version 1.7+. Please update your Go installation: https://golang.org/dl/
    Makefile:93: recipe for target 'check-go-version' failed
    make: *** [check-go-version] Error 2
Checks only added for building the actual binary, not tests, since
this is aimed at users just starting off with the project.
		
	
		
			
				
	
	
		
			107 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
			
		
		
	
	
			107 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
PROJ=dex
 | 
						|
ORG_PATH=github.com/coreos
 | 
						|
REPO_PATH=$(ORG_PATH)/$(PROJ)
 | 
						|
export PATH := $(PWD)/bin:$(PATH)
 | 
						|
 | 
						|
VERSION=$(shell ./scripts/git-version)
 | 
						|
 | 
						|
DOCKER_REPO=quay.io/coreos/dex
 | 
						|
DOCKER_IMAGE=$(DOCKER_REPO):$(VERSION)
 | 
						|
 | 
						|
$( shell mkdir -p bin )
 | 
						|
$( shell mkdir -p _output/images )
 | 
						|
$( shell mkdir -p _output/bin )
 | 
						|
 | 
						|
user=$(shell id -u -n)
 | 
						|
group=$(shell id -g -n)
 | 
						|
 | 
						|
export GOBIN=$(PWD)/bin
 | 
						|
# Prefer ./bin instead of system packages for things like protoc, where we want
 | 
						|
# to use the version dex uses, not whatever a developer has installed.
 | 
						|
export PATH=$(GOBIN):$(shell printenv PATH)
 | 
						|
export GO15VENDOREXPERIMENT=1
 | 
						|
 | 
						|
LD_FLAGS="-w -X $(REPO_PATH)/version.Version=$(VERSION)"
 | 
						|
 | 
						|
build: bin/dex bin/example-app
 | 
						|
 | 
						|
bin/dex: check-go-version
 | 
						|
	@go install -v -ldflags $(LD_FLAGS) $(REPO_PATH)/cmd/dex
 | 
						|
 | 
						|
bin/example-app: check-go-version
 | 
						|
	@go install -v -ldflags $(LD_FLAGS) $(REPO_PATH)/cmd/example-app
 | 
						|
 | 
						|
.PHONY: release-binary
 | 
						|
release-binary:
 | 
						|
	@go build -o _output/bin/dex -v -ldflags $(LD_FLAGS) $(REPO_PATH)/cmd/dex
 | 
						|
 | 
						|
test:
 | 
						|
	@go test -v -i $(shell go list ./... | grep -v '/vendor/')
 | 
						|
	@go test -v $(shell go list ./... | grep -v '/vendor/')
 | 
						|
 | 
						|
testrace:
 | 
						|
	@go test -v -i --race $(shell go list ./... | grep -v '/vendor/')
 | 
						|
	@go test -v --race $(shell go list ./... | grep -v '/vendor/')
 | 
						|
 | 
						|
vet:
 | 
						|
	@go vet $(shell go list ./... | grep -v '/vendor/')
 | 
						|
 | 
						|
fmt:
 | 
						|
	@go fmt $(shell go list ./... | grep -v '/vendor/')
 | 
						|
 | 
						|
lint:
 | 
						|
	@for package in $(shell go list ./... | grep -v '/vendor/' | grep -v '/api'); do \
 | 
						|
      golint -set_exit_status $$package $$i || exit 1; \
 | 
						|
	done
 | 
						|
 | 
						|
_output/bin/dex:
 | 
						|
	# Using rkt to build the dex binary.
 | 
						|
	@./scripts/rkt-build
 | 
						|
	@sudo chown $(user):$(group) _output/bin/dex
 | 
						|
 | 
						|
_output/images/library-alpine-3.4.aci:
 | 
						|
	@mkdir -p _output/images
 | 
						|
	# Using docker2aci to get a base ACI to build from.
 | 
						|
	@docker2aci docker://alpine:3.4
 | 
						|
	@mv library-alpine-3.4.aci _output/images/library-alpine-3.4.aci
 | 
						|
 | 
						|
.PHONY: aci
 | 
						|
aci: clean-release _output/bin/dex _output/images/library-alpine-3.4.aci
 | 
						|
	# Using acbuild to build a application container image.
 | 
						|
	@sudo ./scripts/build-aci ./_output/images/library-alpine-3.4.aci
 | 
						|
	@sudo chown $(user):$(group) _output/images/dex.aci
 | 
						|
	@mv _output/images/dex.aci _output/images/dex-$(VERSION)-linux-amd64.aci
 | 
						|
 | 
						|
.PHONY: docker-image
 | 
						|
docker-image: clean-release _output/bin/dex
 | 
						|
	@sudo docker build -t $(DOCKER_IMAGE) .
 | 
						|
 | 
						|
.PHONY: grpc
 | 
						|
grpc: api/api.pb.go
 | 
						|
 | 
						|
api/api.pb.go: api/api.proto bin/protoc bin/protoc-gen-go
 | 
						|
	@protoc --go_out=plugins=grpc:. api/*.proto
 | 
						|
 | 
						|
bin/protoc: scripts/get-protoc
 | 
						|
	@./scripts/get-protoc bin/protoc
 | 
						|
 | 
						|
bin/protoc-gen-go:
 | 
						|
	@go install -v $(REPO_PATH)/vendor/github.com/golang/protobuf/protoc-gen-go
 | 
						|
 | 
						|
.PHONY: check-go-version
 | 
						|
check-go-version:
 | 
						|
	@./scripts/check-go-version
 | 
						|
 | 
						|
clean: clean-release
 | 
						|
	@rm -rf bin/
 | 
						|
 | 
						|
.PHONY: clean-release
 | 
						|
clean-release:
 | 
						|
	@rm -rf _output/
 | 
						|
 | 
						|
testall: testrace vet fmt lint
 | 
						|
 | 
						|
FORCE:
 | 
						|
 | 
						|
.PHONY: test testrace vet fmt lint testall
 |