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\//}