github.com/pingcap/tidb-lightning@v5.0.0-rc.0.20210428090220-84b649866577+incompatible/Makefile (about) 1 ### Makefile for tidb-lightning 2 3 LDFLAGS += -X "github.com/pingcap/tidb-lightning/lightning/common.ReleaseVersion=$(shell git describe --tags --dirty="-dev")" 4 LDFLAGS += -X "github.com/pingcap/tidb-lightning/lightning/common.BuildTS=$(shell date -u '+%Y-%m-%d %I:%M:%S')" 5 LDFLAGS += -X "github.com/pingcap/tidb-lightning/lightning/common.GitHash=$(shell git rev-parse HEAD)" 6 LDFLAGS += -X "github.com/pingcap/tidb-lightning/lightning/common.GitBranch=$(shell git rev-parse --abbrev-ref HEAD)" 7 LDFLAGS += -X "github.com/pingcap/tidb-lightning/lightning/common.GoVersion=$(shell go version)" 8 9 LIGHTNING_BIN := bin/tidb-lightning 10 LIGHTNING_CTL_BIN := bin/tidb-lightning-ctl 11 FAILPOINT_CTL_BIN := tools/bin/failpoint-ctl 12 REVIVE_BIN := tools/bin/revive 13 GOLANGCI_LINT_BIN := tools/bin/golangci-lint 14 VFSGENDEV_BIN := tools/bin/vfsgendev 15 TEST_DIR := /tmp/lightning_test_result 16 # this is hard-coded unless we want to generate *.toml on fly. 17 18 path_to_add := $(addsuffix /bin,$(subst :,/bin:,$(GOPATH))) 19 export PATH := $(path_to_add):$(PATH) 20 21 GO := go 22 GOBUILD := GO111MODULE=on CGO_ENABLED=1 $(GO) build 23 GOTEST := GO111MODULE=on CGO_ENABLED=1 $(GO) test -p 3 24 PREPARE_MOD := cp go.mod1 go.mod && cp go.sum1 go.sum 25 FINISH_MOD := cp go.mod go.mod1 && cp go.sum go.sum1 26 27 ARCH := "`uname -s`" 28 LINUX := "Linux" 29 MAC := "Darwin" 30 PACKAGES := $$(go list ./...| grep -vE 'vendor|cmd|test|proto|diff|bin|fuzz') 31 FILES := $$(find lightning cmd -name '*.go' -type f -not -name '*.pb.go' -not -name '*_generated.go') 32 33 FAILPOINT_ENABLE := $$($(FAILPOINT_CTL_BIN) enable $$PWD/lightning/) 34 FAILPOINT_DISABLE := $$($(FAILPOINT_CTL_BIN) disable $$PWD/lightning/) 35 36 RACE_FLAG = 37 ifeq ("$(WITH_RACE)", "1") 38 RACE_FLAG = -race 39 GOBUILD = GOPATH=$(GOPATH) CGO_ENABLED=1 $(GO) build 40 endif 41 42 .PHONY: all clean lightning lightning-ctl test lightning_for_integration_test \ 43 integration_test coverage update ensure_failpoint_ctl failpoint_enable failpoint_disable \ 44 check vet fmt revive web 45 46 default: clean lightning lightning-ctl checksuccess 47 48 prepare: 49 $(PREPARE_MOD) 50 51 finish-prepare: 52 $(FINISH_MOD) 53 54 clean: 55 rm -f $(LIGHTNING_BIN) $(LIGHTNING_CTRL_BIN) $(FAILPOINT_CTL_BIN) $(REVIVE_BIN) $(VFSGENDEV_BIN) go.mod go.sum 56 57 checksuccess: 58 @if [ -f $(LIGHTNING_BIN) ] && [ -f $(LIGHTNING_CTRL_BIN) ]; \ 59 then \ 60 echo "Lightning build successfully :-) !" ; \ 61 fi 62 63 %_generated.go: %.rl 64 ragel -Z -G2 -o tmp_parser.go $< 65 @echo '// Code generated by ragel DO NOT EDIT.' | cat - tmp_parser.go | sed 's|//line |//.... |g' > $@ 66 @rm tmp_parser.go 67 68 $(VFSGENDEV_BIN): 69 cd tools && $(GOBUILD) -o ../$(VFSGENDEV_BIN) github.com/shurcooL/vfsgen/cmd/vfsgendev 70 71 data_parsers: $(VFSGENDEV_BIN) lightning/mydump/parser_generated.go 72 PATH="$(GOPATH)/bin":"$(PATH)" protoc -I. -I"$(GOPATH)/src" lightning/checkpoints/file_checkpoints.proto --gogofaster_out=. 73 $(VFSGENDEV_BIN) -source='"github.com/pingcap/tidb-lightning/lightning/web".Res' && mv res_vfsdata.go lightning/web/ 74 75 web: 76 cd web && npm install && npm run build 77 78 lightning_for_web: 79 $(PREPARE_MOD) 80 $(GOBUILD) $(RACE_FLAG) -tags dev -ldflags '$(LDFLAGS)' -o $(LIGHTNING_BIN) cmd/tidb-lightning/main.go 81 82 lightning: 83 $(PREPARE_MOD) 84 $(GOBUILD) $(RACE_FLAG) -ldflags '$(LDFLAGS)' -o $(LIGHTNING_BIN) cmd/tidb-lightning/main.go 85 86 lightning-ctl: 87 $(PREPARE_MOD) 88 $(GOBUILD) $(RACE_FLAG) -ldflags '$(LDFLAGS)' -o $(LIGHTNING_CTL_BIN) cmd/tidb-lightning-ctl/main.go 89 90 test: 91 $(PREPARE_MOD) 92 @make ensure_failpoint_ctl 93 mkdir -p "$(TEST_DIR)" 94 $(FAILPOINT_ENABLE) 95 @export log_level=error;\ 96 $(GOTEST) -cover -covermode=count -coverprofile="$(TEST_DIR)/cov.unit.out" $(PACKAGES) || ( $(FAILPOINT_DISABLE) && exit 1 ) 97 $(FAILPOINT_DISABLE) 98 99 lightning_for_integration_test: 100 $(PREPARE_MOD) 101 @make ensure_failpoint_ctl 102 $(FAILPOINT_ENABLE) 103 $(GOTEST) -c -cover -covermode=count \ 104 -coverpkg=github.com/pingcap/tidb-lightning/... \ 105 -o $(LIGHTNING_BIN).test \ 106 github.com/pingcap/tidb-lightning/cmd/tidb-lightning || ( $(FAILPOINT_DISABLE) && exit 1 ) 107 $(GOTEST) -c -cover -covermode=count \ 108 -coverpkg=github.com/pingcap/tidb-lightning/... \ 109 -o $(LIGHTNING_CTL_BIN).test \ 110 github.com/pingcap/tidb-lightning/cmd/tidb-lightning-ctl || ( $(FAILPOINT_DISABLE) && exit 1 ) 111 $(GOBUILD) $(RACE_FLAG) -o bin/parquet_gen tests/checkpoint_parquet/*.go 112 $(FAILPOINT_DISABLE) 113 114 integration_test: lightning_for_integration_test 115 @which bin/tidb-server 116 @which bin/tikv-server 117 @which bin/pd-server 118 @which bin/tikv-importer 119 tests/run.sh 120 121 coverage: 122 GO111MODULE=off go get github.com/wadey/gocovmerge 123 gocovmerge "$(TEST_DIR)"/cov.* | grep -vE ".*.pb.go|.*__failpoint_binding__.go" > "$(TEST_DIR)/all_cov.out" 124 ifeq ("$(JenkinsCI)", "1") 125 GO111MODULE=off go get github.com/mattn/goveralls 126 @goveralls -coverprofile=$(TEST_DIR)/all_cov.out -service=jenkins-ci -repotoken $(COVERALLS_TOKEN) 127 else 128 go tool cover -html "$(TEST_DIR)/all_cov.out" -o "$(TEST_DIR)/all_cov.html" 129 grep -F '<option' "$(TEST_DIR)/all_cov.html" 130 endif 131 132 update: 133 $(PREPARE_MOD) 134 GO111MODULE=on go mod verify 135 GO111MODULE=on go mod tidy 136 $(FINISH_MOD) 137 138 manual_update: 139 GO111MODULE=on go mod verify 140 GO111MODULE=on go mod tidy 141 $(FINISH_MOD) 142 143 $(FAILPOINT_CTL_BIN): 144 cd tools && $(GOBUILD) -o ../$(FAILPOINT_CTL_BIN) github.com/pingcap/failpoint/failpoint-ctl 145 146 ensure_failpoint_ctl: $(FAILPOINT_CTL_BIN) 147 @[ "$$(grep -h failpoint go.mod1 tools/go.mod | uniq | wc -l)" -eq 1 ] || \ 148 ( echo 'failpoint version of go.mod and tools/go.mod differ' && false ) 149 150 failpoint_enable: ensure_failpoint_ctl 151 $(FAILPOINT_ENABLE) 152 153 failpoint_disable: ensure_failpoint_ctl 154 $(FAILPOINT_DISABLE) 155 156 157 check: 158 @make prepare 159 GO111MODULE=on go mod tidy 160 git diff --quiet go.mod go.sum || ("$(FINISH_MOD)" && exit 1) 161 @make fmt revive vet lint 162 163 fmt: 164 gofmt -s -l -w $(FILES) 165 166 $(REVIVE_BIN): 167 cd tools && $(GOBUILD) -o ../$(REVIVE_BIN) github.com/mgechev/revive 168 169 revive: $(REVIVE_BIN) 170 $(REVIVE_BIN) -formatter friendly -config tools/revive.toml $(FILES) 171 172 vet: 173 go vet -unreachable=false $(PACKAGES) 174 # Not checking unreachable since Ragel-generated code do contain unreachable branches and 175 # go vet cannot be selectively silenced (https://github.com/golang/go/issues/17058). 176 # This is enabled in revive instead. 177 178 $(GOLANGCI_LINT_BIN): 179 cd tools && $(GOBUILD) -o ../$(GOLANGCI_LINT_BIN) github.com/golangci/golangci-lint/cmd/golangci-lint 180 181 lint: $(GOLANGCI_LINT_BIN) 182 export PACKAGES=$(PACKAGES) && \ 183 $(GOLANGCI_LINT_BIN) run $${PACKAGES//github.com\/pingcap\/tidb-lightning\//}