mirror of
https://github.com/talent-plan/tinykv.git
synced 2025-01-14 14:20:16 +08:00
5e089a2cd1
Signed-off-by: Connor <zbk602423539@gmail.com> Co-authored-by: Nick Cameron <nrc@ncameron.org> Co-authored-by: linning <linningde25@gmail.com> Co-authored-by: YangKeao <keao.yang@yahoo.com> Co-authored-by: andylokandy <andylokandy@hotmail.com> Co-authored-by: Iosmanthus Teng <myosmanthustree@gmail.com>
107 lines
3.6 KiB
Makefile
107 lines
3.6 KiB
Makefile
TEST_PKGS := $(shell find . -iname "*_test.go" -exec dirname {} \; | \
|
|
sort -u | sed -e "s/^\./github.com\/pingcap\/pd/")
|
|
INTEGRATION_TEST_PKGS := $(shell find . -iname "*_test.go" -exec dirname {} \; | \
|
|
sort -u | sed -e "s/^\./github.com\/pingcap\/pd/" | grep -E "tests")
|
|
BASIC_TEST_PKGS := $(filter-out $(INTEGRATION_TEST_PKGS),$(TEST_PKGS))
|
|
|
|
PACKAGES := go list ./...
|
|
PACKAGE_DIRECTORIES := $(PACKAGES) | sed 's|github.com/pingcap-incubator/tinykv/scheduler/||'
|
|
GOCHECKER := awk '{ print } END { if (NR > 0) { exit 1 } }'
|
|
RETOOL := ./scripts/retool
|
|
OVERALLS := overalls
|
|
|
|
FAILPOINT_ENABLE := $$(find $$PWD/ -type d | grep -vE "(\.git|\.retools)" | xargs ./scripts/retool do failpoint-ctl enable)
|
|
FAILPOINT_DISABLE := $$(find $$PWD/ -type d | grep -vE "(\.git|\.retools)" | xargs ./scripts/retool do failpoint-ctl disable)
|
|
|
|
GOVER_MAJOR := $(shell go version | sed -E -e "s/.*go([0-9]+)[.]([0-9]+).*/\1/")
|
|
GOVER_MINOR := $(shell go version | sed -E -e "s/.*go([0-9]+)[.]([0-9]+).*/\2/")
|
|
GO111 := $(shell [ $(GOVER_MAJOR) -gt 1 ] || [ $(GOVER_MAJOR) -eq 1 ] && [ $(GOVER_MINOR) -ge 11 ]; echo $$?)
|
|
ifeq ($(GO111), 1)
|
|
$(error "go below 1.11 does not support modules")
|
|
endif
|
|
|
|
default: build
|
|
|
|
all: dev
|
|
|
|
dev: build check test
|
|
|
|
ci: build check basic-test
|
|
|
|
build: pd-server
|
|
pd-server: export GO111MODULE=on
|
|
pd-server:
|
|
ifeq ("$(WITH_RACE)", "1")
|
|
CGO_ENABLED=1 go build -race -gcflags '$(GCFLAGS)' -ldflags '$(LDFLAGS)' -o bin/pd-server cmd/pd-server/main.go
|
|
else
|
|
CGO_ENABLED=0 go build -gcflags '$(GCFLAGS)' -ldflags '$(LDFLAGS)' -o bin/pd-server cmd/pd-server/main.go
|
|
endif
|
|
|
|
test: retool-setup
|
|
# testing...
|
|
@$(DEADLOCK_ENABLE)
|
|
@$(FAILPOINT_ENABLE)
|
|
CGO_ENABLED=1 GO111MODULE=on go test -race -cover $(TEST_PKGS) || { $(FAILPOINT_DISABLE); $(DEADLOCK_DISABLE); exit 1; }
|
|
@$(FAILPOINT_DISABLE)
|
|
@$(DEADLOCK_DISABLE)
|
|
|
|
basic-test:
|
|
@$(FAILPOINT_ENABLE)
|
|
GO111MODULE=on go test $(BASIC_TEST_PKGS) || { $(FAILPOINT_DISABLE); exit 1; }
|
|
@$(FAILPOINT_DISABLE)
|
|
|
|
# These need to be fixed before they can be ran regularly
|
|
check-fail:
|
|
CGO_ENABLED=0 ./scripts/retool do gometalinter.v2 --disable-all \
|
|
--enable errcheck \
|
|
$$($(PACKAGE_DIRECTORIES))
|
|
CGO_ENABLED=0 ./scripts/retool do gosec $$($(PACKAGE_DIRECTORIES))
|
|
|
|
check-all: static lint tidy
|
|
@echo "checking"
|
|
|
|
retool-setup: export GO111MODULE=off
|
|
retool-setup:
|
|
@which retool >/dev/null 2>&1 || go get github.com/twitchtv/retool
|
|
@./scripts/retool sync
|
|
|
|
check: retool-setup check-all
|
|
|
|
static: export GO111MODULE=on
|
|
static:
|
|
@ # Not running vet and fmt through metalinter becauase it ends up looking at vendor
|
|
gofmt -s -l $$($(PACKAGE_DIRECTORIES)) 2>&1 | $(GOCHECKER)
|
|
./scripts/retool do govet --shadow $$($(PACKAGE_DIRECTORIES)) 2>&1 | $(GOCHECKER)
|
|
|
|
CGO_ENABLED=0 ./scripts/retool do golangci-lint run --disable-all --deadline 120s \
|
|
--enable misspell \
|
|
--enable staticcheck \
|
|
--enable ineffassign \
|
|
$$($(PACKAGE_DIRECTORIES))
|
|
|
|
lint:
|
|
@echo "linting"
|
|
CGO_ENABLED=0 ./scripts/retool do revive -formatter friendly -config revive.toml $$($(PACKAGES))
|
|
|
|
tidy:
|
|
@echo "go mod tidy"
|
|
GO111MODULE=on go mod tidy
|
|
git diff --quiet go.mod go.sum
|
|
|
|
travis_coverage: export GO111MODULE=on
|
|
travis_coverage:
|
|
ifeq ("$(TRAVIS_COVERAGE)", "1")
|
|
@$(FAILPOINT_ENABLE)
|
|
CGO_ENABLED=1 ./scripts/retool do $(OVERALLS) -concurrency=8 -project=github.com/pingcap-incubator/tinykv/scheduler -covermode=count -ignore='.git,vendor' -- -coverpkg=./... || { $(FAILPOINT_DISABLE); exit 1; }
|
|
@$(FAILPOINT_DISABLE)
|
|
else
|
|
@echo "coverage only runs in travis."
|
|
endif
|
|
|
|
clean-test:
|
|
rm -rf /tmp/test_pd*
|
|
rm -rf /tmp/pd-tests*
|
|
rm -rf /tmp/test_etcd*
|
|
|
|
.PHONY: all ci vendor clean-test tidy
|