2021-08-18 08:49:53 +00:00
GO = go
2020-09-30 09:28:36 +00:00
GOBIN = $( CURDIR) /build/bin
2021-08-18 08:49:53 +00:00
GOTEST = GODEBUG = cgocheck = 0 $( GO) test ./... -p 2
2015-11-20 14:06:35 +00:00
2020-10-30 08:43:24 +00:00
GIT_COMMIT ?= $( shell git rev-list -1 HEAD)
2021-04-11 04:23:50 +00:00
GIT_BRANCH ?= $( shell git rev-parse --abbrev-ref HEAD)
2021-09-11 08:12:11 +00:00
GIT_TAG ?= $( shell git describe --tags ` git rev-list --tags= "v*" --max-count= 1` )
2021-08-18 08:49:53 +00:00
GOBUILD = env GO111MODULE = on $( GO) build -trimpath -ldflags " -X github.com/ledgerwatch/erigon/params.GitCommit= ${ GIT_COMMIT } -X github.com/ledgerwatch/erigon/params.GitBranch= ${ GIT_BRANCH } -X github.com/ledgerwatch/erigon/params.GitTag= ${ GIT_TAG } "
GO_DBG_BUILD = $( GO) build -trimpath -tags= debug -ldflags " -X github.com/ledgerwatch/erigon/params.GitCommit= ${ GIT_COMMIT } -X github.com/ledgerwatch/erigon/params.GitBranch= ${ GIT_BRANCH } -X github.com/ledgerwatch/erigon/params.GitTag= ${ GIT_TAG } " -gcflags= all = "-N -l" # see delve docs
2020-09-06 11:35:32 +00:00
2021-08-18 08:49:53 +00:00
GO_MAJOR_VERSION = $( shell $( GO) version | cut -c 14- | cut -d' ' -f1 | cut -d'.' -f1)
GO_MINOR_VERSION = $( shell $( GO) version | cut -c 14- | cut -d' ' -f1 | cut -d'.' -f2)
2021-04-19 10:54:56 +00:00
2021-10-31 00:39:47 +00:00
all : erigon hack rpctest state pics rpcdaemon integration db -tools sentry txpool
2020-08-21 12:38:11 +00:00
2021-04-19 10:54:56 +00:00
go-version :
@if [ $( GO_MINOR_VERSION) -lt 16 ] ; then \
echo "minimum required Golang version is 1.16" ; \
exit 1 ; \
fi
2020-08-21 12:38:11 +00:00
docker :
2021-07-27 02:39:21 +00:00
DOCKER_BUILDKIT = 1 docker build -t erigon:latest --build-arg git_commit = '${GIT_COMMIT}' --build-arg git_branch = '${GIT_BRANCH}' --build-arg git_tag = '${GIT_TAG}' .
2020-08-21 12:38:11 +00:00
2021-07-19 13:40:09 +00:00
xdg_data_home := ~/.local/share
i f d e f X D G _ D A T A _ H O M E
xdg_data_home = $( XDG_DATA_HOME)
e n d i f
2020-08-21 12:38:11 +00:00
docker-compose :
2021-07-19 13:40:09 +00:00
mkdir -p $( xdg_data_home) /erigon $( xdg_data_home) /erigon-grafana $( xdg_data_home) /erigon-prometheus; \
docker-compose up
2019-05-27 13:51:49 +00:00
2021-04-29 14:29:58 +00:00
# debug build allows see C stack traces, run it with GOTRACEBACK=crash. You don't need debug build for C pit for profiling. To profile C code use SETCGOTRCKEBACK=1
2021-06-19 20:30:12 +00:00
dbg :
2021-04-29 14:29:58 +00:00
$( GO_DBG_BUILD) -o $( GOBIN) / ./cmd/...
2021-05-31 10:20:56 +00:00
geth : erigon
2015-04-18 21:21:45 +00:00
2021-06-18 03:35:11 +00:00
erigon : go -version
2021-05-26 10:35:39 +00:00
@echo "Building Erigon"
2021-05-27 05:57:25 +00:00
rm -f $( GOBIN) /tg # Remove old binary to prevent confusion where users still use it because of the scripts
2021-05-26 10:35:39 +00:00
$( GOBUILD) -o $( GOBIN) /erigon ./cmd/erigon
2020-07-30 15:37:46 +00:00
@echo "Done building."
2021-05-26 10:35:39 +00:00
@echo " Run \" $( GOBIN) /erigon\" to launch Erigon. "
2020-07-30 15:37:46 +00:00
2019-05-27 13:51:49 +00:00
hack :
2021-03-01 04:02:06 +00:00
$( GOBUILD) -o $( GOBIN) /hack ./cmd/hack
2019-05-27 13:51:49 +00:00
@echo "Done building."
@echo " Run \" $( GOBIN) /hack\" to launch hack. "
rpctest :
2021-03-01 04:02:06 +00:00
$( GOBUILD) -o $( GOBIN) /rpctest ./cmd/rpctest
2019-05-27 13:51:49 +00:00
@echo "Done building."
@echo " Run \" $( GOBIN) /rpctest\" to launch rpctest. "
state :
2021-03-15 17:21:41 +00:00
$( GOBUILD) -o $( GOBIN) /state ./cmd/state
2019-05-27 13:51:49 +00:00
@echo "Done building."
@echo " Run \" $( GOBIN) /state\" to launch state. "
2020-02-09 10:31:52 +00:00
2020-10-28 03:18:10 +00:00
2019-05-27 13:51:49 +00:00
pics :
2021-03-01 04:02:06 +00:00
$( GOBUILD) -o $( GOBIN) /pics ./cmd/pics
2019-05-27 13:51:49 +00:00
@echo "Done building."
@echo " Run \" $( GOBIN) /pics\" to launch pics. "
2019-12-02 13:47:00 +00:00
rpcdaemon :
2021-03-01 04:02:06 +00:00
$( GOBUILD) -o $( GOBIN) /rpcdaemon ./cmd/rpcdaemon
2019-12-02 13:47:00 +00:00
@echo "Done building."
@echo " Run \" $( GOBIN) /rpcdaemon\" to launch rpcdaemon. "
2021-10-31 00:39:47 +00:00
txpool :
$( GOBUILD) -o $( GOBIN) /txpool ./cmd/txpool
@echo "Done building."
@echo " Run \" $( GOBIN) /txpool\" to launch txpool. "
2020-07-10 06:03:18 +00:00
integration :
2021-03-01 04:02:06 +00:00
$( GOBUILD) -o $( GOBIN) /integration ./cmd/integration
2020-07-10 06:03:18 +00:00
@echo "Done building."
@echo " Run \" $( GOBIN) /integration\" to launch integration tests. "
2021-05-31 10:20:56 +00:00
sentry :
2021-06-01 09:00:10 +00:00
$( GOBUILD) -o $( GOBIN) /sentry ./cmd/sentry
2021-06-03 07:36:30 +00:00
rm -f $( GOBIN) /headers # Remove old binary to prevent confusion where users still use it because of the scripts
2020-09-07 06:03:12 +00:00
@echo "Done building."
2021-06-01 09:00:10 +00:00
@echo " Run \" $( GOBIN) /sentry\" to run sentry "
2016-11-25 10:34:19 +00:00
2021-04-29 15:14:10 +00:00
cons :
$( GOBUILD) -o $( GOBIN) /cons ./cmd/cons
@echo "Done building."
@echo " Run \" $( GOBIN) /cons\" to run consensus engine PoC. "
2021-05-05 20:55:15 +00:00
evm :
$( GOBUILD) -o $( GOBIN) /evm ./cmd/evm
@echo "Done building."
@echo " Run \" $( GOBIN) /evm\" to run EVM "
2021-12-15 09:07:57 +00:00
downloader :
$( GOBUILD) -o $( GOBIN) /downloader ./cmd/downloader
2021-05-08 08:45:40 +00:00
@echo "Done building."
2021-12-15 09:07:57 +00:00
@echo " Run \" $( GOBIN) /downloader\" to download and seed snapshots. "
2021-05-08 08:45:40 +00:00
2021-11-23 16:44:46 +00:00
devnettest :
$( GOBUILD) -o $( GOBIN) /devnettest ./cmd/devnettest
@echo "Done building."
@echo " Run \" $( GOBIN) /devnettest\" to launch devnettest. "
2021-11-15 03:14:19 +00:00
db-tools :
2021-06-19 20:30:12 +00:00
@echo "Building db-tools"
2021-12-15 09:07:57 +00:00
# hub.docker.com setup incorrect gitpath for git modules. Just remove it and re-init submodule.
rm -rf libmdbx
rm -rf cmd/downloader/trackers/trackerslist
rm -rf turbo/snapshotsync/snapshothashes/erigon-snapshots
2021-11-15 03:14:19 +00:00
git submodule update --init --recursive --force
2021-12-15 09:07:57 +00:00
2021-06-27 02:53:49 +00:00
cd libmdbx && MDBX_BUILD_TIMESTAMP = unknown make tools
2021-06-19 20:30:12 +00:00
cp libmdbx/mdbx_chk $( GOBIN)
cp libmdbx/mdbx_copy $( GOBIN)
cp libmdbx/mdbx_dump $( GOBIN)
cp libmdbx/mdbx_drop $( GOBIN)
cp libmdbx/mdbx_load $( GOBIN)
cp libmdbx/mdbx_stat $( GOBIN)
2021-06-11 13:31:37 +00:00
@echo " Run \" $( GOBIN) /mdbx_stat -h\" to get info about mdbx db file. "
2020-10-08 07:11:36 +00:00
2021-06-18 03:35:11 +00:00
test :
2021-06-15 12:41:38 +00:00
$( GOTEST) --timeout 30m
2020-06-12 09:31:21 +00:00
2021-04-27 07:48:59 +00:00
lint :
2021-06-04 12:26:15 +00:00
@./build/bin/golangci-lint run --config ./.golangci.yml
2019-05-27 13:51:49 +00:00
2021-06-18 03:35:11 +00:00
lintci :
2021-03-29 23:17:19 +00:00
@echo "--> Running linter for code"
2021-06-04 12:26:15 +00:00
@./build/bin/golangci-lint run --config ./.golangci.yml
2019-11-05 08:12:49 +00:00
2019-05-27 13:51:49 +00:00
lintci-deps :
2019-11-06 12:34:35 +00:00
rm -f ./build/bin/golangci-lint
2021-10-12 05:04:04 +00:00
curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b ./build/bin v1.42.1
2018-04-17 22:53:50 +00:00
2016-05-25 12:07:57 +00:00
clean :
2020-01-14 12:13:14 +00:00
env GO111MODULE = on go clean -cache
2020-10-28 03:18:10 +00:00
rm -fr build/*
2021-06-19 20:30:12 +00:00
cd libmdbx/ && make clean
2016-05-25 12:07:57 +00:00
2017-02-26 22:52:10 +00:00
# The devtools target installs tools required for 'go generate'.
# You need to put $GOBIN (or $GOPATH/bin) in your PATH to use 'go generate'.
devtools :
2020-10-02 03:56:13 +00:00
# Notice! If you adding new binary - add it also to cmd/hack/binary-deps/main.go file
$( GOBUILD) -o $( GOBIN) /stringer golang.org/x/tools/cmd/stringer
$( GOBUILD) -o $( GOBIN) /go-bindata github.com/kevinburke/go-bindata/go-bindata
$( GOBUILD) -o $( GOBIN) /gencodec github.com/fjl/gencodec
$( GOBUILD) -o $( GOBIN) /codecgen github.com/ugorji/go/codec/codecgen
$( GOBUILD) -o $( GOBIN) /abigen ./cmd/abigen
PATH = $( GOBIN) :$( PATH) go generate ./common
PATH = $( GOBIN) :$( PATH) go generate ./core/types
2021-06-25 18:13:40 +00:00
PATH = $( GOBIN) :$( PATH) go generate ./consensus/aura/...
2018-01-08 12:15:57 +00:00
@type "npm" 2> /dev/null || echo 'Please install node.js and npm'
@type "solc" 2> /dev/null || echo 'Please install solc'
@type "protoc" 2> /dev/null || echo 'Please install protoc'
2017-02-26 22:52:10 +00:00
2019-05-27 13:51:49 +00:00
bindings :
2020-10-02 03:56:13 +00:00
PATH = $( GOBIN) :$( PATH) go generate ./tests/contracts/
PATH = $( GOBIN) :$( PATH) go generate ./core/state/contracts/
2020-09-03 07:51:19 +00:00
2020-04-29 10:51:07 +00:00
prometheus :
2020-08-01 15:05:48 +00:00
docker-compose up prometheus grafana
2020-06-05 16:46:34 +00:00
2021-02-28 04:11:28 +00:00
2020-06-05 16:46:34 +00:00
escape :
2020-06-15 16:39:34 +00:00
cd $( path) && go test -gcflags "-m -m" -run none -bench= BenchmarkJumpdest* -benchmem -memprofile mem.out