mirror of
https://github.com/minio/minio.git
synced 2024-12-25 22:55:54 -05:00
c59b995f7b
This commit ditches running verifiers automatically when just building the server. It retains the verifiers when running tests. There is very little point to running the verifiers each time a developer builds the library but has no intent of running the tests. They're expensive in time; this commit halves the build time on my system, from 57 seconds to 29 seconds. This is because verifiers updates the libraries from GitHub each time, which is slightly wasteful. Additionally, computing cyclomatic complexity is expensive computationally and isn't necessary to build the library. Additionally, this allows the library to be built offline. It no longer requires internet to run make.
105 lines
2.8 KiB
Makefile
105 lines
2.8 KiB
Makefile
PWD := $(shell pwd)
|
|
GOPATH := $(shell go env GOPATH)
|
|
LDFLAGS := $(shell go run buildscripts/gen-ldflags.go)
|
|
|
|
BUILD_LDFLAGS := '$(LDFLAGS)'
|
|
|
|
all: build
|
|
|
|
checks:
|
|
@echo "Check deps"
|
|
@(env bash $(PWD)/buildscripts/checkdeps.sh)
|
|
@echo "Checking project is in GOPATH"
|
|
@(env bash $(PWD)/buildscripts/checkgopath.sh)
|
|
|
|
getdeps: checks
|
|
@echo "Installing golint" && go get -u github.com/golang/lint/golint
|
|
@echo "Installing gocyclo" && go get -u github.com/fzipp/gocyclo
|
|
@echo "Installing deadcode" && go get -u github.com/remyoudompheng/go-misc/deadcode
|
|
@echo "Installing misspell" && go get -u github.com/client9/misspell/cmd/misspell
|
|
@echo "Installing ineffassign" && go get -u github.com/gordonklaus/ineffassign
|
|
|
|
verifiers: getdeps vet fmt lint cyclo spelling
|
|
|
|
vet:
|
|
@echo "Running $@"
|
|
@go tool vet -atomic -bool -copylocks -nilfunc -printf -shadow -rangeloops -unreachable -unsafeptr -unusedresult cmd
|
|
@go tool vet -atomic -bool -copylocks -nilfunc -printf -shadow -rangeloops -unreachable -unsafeptr -unusedresult pkg
|
|
|
|
fmt:
|
|
@echo "Running $@"
|
|
@gofmt -d cmd
|
|
@gofmt -d pkg
|
|
|
|
lint:
|
|
@echo "Running $@"
|
|
@${GOPATH}/bin/golint -set_exit_status github.com/minio/minio/cmd...
|
|
@${GOPATH}/bin/golint -set_exit_status github.com/minio/minio/pkg...
|
|
|
|
ineffassign:
|
|
@echo "Running $@"
|
|
@${GOPATH}/bin/ineffassign .
|
|
|
|
cyclo:
|
|
@echo "Running $@"
|
|
@${GOPATH}/bin/gocyclo -over 100 cmd
|
|
@${GOPATH}/bin/gocyclo -over 100 pkg
|
|
|
|
deadcode:
|
|
@${GOPATH}/bin/deadcode
|
|
|
|
spelling:
|
|
@${GOPATH}/bin/misspell -error `find cmd/`
|
|
@${GOPATH}/bin/misspell -error `find pkg/`
|
|
@${GOPATH}/bin/misspell -error `find docs/`
|
|
|
|
# Builds minio, runs the verifiers then runs the tests.
|
|
check: test
|
|
test: verifiers build
|
|
@echo "Running all minio testing"
|
|
@go test $(GOFLAGS) .
|
|
@go test $(GOFLAGS) github.com/minio/minio/cmd...
|
|
@go test $(GOFLAGS) github.com/minio/minio/pkg...
|
|
|
|
coverage: build
|
|
@echo "Running all coverage for minio"
|
|
@./buildscripts/go-coverage.sh
|
|
|
|
# Builds minio locally.
|
|
build:
|
|
@echo "Building minio to $(PWD)/minio ..."
|
|
@CGO_ENABLED=0 go build --ldflags $(BUILD_LDFLAGS) -o $(PWD)/minio
|
|
|
|
pkg-add:
|
|
@echo "Adding new package $(PKG)"
|
|
@${GOPATH}/bin/govendor add $(PKG)
|
|
|
|
pkg-update:
|
|
@echo "Updating new package $(PKG)"
|
|
@${GOPATH}/bin/govendor update $(PKG)
|
|
|
|
pkg-remove:
|
|
@echo "Remove new package $(PKG)"
|
|
@${GOPATH}/bin/govendor remove $(PKG)
|
|
|
|
pkg-list:
|
|
@$(GOPATH)/bin/govendor list
|
|
|
|
# Builds minio and installs it to $GOPATH/bin.
|
|
install: build
|
|
@echo "Installing minio at $(GOPATH)/bin/minio ..."
|
|
@cp $(PWD)/minio $(GOPATH)/bin/minio
|
|
@echo "Check 'minio -h' for help."
|
|
|
|
release: verifiers
|
|
@MINIO_RELEASE=RELEASE ./buildscripts/build.sh
|
|
|
|
experimental: verifiers
|
|
@MINIO_RELEASE=EXPERIMENTAL ./buildscripts/build.sh
|
|
|
|
clean:
|
|
@echo "Cleaning up all the generated files"
|
|
@find . -name '*.test' | xargs rm -fv
|
|
@rm -rf build
|
|
@rm -rf release
|