2020-08-05 00:21:14 +00:00
#!/usr/bin/make -f
2021-06-25 09:18:37 +00:00
PACKAGES_NOSIMULATION = $( shell go list ./... | grep -v '/simulation' )
PACKAGES_SIMTEST = $( shell go list ./... | grep '/simulation' )
2021-09-11 08:29:58 +00:00
VERSION ?= $( shell echo $( shell git describe --tags ` git rev-list --tags= "v*" --max-count= 1` ) | sed 's/^v//' )
2021-07-24 08:46:13 +00:00
TMVERSION := $( shell go list -m github.com/tendermint/tendermint | sed 's:.* ::' )
2020-08-05 00:21:14 +00:00
COMMIT := $( shell git log -1 --format= '%H' )
2021-06-25 09:18:37 +00:00
LEDGER_ENABLED ?= true
BINDIR ?= $( GOPATH) /bin
2022-09-07 07:26:51 +00:00
LACONIC_BINARY = laconicd
LACONIC_DIR = laconic
2020-07-31 21:42:04 +00:00
BUILDDIR ?= $( CURDIR) /build
2020-08-21 09:01:19 +00:00
SIMAPP = ./app
2022-09-07 07:26:51 +00:00
HTTPS_GIT := https://github.com/cerc-io/laconicd.git
2021-01-07 21:45:32 +00:00
DOCKER := $( shell which docker)
DOCKER_BUF := $( DOCKER) run --rm -v $( CURDIR) :/workspace --workdir /workspace bufbuild/buf
2022-04-05 15:30:20 +00:00
PROJECT_NAME = $( shell git remote get-url origin | xargs basename -s .git)
2021-01-07 21:45:32 +00:00
2020-08-05 00:21:14 +00:00
export GO111MODULE = on
2021-07-08 08:07:26 +00:00
# Default target executed when no arguments are given to make.
default_target : all
.PHONY : default_target
2020-08-05 00:21:14 +00:00
# process build tags
build_tags = netgo
i f e q ( $( LEDGER_ENABLED ) , t r u e )
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
e n d i f
2021-06-25 09:18:37 +00:00
i f e q ( c l e v e l d b , $( findstring cleveldb ,$ ( COSMOS_BUILD_OPTIONS ) ) )
2020-08-05 00:21:14 +00:00
build_tags += gcc
e n d i f
build_tags += $( BUILD_TAGS)
build_tags := $( strip $( build_tags) )
whitespace :=
whitespace += $( whitespace)
comma := ,
build_tags_comma_sep := $( subst $( whitespace) ,$( comma) ,$( build_tags) )
# process linker flags
2022-09-07 07:26:51 +00:00
ldflags = -X github.com/cosmos/cosmos-sdk/version.Name= laconic \
-X github.com/cosmos/cosmos-sdk/version.AppName= $( LACONIC_BINARY) \
2020-08-05 00:21:14 +00:00
-X github.com/cosmos/cosmos-sdk/version.Version= $( VERSION) \
-X github.com/cosmos/cosmos-sdk/version.Commit= $( COMMIT) \
2021-07-24 08:46:13 +00:00
-X " github.com/cosmos/cosmos-sdk/version.BuildTags= $( build_tags_comma_sep) " \
-X github.com/tendermint/tendermint/version.TMCoreSemVer= $( TMVERSION)
2020-08-05 00:21:14 +00:00
2021-06-25 09:18:37 +00:00
# DB backend selection
i f e q ( c l e v e l d b , $( findstring cleveldb ,$ ( COSMOS_BUILD_OPTIONS ) ) )
2020-08-05 00:21:14 +00:00
ldflags += -X github.com/cosmos/cosmos-sdk/types.DBBackend= cleveldb
e n d i f
2022-06-22 13:37:29 +00:00
2021-06-25 09:18:37 +00:00
i f e q ( b a d g e r d b , $( findstring badgerdb ,$ ( COSMOS_BUILD_OPTIONS ) ) )
ldflags += -X github.com/cosmos/cosmos-sdk/types.DBBackend= badgerdb
2022-06-22 13:37:29 +00:00
BUILD_TAGS += badgerdb
2021-06-25 09:18:37 +00:00
e n d i f
# handle rocksdb
i f e q ( r o c k s d b , $( findstring rocksdb ,$ ( COSMOS_BUILD_OPTIONS ) ) )
CGO_ENABLED = 1
BUILD_TAGS += rocksdb
ldflags += -X github.com/cosmos/cosmos-sdk/types.DBBackend= rocksdb
e n d i f
# handle boltdb
i f e q ( b o l t d b , $( findstring boltdb ,$ ( COSMOS_BUILD_OPTIONS ) ) )
BUILD_TAGS += boltdb
ldflags += -X github.com/cosmos/cosmos-sdk/types.DBBackend= boltdb
e n d i f
2022-06-22 13:37:29 +00:00
ldflags += $( LDFLAGS)
ldflags := $( strip $( ldflags) )
build_tags += $( BUILD_TAGS)
build_tags := $( strip $( build_tags) )
2022-05-13 10:48:39 +00:00
BUILD_FLAGS := -tags " $( build_tags) " -ldflags '$(ldflags)'
# Check for debug option
i f e q ( d e b u g , $( findstring debug ,$ ( COSMOS_BUILD_OPTIONS ) ) )
BUILD_FLAGS += -gcflags 'all=-N -l'
COSMOS_BUILD_OPTIONS += nostrip
2021-06-25 09:18:37 +00:00
e n d i f
2020-08-05 00:21:14 +00:00
2021-06-25 09:18:37 +00:00
# check for nostrip option
i f e q ( , $( findstring nostrip ,$ ( COSMOS_BUILD_OPTIONS ) ) )
BUILD_FLAGS += -trimpath
2022-05-13 10:48:39 +00:00
ldflags += -w -s
2021-06-25 09:18:37 +00:00
e n d i f
2022-04-26 14:37:50 +00:00
all : tools build lint test
2021-06-25 09:18:37 +00:00
# # The below include contains the tools and runsim targets.
# include contrib/devtools/Makefile
2018-07-11 00:12:30 +00:00
2020-07-31 21:42:04 +00:00
###############################################################################
### Build ###
###############################################################################
2021-06-25 09:18:37 +00:00
BUILD_TARGETS := build install
2020-07-31 21:42:04 +00:00
2021-06-25 09:18:37 +00:00
build : BUILD_ARGS =-o $( BUILDDIR ) /
build-linux :
2022-04-26 14:37:50 +00:00
GOOS = linux GOARCH = $( if $( findstring aarch64,$( shell uname -m) ) || $( findstring arm64,$( shell uname -m) ) ,arm64,amd64) LEDGER_ENABLED = false $( MAKE) build
2018-07-11 00:12:30 +00:00
2021-06-25 09:18:37 +00:00
$(BUILD_TARGETS) : go .sum $( BUILDDIR ) /
2022-04-26 14:37:50 +00:00
go $@ -mod= readonly $( BUILD_FLAGS) $( BUILD_ARGS) ./...
2020-07-31 21:42:04 +00:00
2021-06-25 09:18:37 +00:00
$(BUILDDIR)/ :
mkdir -p $( BUILDDIR) /
2018-07-11 00:12:30 +00:00
2022-04-26 14:37:50 +00:00
.PHONY : build build -linux cosmovisor
2020-08-10 20:10:33 +00:00
docker-build :
2021-06-08 07:07:11 +00:00
# TODO replace with kaniko
2020-07-31 21:42:04 +00:00
docker build -t ${ DOCKER_IMAGE } :${ DOCKER_TAG } .
docker tag ${ DOCKER_IMAGE } :${ DOCKER_TAG } ${ DOCKER_IMAGE } :latest
2020-11-16 09:13:51 +00:00
# docker tag ${DOCKER_IMAGE}:${DOCKER_TAG} ${DOCKER_IMAGE}:${COMMIT_HASH}
2020-07-31 21:42:04 +00:00
# update old container
2020-11-16 09:13:51 +00:00
docker rm ethermint || true
2020-07-31 21:42:04 +00:00
# create a new container from the latest image
2022-09-07 06:36:11 +00:00
docker create --name ethermint -t -i cerc-io/laconicd:latest ethermint
2020-07-31 21:42:04 +00:00
# move the binaries to the ./build directory
mkdir -p ./build/
2021-04-17 10:00:07 +00:00
docker cp ethermint:/usr/bin/ethermintd ./build/
2020-07-31 21:42:04 +00:00
2021-06-25 09:18:37 +00:00
$(MOCKS_DIR) :
mkdir -p $( MOCKS_DIR)
distclean : clean tools -clean
clean :
rm -rf \
$( BUILDDIR) / \
artifacts/ \
tmp-swagger-gen/
2021-07-08 08:07:26 +00:00
all : build
build-all : tools build lint test
.PHONY : distclean clean build -all
2021-06-25 09:18:37 +00:00
2021-10-29 13:56:09 +00:00
###############################################################################
### Releasing ###
###############################################################################
2022-09-07 06:36:11 +00:00
PACKAGE_NAME := github.com/cerc-io/laconicd
2021-10-29 13:56:09 +00:00
GOLANG_CROSS_VERSION = v1.17.1
GOPATH ?= '$(HOME)/go'
release-dry-run :
docker run \
--rm \
--privileged \
-e CGO_ENABLED = 1 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v ` pwd ` :/go/src/$( PACKAGE_NAME) \
-v ${ GOPATH } /pkg:/go/pkg \
-w /go/src/$( PACKAGE_NAME) \
ghcr.io/troian/golang-cross:${ GOLANG_CROSS_VERSION } \
--rm-dist --skip-validate --skip-publish
release :
@if [ ! -f ".release-env" ] ; then \
echo "\033[91m.release-env is required for release\033[0m" ; \
exit 1; \
fi
docker run \
--rm \
--privileged \
-e CGO_ENABLED = 1 \
--env-file .release-env \
-v /var/run/docker.sock:/var/run/docker.sock \
-v ` pwd ` :/go/src/$( PACKAGE_NAME) \
-w /go/src/$( PACKAGE_NAME) \
ghcr.io/troian/golang-cross:${ GOLANG_CROSS_VERSION } \
release --rm-dist --skip-validate
.PHONY : release -dry -run release
2020-07-31 21:42:04 +00:00
###############################################################################
### Tools & Dependencies ###
###############################################################################
2020-04-29 15:48:44 +00:00
2020-08-21 09:01:19 +00:00
TOOLS_DESTDIR ?= $( GOPATH) /bin
2021-06-12 16:27:10 +00:00
STATIK = $( TOOLS_DESTDIR) /statik
2020-08-21 09:01:19 +00:00
RUNSIM = $( TOOLS_DESTDIR) /runsim
2020-04-29 15:48:44 +00:00
# Install the runsim binary with a temporary workaround of entering an outside
# directory as the "go get" command ignores the -mod option and will polute the
# go.{mod, sum} files.
#
# ref: https://github.com/golang/go/issues/30515
2020-08-21 09:01:19 +00:00
runsim : $( RUNSIM )
2020-04-29 15:48:44 +00:00
$(RUNSIM) :
@echo "Installing runsim..."
2021-04-17 10:00:07 +00:00
@( cd /tmp && ${ GO_MOD } go get github.com/cosmos/tools/cmd/runsim@master)
2020-09-08 22:25:16 +00:00
2021-06-12 16:27:10 +00:00
statik : $( STATIK )
$(STATIK) :
@echo "Installing statik..."
@( cd /tmp && go get github.com/rakyll/statik@v0.1.6)
2020-09-08 22:25:16 +00:00
contract-tools :
i f e q ( , $( shell which stringer ) )
@echo "Installing stringer..."
2021-04-17 10:00:07 +00:00
@go get golang.org/x/tools/cmd/stringer
2020-09-08 22:25:16 +00:00
e l s e
@echo "stringer already installed; skipping..."
e n d i f
i f e q ( , $( shell which go -bindata ) )
@echo "Installing go-bindata..."
2021-04-17 10:00:07 +00:00
@go get github.com/kevinburke/go-bindata/go-bindata
2020-09-08 22:25:16 +00:00
e l s e
@echo "go-bindata already installed; skipping..."
e n d i f
i f e q ( , $( shell which gencodec ) )
@echo "Installing gencodec..."
2021-04-17 10:00:07 +00:00
@go get github.com/fjl/gencodec
2020-09-08 22:25:16 +00:00
e l s e
@echo "gencodec already installed; skipping..."
e n d i f
i f e q ( , $( shell which protoc -gen -go ) )
@echo "Installing protoc-gen-go..."
2021-04-17 10:00:07 +00:00
@go get github.com/fjl/gencodec github.com/golang/protobuf/protoc-gen-go
2020-09-08 22:25:16 +00:00
e l s e
@echo "protoc-gen-go already installed; skipping..."
e n d i f
2021-04-17 10:00:07 +00:00
i f e q ( , $( shell which protoc ) )
@echo "Please istalling protobuf according to your OS"
@echo "macOS: brew install protobuf"
@echo "linux: apt-get install -f -y protobuf-compiler"
e l s e
@echo "protoc already installed; skipping..."
e n d i f
2020-09-08 22:25:16 +00:00
i f e q ( , $( shell which solcjs ) )
@echo "Installing solcjs..."
@npm install -g solc@0.5.11
e l s e
@echo "solcjs already installed; skipping..."
e n d i f
2020-04-29 15:48:44 +00:00
2020-08-21 09:01:19 +00:00
tools : tools -stamp
2021-09-29 10:37:10 +00:00
tools-stamp : contract -tools proto -tools statik runsim
2020-08-21 09:01:19 +00:00
# Create dummy file to satisfy dependency and avoid
# rebuilding when this Makefile target is hit twice
# in a row.
touch $@
tools-clean :
rm -f $( RUNSIM)
rm -f tools-stamp
2021-09-29 10:37:10 +00:00
.PHONY : runsim statik tools contract -tools proto -tools tools -stamp tools -clean
2020-07-31 21:42:04 +00:00
2021-06-25 09:18:37 +00:00
go.sum : go .mod
echo "Ensure dependencies have not been modified ..." >& 2
go mod verify
go mod tidy
###############################################################################
### Documentation ###
###############################################################################
update-swagger-docs : statik
$( BINDIR) /statik -src= client/docs/swagger-ui -dest= client/docs -f -m
@if [ -n " $( git status --porcelain) " ] ; then \
echo "\033[91mSwagger docs are out of sync!!!\033[0m" ; \
exit 1; \
else \
echo "\033[92mSwagger docs are in sync\033[0m" ; \
fi
.PHONY : update -swagger -docs
godocs :
2022-09-07 06:36:11 +00:00
@echo "--> Wait a few seconds and visit http://localhost:6060/pkg/github.com/cerc-io/laconicd/types"
2021-06-25 09:18:37 +00:00
godoc -http= :6060
2020-07-31 21:42:04 +00:00
###############################################################################
### Tests & Simulation ###
###############################################################################
2018-07-19 21:16:48 +00:00
2018-07-26 13:36:01 +00:00
test : test -unit
2021-06-25 09:18:37 +00:00
test-all : test -unit test -race
2021-10-22 10:20:23 +00:00
PACKAGES_UNIT = $( shell go list ./... | grep -Ev 'vendor|importer' )
2021-06-25 09:18:37 +00:00
TEST_PACKAGES = ./...
2021-08-26 15:21:43 +00:00
TEST_TARGETS := test-unit test-unit-cover test-race
2018-07-26 13:36:01 +00:00
2021-06-25 09:18:37 +00:00
# Test runs-specific rules. To add a new test target, just add
# a new rule, customise ARGS or TEST_PACKAGES ad libitum, and
# append the new rule to the TEST_TARGETS list.
2021-08-26 15:21:43 +00:00
test-unit : ARGS =-timeout =10m -race
test-unit : TEST_PACKAGES =$( PACKAGES_UNIT )
2021-06-25 09:18:37 +00:00
test-race : ARGS =-race
test-race : TEST_PACKAGES =$( PACKAGES_NOSIMULATION )
$(TEST_TARGETS) : run -tests
2021-08-26 15:21:43 +00:00
test-unit-cover : ARGS =-timeout =10m -race -coverprofile =coverage .txt -covermode =atomic
test-unit-cover : TEST_PACKAGES =$( PACKAGES_UNIT )
2021-06-25 09:18:37 +00:00
run-tests :
i f n e q ( , $( shell which tparse 2>/dev /null ) )
go test -mod= readonly -json $( ARGS) $( EXTRA_ARGS) $( TEST_PACKAGES) | tparse
e l s e
go test -mod= readonly $( ARGS) $( EXTRA_ARGS) $( TEST_PACKAGES)
e n d i f
2018-07-26 13:36:01 +00:00
2018-10-24 12:20:59 +00:00
test-import :
2022-09-07 06:36:11 +00:00
go test -run TestImporterTestSuite -v --vet= off github.com/cerc-io/laconicd/tests/importer
2018-10-24 12:20:59 +00:00
2019-07-25 20:38:55 +00:00
test-rpc :
2021-04-17 10:00:07 +00:00
./scripts/integration-test-all.sh -t "rpc" -q 1 -z 1 -s 2 -m "rpc" -r "true"
2020-12-15 19:52:09 +00:00
2022-02-09 13:56:12 +00:00
test-integration :
./scripts/integration-test-all.sh -t "integration" -q 1 -z 1 -s 2 -m "integration" -r "true"
2020-12-15 19:52:09 +00:00
test-rpc-pending :
2021-04-17 10:00:07 +00:00
./scripts/integration-test-all.sh -t "pending" -q 1 -z 1 -s 2 -m "pending" -r "true"
2020-04-21 19:37:10 +00:00
2021-06-25 09:18:37 +00:00
test-solidity :
@echo "Beginning solidity tests..."
./scripts/run-solidity-tests.sh
.PHONY : run -tests test test -all test -import test -rpc test -contract test -solidity $( TEST_TARGETS )
2020-07-31 21:42:04 +00:00
test-sim-nondeterminism :
@echo "Running non-determinism test..."
@go test -mod= readonly $( SIMAPP) -run TestAppStateDeterminism -Enabled= true \
-NumBlocks= 100 -BlockSize= 200 -Commit= true -Period= 0 -v -timeout 24h
2018-07-11 00:12:30 +00:00
2020-07-31 21:42:04 +00:00
test-sim-custom-genesis-fast :
@echo "Running custom genesis simulation..."
2022-09-07 07:26:51 +00:00
@echo " By default, ${ HOME } /. $( LACONIC_DIR) /config/genesis.json will be used. "
@go test -mod= readonly $( SIMAPP) -run TestFullAppSimulation -Genesis= ${ HOME } /.$( LACONIC_DIR) /config/genesis.json \
2020-07-31 21:42:04 +00:00
-Enabled= true -NumBlocks= 100 -BlockSize= 200 -Commit= true -Seed= 99 -Period= 5 -v -timeout 24h
test-sim-import-export : runsim
2020-08-21 09:01:19 +00:00
@echo "Running application import/export simulation. This may take several minutes..."
2021-06-25 09:18:37 +00:00
@$( BINDIR) /runsim -Jobs= 4 -SimAppPkg= $( SIMAPP) -ExitOnFail 50 5 TestAppImportExport
2020-07-31 21:42:04 +00:00
test-sim-after-import : runsim
2020-08-21 09:01:19 +00:00
@echo "Running application simulation-after-import. This may take several minutes..."
2021-06-25 09:18:37 +00:00
@$( BINDIR) /runsim -Jobs= 4 -SimAppPkg= $( SIMAPP) -ExitOnFail 50 5 TestAppSimulationAfterImport
2020-07-31 21:42:04 +00:00
test-sim-custom-genesis-multi-seed : runsim
@echo "Running multi-seed custom genesis simulation..."
2022-09-07 07:26:51 +00:00
@echo " By default, ${ HOME } /. $( LACONIC_DIR) /config/genesis.json will be used. "
@$( BINDIR) /runsim -Genesis= ${ HOME } /.$( LACONIC_DIR) /config/genesis.json -SimAppPkg= $( SIMAPP) -ExitOnFail 400 5 TestFullAppSimulation
2020-07-31 21:42:04 +00:00
test-sim-multi-seed-long : runsim
2021-06-25 09:18:37 +00:00
@echo "Running long multi-seed application simulation. This may take awhile!"
2020-08-21 09:01:19 +00:00
@$( BINDIR) /runsim -Jobs= 4 -SimAppPkg= $( SIMAPP) -ExitOnFail 500 50 TestFullAppSimulation
2020-07-31 21:42:04 +00:00
test-sim-multi-seed-short : runsim
2021-06-25 09:18:37 +00:00
@echo "Running short multi-seed application simulation. This may take awhile!"
2020-08-21 09:01:19 +00:00
@$( BINDIR) /runsim -Jobs= 4 -SimAppPkg= $( SIMAPP) -ExitOnFail 50 10 TestFullAppSimulation
2018-07-12 23:22:19 +00:00
2021-06-25 09:18:37 +00:00
test-sim-benchmark-invariants :
@echo "Running simulation invariant benchmarks..."
@go test -mod= readonly $( SIMAPP) -benchmem -bench= BenchmarkInvariants -run= ^$ \
-Enabled= true -NumBlocks= 1000 -BlockSize= 200 \
-Period= 1 -Commit= true -Seed= 57 -v -timeout 24h
.PHONY : \
t e s t - s i m - n o n d e t e r m i n i s m \
t e s t - s i m - c u s t o m - g e n e s i s - f a s t \
t e s t - s i m - i m p o r t - export \
t e s t - s i m - a f t e r - i m p o r t \
t e s t - s i m - c u s t o m - g e n e s i s - m u l t i - s e e d \
t e s t - s i m - m u l t i - s e e d - s h o r t \
t e s t - s i m - m u l t i - s e e d - l o n g \
t e s t - s i m - b e n c h m a r k - i n v a r i a n t s
benchmark :
@go test -mod= readonly -bench= . $( PACKAGES_NOSIMULATION)
.PHONY : benchmark
2020-04-22 19:26:01 +00:00
2020-06-26 22:26:55 +00:00
###############################################################################
### Linting ###
###############################################################################
lint :
2021-06-25 09:18:37 +00:00
golangci-lint run --out-format= tab
2020-06-26 22:26:55 +00:00
2021-09-05 11:03:06 +00:00
format :
find . -name '*.go' -type f -not -path "./vendor*" -not -path "*.git*" -not -path "./client/docs/statik/statik.go" -not -name '*.pb.go' -not -name '*.pb.gw.go' | xargs gofumpt -d -e -extra
2021-06-25 09:18:37 +00:00
lint-fix :
golangci-lint run --fix --out-format= tab --issues-exit-code= 0
.PHONY : lint lint -fix
2020-06-26 22:26:55 +00:00
2021-09-05 11:03:06 +00:00
format-fix :
find . -name '*.go' -type f -not -path "./vendor*" -not -path "*.git*" -not -path "./client/docs/statik/statik.go" -not -name '*.pb.go' -not -name '*.pb.gw.go' | xargs gofumpt -w -s
find . -name '*.go' -type f -not -path "./vendor*" -not -path "*.git*" -not -path "./client/docs/statik/statik.go" -not -name '*.pb.go' -not -name '*.pb.gw.go' | xargs misspell -w
2021-06-25 09:18:37 +00:00
.PHONY : format
2020-06-26 22:26:55 +00:00
2020-04-22 19:26:01 +00:00
###############################################################################
### Protobuf ###
###############################################################################
2021-06-25 09:18:37 +00:00
containerProtoVer = v0.2
containerProtoImage = tendermintdev/sdk-proto-gen:$( containerProtoVer)
2022-04-05 15:30:20 +00:00
containerProtoGen = $( PROJECT_NAME) -proto-gen-$( containerProtoVer)
containerProtoGenSwagger = $( PROJECT_NAME) -proto-gen-swagger-$( containerProtoVer)
containerProtoFmt = $( PROJECT_NAME) -proto-fmt-$( containerProtoVer)
2021-06-25 09:18:37 +00:00
2021-01-07 21:45:32 +00:00
proto-all : proto -format proto -lint proto -gen
2020-04-22 19:26:01 +00:00
proto-gen :
2021-01-07 21:45:32 +00:00
@echo "Generating Protobuf files"
2021-11-06 22:01:58 +00:00
@if docker ps -a --format '{{.Names}}' | grep -Eq " ^ ${ containerProtoGen } $$ " ; then docker start -a $( containerProtoGen) ; else docker run --name $( containerProtoGen) -v $( CURDIR) :/workspace --workdir /workspace $( containerProtoImage) \
2021-10-07 11:02:31 +00:00
sh ./scripts/protocgen.sh; fi
2021-01-07 21:45:32 +00:00
proto-swagger-gen :
2021-06-25 09:18:37 +00:00
@echo "Generating Protobuf Swagger"
2021-10-07 13:36:07 +00:00
@./scripts/proto-tools-installer.sh
2021-01-07 21:45:32 +00:00
@./scripts/protoc-swagger-gen.sh
2020-04-22 19:26:01 +00:00
2021-04-17 10:00:07 +00:00
proto-format :
2021-06-25 09:18:37 +00:00
@echo "Formatting Protobuf files"
2021-10-07 11:02:31 +00:00
@if docker ps -a --format '{{.Names}}' | grep -Eq " ^ ${ containerProtoFmt } $$ " ; then docker start -a $( containerProtoFmt) ; else docker run --name $( containerProtoFmt) -v $( CURDIR) :/workspace --workdir /workspace tendermintdev/docker-build-proto \
find ./ -not -path "./third_party/*" -name "*.proto" -exec clang-format -i { } \; ; fi
2021-04-17 10:00:07 +00:00
2020-04-22 19:26:01 +00:00
proto-lint :
2021-08-25 14:45:51 +00:00
@$( DOCKER_BUF) lint --error-format= json
2020-04-22 19:26:01 +00:00
proto-check-breaking :
2021-08-25 14:45:51 +00:00
@$( DOCKER_BUF) breaking --against $( HTTPS_GIT) #branch=main
2021-06-25 09:18:37 +00:00
2020-04-22 19:26:01 +00:00
2021-08-23 13:15:55 +00:00
TM_URL = https://raw.githubusercontent.com/tendermint/tendermint/v0.34.12/proto/tendermint
2021-01-07 21:45:32 +00:00
GOGO_PROTO_URL = https://raw.githubusercontent.com/regen-network/protobuf/cosmos
2021-08-23 13:15:55 +00:00
COSMOS_SDK_URL = https://raw.githubusercontent.com/cosmos/cosmos-sdk/v0.43.0
2021-01-07 21:45:32 +00:00
COSMOS_PROTO_URL = https://raw.githubusercontent.com/regen-network/cosmos-proto/master
2020-04-22 19:26:01 +00:00
2021-01-07 21:45:32 +00:00
TM_CRYPTO_TYPES = third_party/proto/tendermint/crypto
TM_ABCI_TYPES = third_party/proto/tendermint/abci
TM_TYPES = third_party/proto/tendermint/types
2020-04-22 19:26:01 +00:00
GOGO_PROTO_TYPES = third_party/proto/gogoproto
2021-06-25 09:18:37 +00:00
2021-01-07 21:45:32 +00:00
COSMOS_PROTO_TYPES = third_party/proto/cosmos_proto
2020-04-22 19:26:01 +00:00
proto-update-deps :
@mkdir -p $( GOGO_PROTO_TYPES)
@curl -sSL $( GOGO_PROTO_URL) /gogoproto/gogo.proto > $( GOGO_PROTO_TYPES) /gogo.proto
@mkdir -p $( COSMOS_PROTO_TYPES)
@curl -sSL $( COSMOS_PROTO_URL) /cosmos.proto > $( COSMOS_PROTO_TYPES) /cosmos.proto
2021-01-07 21:45:32 +00:00
## Importing of tendermint protobuf definitions currently requires the
## use of `sed` in order to build properly with cosmos-sdk's proto file layout
## (which is the standard Buf.build FILE_LAYOUT)
## Issue link: https://github.com/tendermint/tendermint/issues/5021
2020-04-22 19:26:01 +00:00
@mkdir -p $( TM_ABCI_TYPES)
2021-01-07 21:45:32 +00:00
@curl -sSL $( TM_URL) /abci/types.proto > $( TM_ABCI_TYPES) /types.proto
2020-04-22 19:26:01 +00:00
2021-01-07 21:45:32 +00:00
@mkdir -p $( TM_TYPES)
@curl -sSL $( TM_URL) /types/types.proto > $( TM_TYPES) /types.proto
2020-04-22 19:26:01 +00:00
2021-01-07 21:45:32 +00:00
@mkdir -p $( TM_CRYPTO_TYPES)
@curl -sSL $( TM_URL) /crypto/proof.proto > $( TM_CRYPTO_TYPES) /proof.proto
@curl -sSL $( TM_URL) /crypto/keys.proto > $( TM_CRYPTO_TYPES) /keys.proto
2020-04-22 19:26:01 +00:00
2020-04-29 15:48:44 +00:00
2021-06-25 09:18:37 +00:00
.PHONY : proto -all proto -gen proto -gen -any proto -swagger -gen proto -format proto -lint proto -check -breaking proto -update -deps
2021-06-12 16:27:10 +00:00
2020-07-31 21:42:04 +00:00
###############################################################################
### Localnet ###
###############################################################################
2021-08-04 09:30:13 +00:00
# Build image for a local testnet
localnet-build :
2020-07-31 21:42:04 +00:00
@$( MAKE) -C networks/local
2021-08-04 09:30:13 +00:00
# Start a 4-node testnet locally
2020-07-31 21:42:04 +00:00
localnet-start : localnet -stop
2020-08-04 20:05:18 +00:00
i f e q ( $( OS ) , W i n d o w s _ N T )
2021-08-04 09:30:13 +00:00
mkdir localnet-setup &
@$( MAKE) localnet-build
2020-08-04 20:05:18 +00:00
2022-09-07 07:26:51 +00:00
IF not exist " build/node0/ $( LACONIC_BINARY) /config/genesis.json " docker run --rm -v $( CURDIR) /build\e thermint\Z laconicd/node sh -c "laconicd testnet init-files --v 4 --keyring-backend=test"
2020-08-04 20:05:18 +00:00
docker-compose up -d
e l s e
2021-08-04 09:30:13 +00:00
mkdir -p localnet-setup
@$( MAKE) localnet-build
2020-07-31 21:42:04 +00:00
2022-09-07 07:26:51 +00:00
if ! [ -f localnet-setup/node0/$( LACONIC_BINARY) /config/genesis.json ] ; then docker run --rm -v $( CURDIR) /localnet-setup:/localnet-setup:Z laconicd/node sh -c "laconicd testnet init-files --v 4 --keyring-backend=test" ; fi
2020-07-31 21:42:04 +00:00
docker-compose up -d
2020-08-04 20:05:18 +00:00
e n d i f
2020-07-31 21:42:04 +00:00
2021-08-04 09:30:13 +00:00
# Stop testnet
2020-07-31 21:42:04 +00:00
localnet-stop :
2022-04-05 15:30:20 +00:00
docker-compose down -v
2020-07-31 21:42:04 +00:00
2021-08-04 09:30:13 +00:00
# Clean testnet
2020-08-19 15:01:38 +00:00
localnet-clean :
docker-compose down
2021-08-04 09:30:13 +00:00
sudo rm -rf localnet-setup
2020-08-19 15:01:38 +00:00
2021-08-04 09:30:13 +00:00
# Reset testnet
2020-08-19 15:01:38 +00:00
localnet-unsafe-reset :
docker-compose down
i f e q ( $( OS ) , W i n d o w s _ N T )
2022-09-07 07:26:51 +00:00
@docker run --rm -v $( CURDIR) \l ocalnet-setup\n ode0\l aconicd:laconic\Z laconicd/node "laconicd unsafe-reset-all --home=/laconic"
@docker run --rm -v $( CURDIR) \l ocalnet-setup\n ode1\l aconicd:laconic\Z laconicd/node "laconicd unsafe-reset-all --home=/laconic"
@docker run --rm -v $( CURDIR) \l ocalnet-setup\n ode2\l aconicd:laconic\Z laconicd/node "laconicd unsafe-reset-all --home=/laconic"
@docker run --rm -v $( CURDIR) \l ocalnet-setup\n ode3\l aconicd:laconic\Z laconicd/node "laconicd unsafe-reset-all --home=/laconic"
2020-08-19 15:01:38 +00:00
e l s e
2022-09-07 07:26:51 +00:00
@docker run --rm -v $( CURDIR) /localnet-setup/node0/laconicd:/laconic:Z laconicd/node "laconicd unsafe-reset-all --home=/laconic"
@docker run --rm -v $( CURDIR) /localnet-setup/node1/laconicd:/laconic:Z laconicd/node "laconicd unsafe-reset-all --home=/laconic"
@docker run --rm -v $( CURDIR) /localnet-setup/node2/laconicd:/laconic:Z laconicd/node "laconicd unsafe-reset-all --home=/laconic"
@docker run --rm -v $( CURDIR) /localnet-setup/node3/laconicd:/laconic:Z laconicd/node "laconicd unsafe-reset-all --home=/laconic"
2020-08-19 15:01:38 +00:00
e n d i f
2021-08-04 09:30:13 +00:00
# Clean testnet
localnet-show-logstream :
docker-compose logs --tail= 1000 -f
2020-07-31 21:42:04 +00:00
.PHONY : build -docker -local -ethermint localnet -start localnet -stop