-
Notifications
You must be signed in to change notification settings - Fork 32
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #135 from eve-network/hoa/refactor
refactor: update eve and add Makefile
- Loading branch information
Showing
20 changed files
with
482 additions
and
252 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,206 @@ | ||
#!/usr/bin/make -f | ||
|
||
PACKAGES_SIMTEST=$(shell go list ./... | grep '/simulation') | ||
VERSION := $(shell echo $(shell git describe --tags) | sed 's/^v//') | ||
COMMIT := $(shell git log -1 --format='%H') | ||
LEDGER_ENABLED ?= true | ||
SDK_PACK := $(shell go list -m github.com/cosmos/cosmos-sdk | sed 's/ /\@/g') | ||
BINDIR ?= $(GOPATH)/bin | ||
SIMAPP = ./app | ||
|
||
# for dockerized protobuf tools | ||
DOCKER := $(shell which docker) | ||
BUF_IMAGE=bufbuild/buf@sha256:3cb1f8a4b48bd5ad8f09168f10f607ddc318af202f5c057d52a45216793d85e5 #v1.4.0 | ||
DOCKER_BUF := $(DOCKER) run --rm -v $(CURDIR):/workspace --workdir /workspace $(BUF_IMAGE) | ||
HTTPS_GIT := https://github.com/eve-network/eve.git | ||
|
||
export GO111MODULE = on | ||
|
||
# process build tags | ||
|
||
build_tags = netgo | ||
ifeq ($(LEDGER_ENABLED),true) | ||
ifeq ($(OS),Windows_NT) | ||
GCCEXE = $(shell where gcc.exe 2> NUL) | ||
ifeq ($(GCCEXE),) | ||
$(error gcc.exe not installed for ledger support, please install or set LEDGER_ENABLED=false) | ||
else | ||
build_tags += ledger | ||
endif | ||
else | ||
UNAME_S = $(shell uname -s) | ||
ifeq ($(UNAME_S),OpenBSD) | ||
$(warning OpenBSD detected, disabling ledger support (https://github.com/cosmos/cosmos-sdk/issues/1988)) | ||
else | ||
GCC = $(shell command -v gcc 2> /dev/null) | ||
ifeq ($(GCC),) | ||
$(error gcc not installed for ledger support, please install or set LEDGER_ENABLED=false) | ||
else | ||
build_tags += ledger | ||
endif | ||
endif | ||
endif | ||
endif | ||
|
||
ifeq ($(WITH_CLEVELDB),yes) | ||
build_tags += gcc | ||
endif | ||
build_tags += $(BUILD_TAGS) | ||
build_tags := $(strip $(build_tags)) | ||
|
||
whitespace := | ||
empty = $(whitespace) $(whitespace) | ||
comma := , | ||
build_tags_comma_sep := $(subst $(empty),$(comma),$(build_tags)) | ||
|
||
# process linker flags | ||
|
||
ldflags = -X github.com/cosmos/cosmos-sdk/version.Name=eve \ | ||
-X github.com/cosmos/cosmos-sdk/version.AppName=eved \ | ||
-X github.com/cosmos/cosmos-sdk/version.Version=$(VERSION) \ | ||
-X github.com/cosmos/cosmos-sdk/version.Commit=$(COMMIT) \ | ||
-X github.com/eve-network/eve/app.Bech32Prefix=eve \ | ||
-X "github.com/cosmos/cosmos-sdk/version.BuildTags=$(build_tags_comma_sep)" | ||
|
||
ifeq ($(WITH_CLEVELDB),yes) | ||
ldflags += -X github.com/cosmos/cosmos-sdk/types.DBBackend=cleveldb | ||
endif | ||
ifeq ($(LINK_STATICALLY),true) | ||
ldflags += -linkmode=external -extldflags "-Wl,-z,muldefs -static" | ||
endif | ||
ldflags += $(LDFLAGS) | ||
ldflags := $(strip $(ldflags)) | ||
|
||
BUILD_FLAGS := -tags "$(build_tags_comma_sep)" -ldflags '$(ldflags)' -trimpath | ||
|
||
# The below include contains the tools and runsim targets. | ||
include contrib/devtools/Makefile | ||
|
||
all: install lint test | ||
|
||
build: go.sum | ||
ifeq ($(OS),Windows_NT) | ||
$(error eved server not supported. Use "make build-windows-client" for client) | ||
exit 1 | ||
else | ||
go build -mod=readonly $(BUILD_FLAGS) -o build/eved ./cmd/eved | ||
endif | ||
|
||
build-windows-client: go.sum | ||
GOOS=windows GOARCH=amd64 go build -mod=readonly $(BUILD_FLAGS) -o build/eved.exe ./cmd/eved | ||
|
||
build-contract-tests-hooks: | ||
ifeq ($(OS),Windows_NT) | ||
go build -mod=readonly $(BUILD_FLAGS) -o build/contract_tests.exe ./cmd/contract_tests | ||
else | ||
go build -mod=readonly $(BUILD_FLAGS) -o build/contract_tests ./cmd/contract_tests | ||
endif | ||
|
||
install: go.sum | ||
go install -mod=readonly $(BUILD_FLAGS) ./cmd/eved | ||
|
||
######################################## | ||
### Tools & dependencies | ||
|
||
go-mod-cache: go.sum | ||
@echo "--> Download go modules to local cache" | ||
@go mod download | ||
|
||
go.sum: go.mod | ||
@echo "--> Ensure dependencies have not been modified" | ||
@go mod verify | ||
|
||
draw-deps: | ||
@# requires brew install graphviz or apt-get install graphviz | ||
go install github.com/RobotsAndPencils/goviz@latest | ||
@goviz -i ./cmd/eved -d 2 | dot -Tpng -o dependency-graph.png | ||
|
||
clean: | ||
rm -rf snapcraft-local.yaml build/ | ||
|
||
distclean: clean | ||
rm -rf vendor/ | ||
|
||
######################################## | ||
### Testing | ||
|
||
test: test-unit | ||
test-all: test-race test-cover test-system | ||
|
||
test-unit: | ||
@VERSION=$(VERSION) go test -mod=readonly -tags='ledger test_ledger_mock' ./... | ||
|
||
test-race: | ||
@VERSION=$(VERSION) go test -mod=readonly -race -tags='ledger test_ledger_mock' ./... | ||
|
||
test-cover: | ||
@go test -mod=readonly -timeout 30m -race -coverprofile=coverage.txt -covermode=atomic -tags='ledger test_ledger_mock' ./... | ||
|
||
benchmark: | ||
@go test -mod=readonly -bench=. ./... | ||
|
||
test-sim-import-export: runsim | ||
@echo "Running application import/export simulation. This may take several minutes..." | ||
@$(BINDIR)/runsim -Jobs=4 -SimAppPkg=$(SIMAPP) -ExitOnFail 50 5 TestAppImportExport | ||
|
||
test-sim-multi-seed-short: runsim | ||
@echo "Running short multi-seed application simulation. This may take awhile!" | ||
@$(BINDIR)/runsim -Jobs=4 -SimAppPkg=$(SIMAPP) -ExitOnFail 50 5 TestFullAppSimulation | ||
|
||
test-sim-deterministic: runsim | ||
@echo "Running application deterministic simulation. This may take awhile!" | ||
@$(BINDIR)/runsim -Jobs=4 -SimAppPkg=$(SIMAPP) -ExitOnFail 1 1 TestAppStateDeterminism | ||
|
||
test-system: install | ||
$(MAKE) -C tests/system/ test | ||
|
||
############################################################################### | ||
### Linting ### | ||
############################################################################### | ||
|
||
format-tools: | ||
go install mvdan.cc/gofumpt@v0.4.0 | ||
go install github.com/client9/misspell/cmd/misspell@v0.3.4 | ||
go install github.com/daixiang0/gci@v0.11.2 | ||
|
||
lint: format-tools | ||
golangci-lint run --tests=false | ||
find . -name '*.go' -type f -not -path "./vendor*" -not -path "./tests/system/vendor*" -not -path "*.git*" -not -path "*_test.go" | xargs gofumpt -d | ||
|
||
format: format-tools | ||
find . -name '*.go' -type f -not -path "./vendor*" -not -path "./tests/system/vendor*" -not -path "*.git*" -not -path "./client/lcd/statik/statik.go" | xargs gofumpt -w | ||
find . -name '*.go' -type f -not -path "./vendor*" -not -path "./tests/system/vendor*" -not -path "*.git*" -not -path "./client/lcd/statik/statik.go" | xargs misspell -w | ||
find . -name '*.go' -type f -not -path "./vendor*" -not -path "./tests/system/vendor*" -not -path "*.git*" -not -path "./client/lcd/statik/statik.go" | xargs gci write --skip-generated -s standard -s default -s "prefix(cosmossdk.io)" -s "prefix(github.com/cosmos/cosmos-sdk)" -s "prefix(github.com/eve-network/eve)" --custom-order | ||
|
||
|
||
############################################################################### | ||
### Protobuf ### | ||
############################################################################### | ||
protoVer=0.14.0 | ||
protoImageName=ghcr.io/cosmos/proto-builder:$(protoVer) | ||
protoImage=$(DOCKER) run --rm -v $(CURDIR):/workspace --workdir /workspace $(protoImageName) | ||
|
||
proto-all: proto-format proto-lint proto-gen format | ||
|
||
proto-gen: | ||
@echo "Generating Protobuf files" | ||
@$(protoImage) sh ./scripts/protocgen.sh | ||
|
||
proto-format: | ||
@echo "Formatting Protobuf files" | ||
@$(protoImage) find ./ -name "*.proto" -exec clang-format -i {} \; | ||
|
||
proto-swagger-gen: | ||
@./scripts/protoc-swagger-gen.sh | ||
|
||
proto-lint: | ||
@$(DOCKER_BUF) lint --error-format=json | ||
|
||
proto-check-breaking: | ||
@$(DOCKER_BUF) breaking --against $(HTTPS_GIT)#branch=main | ||
|
||
.PHONY: all install install-debug \ | ||
go-mod-cache draw-deps clean build format \ | ||
test test-all test-build test-cover test-unit test-race \ | ||
test-sim-import-export build-windows-client \ | ||
test-system |
Oops, something went wrong.