mirror of
https://github.com/status-im/status-go.git
synced 2025-01-22 04:31:30 +00:00
f4cd8d27b5
This function returns only the new messages from the filter, never returns the same message for the same user twice.
187 lines
7.9 KiB
Makefile
187 lines
7.9 KiB
Makefile
.PHONY: statusgo all test xgo clean help
|
|
.PHONY: statusgo-android statusgo-ios
|
|
|
|
help: ##@other Show this help
|
|
@perl -e '$(HELP_FUN)' $(MAKEFILE_LIST)
|
|
|
|
ifndef GOPATH
|
|
$(error GOPATH not set. Please set GOPATH and make sure status-go is located at $$GOPATH/src/github.com/status-im/status-go. \
|
|
For more information about the GOPATH environment variable, see https://golang.org/doc/code.html#GOPATH)
|
|
endif
|
|
|
|
CGO_CFLAGS=-I/$(JAVA_HOME)/include -I/$(JAVA_HOME)/include/darwin
|
|
GOBIN=$(dir $(realpath $(firstword $(MAKEFILE_LIST))))build/bin
|
|
GIT_COMMIT := $(shell git rev-parse --short HEAD)
|
|
|
|
BUILD_FLAGS := $(shell echo "-ldflags '-X main.buildStamp=`date -u '+%Y-%m-%d.%H:%M:%S'` -X main.gitCommit=$(GIT_COMMIT) -X github.com/status-im/status-go/geth/params.VersionMeta=$(GIT_COMMIT)'")
|
|
|
|
GO ?= latest
|
|
XGOVERSION ?= 1.9.2
|
|
XGOIMAGE = statusteam/xgo:$(XGOVERSION)
|
|
XGOIMAGEIOSSIM = statusteam/xgo-ios-simulator:$(XGOVERSION)
|
|
|
|
networkid ?= StatusChain
|
|
gotest_extraflags =
|
|
|
|
DOCKER_IMAGE_NAME ?= statusteam/status-go
|
|
|
|
DOCKER_TEST_WORKDIR = /go/src/github.com/status-im/status-go/
|
|
DOCKER_TEST_IMAGE = golang:1.9
|
|
|
|
UNIT_TEST_PACKAGES := $(shell go list ./... | grep -v /vendor | grep -v /t/e2e | grep -v /t/destructive | grep -v /lib)
|
|
|
|
# This is a code for automatic help generator.
|
|
# It supports ANSI colors and categories.
|
|
# To add new item into help output, simply add comments
|
|
# starting with '##'. To add category, use @category.
|
|
GREEN := $(shell echo "\e[32m")
|
|
WHITE := $(shell echo "\e[37m")
|
|
YELLOW := $(shell echo "\e[33m")
|
|
RESET := $(shell echo "\e[0m")
|
|
HELP_FUN = \
|
|
%help; \
|
|
while(<>) { push @{$$help{$$2 // 'options'}}, [$$1, $$3] if /^([a-zA-Z0-9\-]+)\s*:.*\#\#(?:@([a-zA-Z\-]+))?\s(.*)$$/ }; \
|
|
print "Usage: make [target]\n\n"; \
|
|
for (sort keys %help) { \
|
|
print "${WHITE}$$_:${RESET}\n"; \
|
|
for (@{$$help{$$_}}) { \
|
|
$$sep = " " x (32 - length $$_->[0]); \
|
|
print " ${YELLOW}$$_->[0]${RESET}$$sep${GREEN}$$_->[1]${RESET}\n"; \
|
|
}; \
|
|
print "\n"; \
|
|
}
|
|
|
|
statusgo: ##@build Build status-go as statusd server
|
|
go build -i -o $(GOBIN)/statusd -v -tags '$(BUILD_TAGS)' $(BUILD_FLAGS) ./cmd/statusd
|
|
@echo "Compilation done."
|
|
@echo "Run \"build/bin/statusd -h\" to view available commands."
|
|
|
|
statusgo-cross: statusgo-android statusgo-ios
|
|
@echo "Full cross compilation done."
|
|
@ls -ld $(GOBIN)/statusgo-*
|
|
|
|
statusgo-android: xgo ##@cross-compile Build status-go for Android
|
|
./_assets/patches/patcher -b . -p geth-xgo
|
|
$(GOPATH)/bin/xgo --image $(XGOIMAGE) --go=$(GO) -out statusgo --dest=$(GOBIN) --targets=android-16/aar -v -tags '$(BUILD_TAGS)' $(BUILD_FLAGS) ./lib
|
|
./_assets/patches/patcher -b . -p geth-xgo -r
|
|
@echo "Android cross compilation done."
|
|
|
|
statusgo-ios: xgo ##@cross-compile Build status-go for iOS
|
|
./_assets/patches/patcher -b . -p geth-xgo
|
|
$(GOPATH)/bin/xgo --image $(XGOIMAGE) --go=$(GO) -out statusgo --dest=$(GOBIN) --targets=ios-9.3/framework -v -tags '$(BUILD_TAGS)' $(BUILD_FLAGS) ./lib
|
|
./_assets/patches/patcher -b . -p geth-xgo -r
|
|
@echo "iOS framework cross compilation done."
|
|
|
|
statusgo-ios-simulator: xgo ##@cross-compile Build status-go for iOS Simulator
|
|
@docker pull $(XGOIMAGEIOSSIM)
|
|
./_assets/patches/patcher -b . -p geth-xgo
|
|
$(GOPATH)/bin/xgo --image $(XGOIMAGEIOSSIM) --go=$(GO) -out statusgo --dest=$(GOBIN) --targets=ios-9.3/framework -v -tags '$(BUILD_TAGS)' $(BUILD_FLAGS) ./lib
|
|
./_assets/patches/patcher -b . -p geth-xgo -r
|
|
@echo "iOS framework cross compilation done."
|
|
|
|
statusgo-library: ##@cross-compile Build status-go as static library for current platform
|
|
@echo "Building static library..."
|
|
go build -buildmode=c-archive -o $(GOBIN)/libstatus.a ./lib
|
|
@echo "Static library built:"
|
|
@ls -la $(GOBIN)/libstatus.*
|
|
|
|
docker-image: BUILD_TAGS ?= metrics prometheus
|
|
docker-image: ##@docker Build docker image (use DOCKER_IMAGE_NAME to set the image name)
|
|
@echo "Building docker image..."
|
|
docker build --file _assets/build/Dockerfile --build-arg "build_tags=$(BUILD_TAGS)" . -t $(DOCKER_IMAGE_NAME):latest
|
|
|
|
docker-image-tag: ##@docker Tag DOCKER_IMAGE_NAME:latest with a tag following pattern $GIT_SHA[:8]-$BUILD_TAGS
|
|
@echo "Tagging docker image..."
|
|
docker tag $(DOCKER_IMAGE_NAME):latest $(DOCKER_IMAGE_NAME):$(shell BUILD_TAGS="$(BUILD_TAGS)" ./_assets/ci/get-docker-image-tag.sh)
|
|
|
|
xgo-docker-images: ##@docker Build xgo docker images
|
|
@echo "Building xgo docker images..."
|
|
docker build _assets/build/xgo/base -t $(XGOIMAGE)
|
|
docker build _assets/build/xgo/ios-simulator -t $(XGOIMAGEIOSSIM)
|
|
|
|
xgo:
|
|
docker pull $(XGOIMAGE)
|
|
go get github.com/karalabe/xgo
|
|
|
|
setup: lint-install mock-install ##@other Prepare project for first build
|
|
|
|
generate: ##@other Regenerate assets and other auto-generated stuff
|
|
go generate ./static
|
|
|
|
mock-install: ##@other Install mocking tools
|
|
go get -u github.com/golang/mock/mockgen
|
|
|
|
mock: ##@other Regenerate mocks
|
|
mockgen -package=fcm -destination=geth/notifications/push/fcm/client_mock.go -source=geth/notifications/push/fcm/client.go
|
|
mockgen -package=fake -destination=geth/transactions/fake/mock.go -source=geth/transactions/fake/txservice.go
|
|
mockgen -package=account -destination=geth/account/accounts_mock.go -source=geth/account/accounts.go
|
|
mockgen -package=jail -destination=geth/jail/cell_mock.go -source=geth/jail/cell.go
|
|
|
|
docker-test: ##@tests Run tests in a docker container with golang.
|
|
docker run --privileged --rm -it -v "$(shell pwd):$(DOCKER_TEST_WORKDIR)" -w "$(DOCKER_TEST_WORKDIR)" $(DOCKER_TEST_IMAGE) go test ${ARGS}
|
|
|
|
test: test-unit-coverage ##@tests Run basic, short tests during development
|
|
|
|
test-unit: ##@tests Run unit and integration tests
|
|
go test -v $(UNIT_TEST_PACKAGES) $(gotest_extraflags)
|
|
|
|
test-unit-coverage: ##@tests Run unit and integration tests with coverage
|
|
go test -coverpkg= $(UNIT_TEST_PACKAGES) $(gotest_extraflags)
|
|
|
|
test-unit-race: gotest_extraflags=-race
|
|
test-unit-race: test-unit ##@tests Run unit and integration tests with -race flag
|
|
|
|
test-e2e: ##@tests Run e2e tests
|
|
# order: reliability then alphabetical
|
|
# TODO(tiabc): make a single command out of them adding `-p 1` flag.
|
|
go test -timeout 5m ./t/e2e/accounts/... -network=$(networkid) $(gotest_extraflags)
|
|
go test -timeout 5m ./t/e2e/api/... -network=$(networkid) $(gotest_extraflags)
|
|
go test -timeout 5m ./t/e2e/node/... -network=$(networkid) $(gotest_extraflags)
|
|
go test -timeout 50m ./t/e2e/jail/... -network=$(networkid) $(gotest_extraflags)
|
|
go test -timeout 20m ./t/e2e/rpc/... -network=$(networkid) $(gotest_extraflags)
|
|
go test -timeout 20m ./t/e2e/whisper/... -network=$(networkid) $(gotest_extraflags)
|
|
go test -timeout 10m ./t/e2e/transactions/... -network=$(networkid) $(gotest_extraflags)
|
|
go test -timeout 10m ./t/e2e/services/... -network=$(networkid) $(gotest_extraflags)
|
|
# e2e_test tag is required to include some files from ./lib without _test suffix
|
|
go test -timeout 40m -tags e2e_test ./lib -network=$(networkid) $(gotest_extraflags)
|
|
|
|
test-e2e-race: gotest_extraflags=-race
|
|
test-e2e-race: test-e2e ##@tests Run e2e tests with -race flag
|
|
|
|
lint-install:
|
|
go get -u github.com/alecthomas/gometalinter
|
|
gometalinter --install
|
|
|
|
lint:
|
|
@echo "lint"
|
|
@gometalinter ./...
|
|
|
|
ci: lint mock test-unit test-e2e ##@tests Run all linters and tests at once
|
|
|
|
clean: ##@other Cleanup
|
|
rm -fr build/bin/*
|
|
rm -f coverage.out coverage-all.out coverage.html
|
|
|
|
deep-clean: clean
|
|
rm -Rdf .ethereumtest/StatusChain
|
|
|
|
vendor-check: ##@dependencies Require all new patches and disallow other changes
|
|
./_assets/patches/patcher -c
|
|
./_assets/ci/isolate-vendor-check.sh
|
|
|
|
dep-ensure: ##@dependencies Dep ensure and apply all patches
|
|
@dep ensure
|
|
./_assets/patches/patcher
|
|
|
|
dep-install: ##@dependencies Install vendoring tool
|
|
go get -u github.com/golang/dep/cmd/dep
|
|
|
|
update-geth: ##@dependencies Update geth (use GETH_BRANCH to optionally set the geth branch name)
|
|
./_assets/ci/update-geth.sh $(GETH_BRANCH)
|
|
|
|
patch: ##@patching Revert and apply all patches
|
|
./_assets/patches/patcher
|
|
|
|
patch-revert: ##@patching Revert all patches only
|
|
./_assets/patches/patcher -r
|