mirror of
https://github.com/fluencelabs/tendermint
synced 2025-06-13 13:21:20 +00:00
Merge pull request #1906 from tendermint/zach/1793-repo-consolidation
clean up abci/libs directories
This commit is contained in:
@ -31,8 +31,7 @@ jobs:
|
|||||||
name: binaries
|
name: binaries
|
||||||
command: |
|
command: |
|
||||||
export PATH="$GOBIN:$PATH"
|
export PATH="$GOBIN:$PATH"
|
||||||
make install
|
make install install_abci
|
||||||
cd abci && make install
|
|
||||||
- persist_to_workspace:
|
- persist_to_workspace:
|
||||||
root: /tmp/workspace
|
root: /tmp/workspace
|
||||||
paths:
|
paths:
|
||||||
|
88
Makefile
88
Makefile
@ -1,7 +1,12 @@
|
|||||||
GOTOOLS = \
|
GOTOOLS = \
|
||||||
|
github.com/mitchellh/gox \
|
||||||
github.com/golang/dep/cmd/dep \
|
github.com/golang/dep/cmd/dep \
|
||||||
gopkg.in/alecthomas/gometalinter.v2
|
gopkg.in/alecthomas/gometalinter.v2 \
|
||||||
|
github.com/gogo/protobuf/protoc-gen-gogo \
|
||||||
|
github.com/gogo/protobuf/gogoproto \
|
||||||
|
github.com/square/certstrap
|
||||||
PACKAGES=$(shell go list ./... | grep -v '/vendor/')
|
PACKAGES=$(shell go list ./... | grep -v '/vendor/')
|
||||||
|
INCLUDE = -I=. -I=${GOPATH}/src -I=${GOPATH}/src/github.com/gogo/protobuf/protobuf
|
||||||
BUILD_TAGS?=tendermint
|
BUILD_TAGS?=tendermint
|
||||||
BUILD_FLAGS = -ldflags "-X github.com/tendermint/tendermint/version.GitCommit=`git rev-parse --short=8 HEAD`"
|
BUILD_FLAGS = -ldflags "-X github.com/tendermint/tendermint/version.GitCommit=`git rev-parse --short=8 HEAD`"
|
||||||
|
|
||||||
@ -11,7 +16,7 @@ check: check_tools ensure_deps
|
|||||||
|
|
||||||
|
|
||||||
########################################
|
########################################
|
||||||
### Build
|
### Build Tendermint
|
||||||
|
|
||||||
build:
|
build:
|
||||||
CGO_ENABLED=0 go build $(BUILD_FLAGS) -tags '$(BUILD_TAGS)' -o build/tendermint ./cmd/tendermint/
|
CGO_ENABLED=0 go build $(BUILD_FLAGS) -tags '$(BUILD_TAGS)' -o build/tendermint ./cmd/tendermint/
|
||||||
@ -22,10 +27,29 @@ build_race:
|
|||||||
install:
|
install:
|
||||||
CGO_ENABLED=0 go install $(BUILD_FLAGS) -tags '$(BUILD_TAGS)' ./cmd/tendermint
|
CGO_ENABLED=0 go install $(BUILD_FLAGS) -tags '$(BUILD_TAGS)' ./cmd/tendermint
|
||||||
|
|
||||||
|
########################################
|
||||||
|
### Build ABCI
|
||||||
|
|
||||||
|
protoc_abci:
|
||||||
|
## If you get the following error,
|
||||||
|
## "error while loading shared libraries: libprotobuf.so.14: cannot open shared object file: No such file or directory"
|
||||||
|
## See https://stackoverflow.com/a/25518702
|
||||||
|
protoc $(INCLUDE) --gogo_out=plugins=grpc:. abci/types/*.proto
|
||||||
|
@echo "--> adding nolint declarations to protobuf generated files"
|
||||||
|
@awk '/package abci/types/ { print "//nolint: gas"; print; next }1' abci/types/types.pb.go > abci/types/types.pb.go.new
|
||||||
|
@mv abci/types/types.pb.go.new abci/types/types.pb.go
|
||||||
|
|
||||||
|
build_abci:
|
||||||
|
@go build -i ./abci/cmd/...
|
||||||
|
|
||||||
|
install_abci:
|
||||||
|
@go install ./abci/cmd/...
|
||||||
|
|
||||||
########################################
|
########################################
|
||||||
### Distribution
|
### Distribution
|
||||||
|
|
||||||
# dist builds binaries for all platforms and packages them for distribution
|
# dist builds binaries for all platforms and packages them for distribution
|
||||||
|
# TODO add abci to these scripts
|
||||||
dist:
|
dist:
|
||||||
@BUILD_TAGS='$(BUILD_TAGS)' sh -c "'$(CURDIR)/scripts/dist.sh'"
|
@BUILD_TAGS='$(BUILD_TAGS)' sh -c "'$(CURDIR)/scripts/dist.sh'"
|
||||||
|
|
||||||
@ -59,6 +83,17 @@ ensure_deps:
|
|||||||
@echo "--> Running dep"
|
@echo "--> Running dep"
|
||||||
@dep ensure
|
@dep ensure
|
||||||
|
|
||||||
|
#For ABCI and libs
|
||||||
|
get_protoc:
|
||||||
|
@# https://github.com/google/protobuf/releases
|
||||||
|
curl -L https://github.com/google/protobuf/releases/download/v3.4.1/protobuf-cpp-3.4.1.tar.gz | tar xvz && \
|
||||||
|
cd protobuf-3.4.1 && \
|
||||||
|
DIST_LANG=cpp ./configure && \
|
||||||
|
make && \
|
||||||
|
make install && \
|
||||||
|
cd .. && \
|
||||||
|
rm -rf protobuf-3.4.1
|
||||||
|
|
||||||
draw_deps:
|
draw_deps:
|
||||||
@# requires brew install graphviz or apt-get install graphviz
|
@# requires brew install graphviz or apt-get install graphviz
|
||||||
go get github.com/RobotsAndPencils/goviz
|
go get github.com/RobotsAndPencils/goviz
|
||||||
@ -70,6 +105,37 @@ get_deps_bin_size:
|
|||||||
@find $(WORK) -type f -name "*.a" | xargs -I{} du -hxs "{}" | sort -rh | sed -e s:${WORK}/::g > deps_bin_size.log
|
@find $(WORK) -type f -name "*.a" | xargs -I{} du -hxs "{}" | sort -rh | sed -e s:${WORK}/::g > deps_bin_size.log
|
||||||
@echo "Results can be found here: $(CURDIR)/deps_bin_size.log"
|
@echo "Results can be found here: $(CURDIR)/deps_bin_size.log"
|
||||||
|
|
||||||
|
########################################
|
||||||
|
### Libs
|
||||||
|
|
||||||
|
protoc_libs:
|
||||||
|
## If you get the following error,
|
||||||
|
## "error while loading shared libraries: libprotobuf.so.14: cannot open shared object file: No such file or directory"
|
||||||
|
## See https://stackoverflow.com/a/25518702
|
||||||
|
protoc $(INCLUDE) --go_out=plugins=grpc:. libs/common/*.proto
|
||||||
|
@echo "--> adding nolint declarations to protobuf generated files"
|
||||||
|
@awk '/package libs/common/ { print "//nolint: gas"; print; next }1' libs/common/types.pb.go > libs/common/types.pb.go.new
|
||||||
|
@mv libs/common/types.pb.go.new libs/common/types.pb.go
|
||||||
|
|
||||||
|
gen_certs: clean_certs
|
||||||
|
## Generating certificates for TLS testing...
|
||||||
|
certstrap init --common-name "tendermint.com" --passphrase ""
|
||||||
|
certstrap request-cert -ip "::" --passphrase ""
|
||||||
|
certstrap sign "::" --CA "tendermint.com" --passphrase ""
|
||||||
|
mv out/::.crt out/::.key db/remotedb
|
||||||
|
|
||||||
|
clean_certs:
|
||||||
|
## Cleaning TLS testing certificates...
|
||||||
|
rm -rf out
|
||||||
|
rm -f db/remotedb/::.crt db/remotedb/::.key
|
||||||
|
|
||||||
|
test_libs: gen_certs
|
||||||
|
GOCACHE=off go test -tags gcc $(shell go list ./... | grep -v vendor)
|
||||||
|
make clean_certs
|
||||||
|
|
||||||
|
grpc_dbserver:
|
||||||
|
protoc -I db/remotedb/proto/ db/remotedb/proto/defs.proto --go_out=plugins=grpc:db/remotedb/proto
|
||||||
|
|
||||||
########################################
|
########################################
|
||||||
### Testing
|
### Testing
|
||||||
|
|
||||||
@ -87,6 +153,15 @@ test_apps:
|
|||||||
# requires `abci-cli` and `tendermint` binaries installed
|
# requires `abci-cli` and `tendermint` binaries installed
|
||||||
bash test/app/test.sh
|
bash test/app/test.sh
|
||||||
|
|
||||||
|
test_abci_apps:
|
||||||
|
bash abci/tests/test_app/test.sh
|
||||||
|
|
||||||
|
test_abci_cli:
|
||||||
|
# test the cli against the examples in the tutorial at:
|
||||||
|
# ./docs/abci-cli.md
|
||||||
|
# if test fails, update the docs ^
|
||||||
|
@ bash abci/tests/test_cli/test.sh
|
||||||
|
|
||||||
test_persistence:
|
test_persistence:
|
||||||
# run the persistence tests using bash
|
# run the persistence tests using bash
|
||||||
# requires `abci-cli` installed
|
# requires `abci-cli` installed
|
||||||
@ -105,17 +180,16 @@ test_p2p:
|
|||||||
# requires 'tester' the image from above
|
# requires 'tester' the image from above
|
||||||
bash test/p2p/test.sh tester
|
bash test/p2p/test.sh tester
|
||||||
|
|
||||||
need_abci:
|
|
||||||
bash scripts/install_abci_apps.sh
|
|
||||||
|
|
||||||
test_integrations:
|
test_integrations:
|
||||||
make build_docker_test_image
|
make build_docker_test_image
|
||||||
make get_tools
|
make get_tools
|
||||||
make get_vendor_deps
|
make get_vendor_deps
|
||||||
make install
|
make install
|
||||||
make need_abci
|
|
||||||
make test_cover
|
make test_cover
|
||||||
make test_apps
|
make test_apps
|
||||||
|
make test_abci_apps
|
||||||
|
make test_abci_cli
|
||||||
|
make test_libs
|
||||||
make test_persistence
|
make test_persistence
|
||||||
make test_p2p
|
make test_p2p
|
||||||
|
|
||||||
@ -233,4 +307,4 @@ build-slate:
|
|||||||
# To avoid unintended conflicts with file names, always add to .PHONY
|
# To avoid unintended conflicts with file names, always add to .PHONY
|
||||||
# unless there is a reason not to.
|
# unless there is a reason not to.
|
||||||
# https://www.gnu.org/software/make/manual/html_node/Phony-Targets.html
|
# https://www.gnu.org/software/make/manual/html_node/Phony-Targets.html
|
||||||
.PHONY: check build build_race dist install check_tools get_tools update_tools get_vendor_deps draw_deps test_cover test_apps test_persistence test_p2p test test_race test_integrations test_release test100 vagrant_test fmt build-linux localnet-start localnet-stop build-docker build-docker-localnode sentry-start sentry-config sentry-stop build-slate
|
.PHONY: check build build_race build_abci dist install install_abci check_tools get_tools update_tools get_vendor_deps draw_deps get_protoc protoc_abci protoc_libs gen_certs clean_certs grpc_dbserver test_cover test_apps test_persistence test_p2p test test_race test_integrations test_release test100 vagrant_test fmt build-linux localnet-start localnet-stop build-docker build-docker-localnode sentry-start sentry-config sentry-stop build-slate
|
||||||
|
174
abci/Makefile
174
abci/Makefile
@ -1,174 +0,0 @@
|
|||||||
GOTOOLS = \
|
|
||||||
github.com/mitchellh/gox \
|
|
||||||
github.com/golang/dep/cmd/dep \
|
|
||||||
gopkg.in/alecthomas/gometalinter.v2 \
|
|
||||||
github.com/gogo/protobuf/protoc-gen-gogo \
|
|
||||||
github.com/gogo/protobuf/gogoproto
|
|
||||||
GOTOOLS_CHECK = gox dep gometalinter.v2 protoc protoc-gen-gogo
|
|
||||||
PACKAGES=$(shell go list ./... | grep -v '/vendor/')
|
|
||||||
INCLUDE = -I=. -I=${GOPATH}/src -I=${GOPATH}/src/github.com/gogo/protobuf/protobuf
|
|
||||||
|
|
||||||
all: check get_vendor_deps protoc build test install metalinter
|
|
||||||
|
|
||||||
check: check_tools
|
|
||||||
|
|
||||||
|
|
||||||
########################################
|
|
||||||
### Build
|
|
||||||
|
|
||||||
protoc:
|
|
||||||
## If you get the following error,
|
|
||||||
## "error while loading shared libraries: libprotobuf.so.14: cannot open shared object file: No such file or directory"
|
|
||||||
## See https://stackoverflow.com/a/25518702
|
|
||||||
protoc $(INCLUDE) --gogo_out=plugins=grpc:. types/*.proto
|
|
||||||
@echo "--> adding nolint declarations to protobuf generated files"
|
|
||||||
@awk '/package types/ { print "//nolint: gas"; print; next }1' types/types.pb.go > types/types.pb.go.new
|
|
||||||
@mv types/types.pb.go.new types/types.pb.go
|
|
||||||
|
|
||||||
build:
|
|
||||||
@go build -i ./cmd/...
|
|
||||||
|
|
||||||
dist:
|
|
||||||
@bash scripts/dist.sh
|
|
||||||
@bash scripts/publish.sh
|
|
||||||
|
|
||||||
install:
|
|
||||||
@go install ./cmd/...
|
|
||||||
|
|
||||||
|
|
||||||
########################################
|
|
||||||
### Tools & dependencies
|
|
||||||
|
|
||||||
check_tools:
|
|
||||||
@# https://stackoverflow.com/a/25668869
|
|
||||||
@echo "Found tools: $(foreach tool,$(GOTOOLS_CHECK),\
|
|
||||||
$(if $(shell which $(tool)),$(tool),$(error "No $(tool) in PATH")))"
|
|
||||||
|
|
||||||
get_tools:
|
|
||||||
@echo "--> Installing tools"
|
|
||||||
go get -u -v $(GOTOOLS)
|
|
||||||
@gometalinter.v2 --install
|
|
||||||
|
|
||||||
get_protoc:
|
|
||||||
@# https://github.com/google/protobuf/releases
|
|
||||||
curl -L https://github.com/google/protobuf/releases/download/v3.4.1/protobuf-cpp-3.4.1.tar.gz | tar xvz && \
|
|
||||||
cd protobuf-3.4.1 && \
|
|
||||||
DIST_LANG=cpp ./configure && \
|
|
||||||
make && \
|
|
||||||
make install && \
|
|
||||||
cd .. && \
|
|
||||||
rm -rf protobuf-3.4.1
|
|
||||||
|
|
||||||
update_tools:
|
|
||||||
@echo "--> Updating tools"
|
|
||||||
@go get -u $(GOTOOLS)
|
|
||||||
|
|
||||||
get_vendor_deps:
|
|
||||||
@rm -rf vendor/
|
|
||||||
@echo "--> Running dep ensure"
|
|
||||||
@dep ensure
|
|
||||||
|
|
||||||
|
|
||||||
########################################
|
|
||||||
### Testing
|
|
||||||
|
|
||||||
test:
|
|
||||||
@find . -path ./vendor -prune -o -name "*.sock" -exec rm {} \;
|
|
||||||
@echo "==> Running go test"
|
|
||||||
@go test $(PACKAGES)
|
|
||||||
|
|
||||||
test_race:
|
|
||||||
@find . -path ./vendor -prune -o -name "*.sock" -exec rm {} \;
|
|
||||||
@echo "==> Running go test --race"
|
|
||||||
@go test -v -race $(PACKAGES)
|
|
||||||
|
|
||||||
### three tests tested by Jenkins
|
|
||||||
test_cover:
|
|
||||||
@ bash tests/test_cover.sh
|
|
||||||
|
|
||||||
test_apps:
|
|
||||||
# test the counter using a go test script
|
|
||||||
@ bash tests/test_app/test.sh
|
|
||||||
|
|
||||||
test_cli:
|
|
||||||
# test the cli against the examples in the tutorial at:
|
|
||||||
# http://tendermint.readthedocs.io/projects/tools/en/master/abci-cli.html
|
|
||||||
#
|
|
||||||
# XXX: if this test fails, fix it and update the docs at:
|
|
||||||
# https://github.com/tendermint/tendermint/blob/develop/docs/abci-cli.rst
|
|
||||||
@ bash tests/test_cli/test.sh
|
|
||||||
|
|
||||||
########################################
|
|
||||||
### Formatting, linting, and vetting
|
|
||||||
|
|
||||||
fmt:
|
|
||||||
@go fmt ./...
|
|
||||||
|
|
||||||
metalinter:
|
|
||||||
@echo "==> Running linter"
|
|
||||||
gometalinter.v2 --vendor --deadline=600s --disable-all \
|
|
||||||
--enable=maligned \
|
|
||||||
--enable=deadcode \
|
|
||||||
--enable=goconst \
|
|
||||||
--enable=goimports \
|
|
||||||
--enable=gosimple \
|
|
||||||
--enable=ineffassign \
|
|
||||||
--enable=megacheck \
|
|
||||||
--enable=misspell \
|
|
||||||
--enable=staticcheck \
|
|
||||||
--enable=safesql \
|
|
||||||
--enable=structcheck \
|
|
||||||
--enable=unconvert \
|
|
||||||
--enable=unused \
|
|
||||||
--enable=varcheck \
|
|
||||||
--enable=vetshadow \
|
|
||||||
./...
|
|
||||||
#--enable=gas \
|
|
||||||
#--enable=dupl \
|
|
||||||
#--enable=errcheck \
|
|
||||||
#--enable=gocyclo \
|
|
||||||
#--enable=golint \ <== comments on anything exported
|
|
||||||
#--enable=gotype \
|
|
||||||
#--enable=interfacer \
|
|
||||||
#--enable=unparam \
|
|
||||||
#--enable=vet \
|
|
||||||
|
|
||||||
metalinter_all:
|
|
||||||
protoc $(INCLUDE) --lint_out=. types/*.proto
|
|
||||||
gometalinter.v2 --vendor --deadline=600s --enable-all --disable=lll ./...
|
|
||||||
|
|
||||||
|
|
||||||
########################################
|
|
||||||
### Docker
|
|
||||||
|
|
||||||
DEVDOC_SAVE = docker commit `docker ps -a -n 1 -q` devdoc:local
|
|
||||||
|
|
||||||
docker_build:
|
|
||||||
docker build -t "tendermint/abci-dev" -f Dockerfile.develop .
|
|
||||||
|
|
||||||
docker_run:
|
|
||||||
docker run -it -v "$(CURDIR):/go/src/github.com/tendermint/abci" -w "/go/src/github.com/tendermint/abci" "tendermint/abci-dev" /bin/bash
|
|
||||||
|
|
||||||
docker_run_rm:
|
|
||||||
docker run -it --rm -v "$(CURDIR):/go/src/github.com/tendermint/abci" -w "/go/src/github.com/tendermint/abci" "tendermint/abci-dev" /bin/bash
|
|
||||||
|
|
||||||
devdoc_init:
|
|
||||||
docker run -it -v "$(CURDIR):/go/src/github.com/tendermint/abci" -w "/go/src/github.com/tendermint/abci" tendermint/devdoc echo
|
|
||||||
# TODO make this safer
|
|
||||||
$(call DEVDOC_SAVE)
|
|
||||||
|
|
||||||
devdoc:
|
|
||||||
docker run -it -v "$(CURDIR):/go/src/github.com/tendermint/abci" -w "/go/src/github.com/tendermint/abci" devdoc:local bash
|
|
||||||
|
|
||||||
devdoc_save:
|
|
||||||
# TODO make this safer
|
|
||||||
$(call DEVDOC_SAVE)
|
|
||||||
|
|
||||||
devdoc_clean:
|
|
||||||
docker rmi $$(docker images -f "dangling=true" -q)
|
|
||||||
|
|
||||||
|
|
||||||
# To avoid unintended conflicts with file names, always add to .PHONY
|
|
||||||
# unless there is a reason not to.
|
|
||||||
# https://www.gnu.org/software/make/manual/html_node/Phony-Targets.html
|
|
||||||
.PHONY: check protoc build dist install check_tools get_tools get_protoc update_tools get_vendor_deps test test_race fmt metalinter metalinter_all docker_build docker_run docker_run_rm devdoc_init devdoc devdoc_save devdoc_clean
|
|
@ -1,12 +0,0 @@
|
|||||||
FROM golang:1.9.2
|
|
||||||
|
|
||||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
||||||
zip \
|
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
|
||||||
|
|
||||||
# We want to ensure that release builds never have any cgo dependencies so we
|
|
||||||
# switch that off at the highest level.
|
|
||||||
ENV CGO_ENABLED 0
|
|
||||||
|
|
||||||
RUN mkdir -p $GOPATH/src/github.com/tendermint/abci
|
|
||||||
WORKDIR $GOPATH/src/github.com/tendermint/abci
|
|
@ -1,52 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
set -e
|
|
||||||
|
|
||||||
REPO_NAME="abci"
|
|
||||||
|
|
||||||
# Get the version from the environment, or try to figure it out.
|
|
||||||
if [ -z $VERSION ]; then
|
|
||||||
VERSION=$(awk -F\" '/Version =/ { print $2; exit }' < version/version.go)
|
|
||||||
fi
|
|
||||||
if [ -z "$VERSION" ]; then
|
|
||||||
echo "Please specify a version."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
echo "==> Building version $VERSION..."
|
|
||||||
|
|
||||||
# Get the parent directory of where this script is.
|
|
||||||
SOURCE="${BASH_SOURCE[0]}"
|
|
||||||
while [ -h "$SOURCE" ] ; do SOURCE="$(readlink "$SOURCE")"; done
|
|
||||||
DIR="$( cd -P "$( dirname "$SOURCE" )/.." && pwd )"
|
|
||||||
|
|
||||||
# Change into that dir because we expect that.
|
|
||||||
cd "$DIR"
|
|
||||||
|
|
||||||
# Delete the old dir
|
|
||||||
echo "==> Removing old directory..."
|
|
||||||
rm -rf build/pkg
|
|
||||||
mkdir -p build/pkg
|
|
||||||
|
|
||||||
|
|
||||||
# Do a hermetic build inside a Docker container.
|
|
||||||
docker build -t tendermint/${REPO_NAME}-builder scripts/${REPO_NAME}-builder/
|
|
||||||
docker run --rm -e "BUILD_TAGS=$BUILD_TAGS" -v "$(pwd)":/go/src/github.com/tendermint/${REPO_NAME} tendermint/${REPO_NAME}-builder ./scripts/dist_build.sh
|
|
||||||
|
|
||||||
# Add $REPO_NAME and $VERSION prefix to package name.
|
|
||||||
rm -rf ./build/dist
|
|
||||||
mkdir -p ./build/dist
|
|
||||||
for FILENAME in $(find ./build/pkg -mindepth 1 -maxdepth 1 -type f); do
|
|
||||||
FILENAME=$(basename "$FILENAME")
|
|
||||||
cp "./build/pkg/${FILENAME}" "./build/dist/${REPO_NAME}_${VERSION}_${FILENAME}"
|
|
||||||
done
|
|
||||||
|
|
||||||
# Make the checksums.
|
|
||||||
pushd ./build/dist
|
|
||||||
shasum -a256 ./* > "./${REPO_NAME}_${VERSION}_SHA256SUMS"
|
|
||||||
popd
|
|
||||||
|
|
||||||
# Done
|
|
||||||
echo
|
|
||||||
echo "==> Results:"
|
|
||||||
ls -hl ./build/dist
|
|
||||||
|
|
||||||
exit 0
|
|
@ -1,53 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
set -e
|
|
||||||
|
|
||||||
# Get the parent directory of where this script is.
|
|
||||||
SOURCE="${BASH_SOURCE[0]}"
|
|
||||||
while [ -h "$SOURCE" ] ; do SOURCE="$(readlink "$SOURCE")"; done
|
|
||||||
DIR="$( cd -P "$( dirname "$SOURCE" )/.." && pwd )"
|
|
||||||
|
|
||||||
# Change into that dir because we expect that.
|
|
||||||
cd "$DIR"
|
|
||||||
|
|
||||||
# Get the git commit
|
|
||||||
GIT_COMMIT="$(git rev-parse --short HEAD)"
|
|
||||||
GIT_DESCRIBE="$(git describe --tags --always)"
|
|
||||||
GIT_IMPORT="github.com/tendermint/abci/version"
|
|
||||||
|
|
||||||
# Determine the arch/os combos we're building for
|
|
||||||
XC_ARCH=${XC_ARCH:-"386 amd64 arm"}
|
|
||||||
XC_OS=${XC_OS:-"solaris darwin freebsd linux windows"}
|
|
||||||
|
|
||||||
# Make sure build tools are available.
|
|
||||||
make get_tools
|
|
||||||
|
|
||||||
# Get VENDORED dependencies
|
|
||||||
make get_vendor_deps
|
|
||||||
|
|
||||||
BINARY="abci-cli"
|
|
||||||
|
|
||||||
# Build!
|
|
||||||
echo "==> Building..."
|
|
||||||
"$(which gox)" \
|
|
||||||
-os="${XC_OS}" \
|
|
||||||
-arch="${XC_ARCH}" \
|
|
||||||
-osarch="!darwin/arm !solaris/amd64 !freebsd/amd64" \
|
|
||||||
-ldflags "-X ${GIT_IMPORT}.GitCommit='${GIT_COMMIT}' -X ${GIT_IMPORT}.GitDescribe='${GIT_DESCRIBE}'" \
|
|
||||||
-output "build/pkg/{{.OS}}_{{.Arch}}/$BINARY" \
|
|
||||||
-tags="${BUILD_TAGS}" \
|
|
||||||
github.com/tendermint/abci/cmd/$BINARY
|
|
||||||
|
|
||||||
# Zip all the files.
|
|
||||||
echo "==> Packaging..."
|
|
||||||
for PLATFORM in $(find ./build/pkg -mindepth 1 -maxdepth 1 -type d); do
|
|
||||||
OSARCH=$(basename "${PLATFORM}")
|
|
||||||
echo "--> ${OSARCH}"
|
|
||||||
|
|
||||||
pushd "$PLATFORM" >/dev/null 2>&1
|
|
||||||
zip "../${OSARCH}.zip" ./*
|
|
||||||
popd >/dev/null 2>&1
|
|
||||||
done
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
exit 0
|
|
@ -1,7 +0,0 @@
|
|||||||
#! /bin/bash
|
|
||||||
|
|
||||||
# Get the version from the environment, or try to figure it out.
|
|
||||||
if [ -z $VERSION ]; then
|
|
||||||
VERSION=$(awk -F\" '/Version =/ { print $2; exit }' < version/version.go)
|
|
||||||
fi
|
|
||||||
aws s3 cp --recursive build/dist s3://tendermint/binaries/abci/v${VERSION} --acl public-read
|
|
@ -1,13 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
echo "" > coverage.txt
|
|
||||||
|
|
||||||
echo "==> Running unit tests"
|
|
||||||
for d in $(go list ./... | grep -v vendor); do
|
|
||||||
go test -race -coverprofile=profile.out -covermode=atomic "$d"
|
|
||||||
if [ -f profile.out ]; then
|
|
||||||
cat profile.out >> coverage.txt
|
|
||||||
rm profile.out
|
|
||||||
fi
|
|
||||||
done
|
|
@ -1,99 +0,0 @@
|
|||||||
GOTOOLS = \
|
|
||||||
github.com/golang/dep/cmd/dep \
|
|
||||||
# gopkg.in/alecthomas/gometalinter.v2 \
|
|
||||||
|
|
||||||
GOTOOLS_CHECK = dep #gometalinter.v2
|
|
||||||
|
|
||||||
all: check get_vendor_deps build test install
|
|
||||||
|
|
||||||
check: check_tools
|
|
||||||
|
|
||||||
|
|
||||||
########################################
|
|
||||||
### Build
|
|
||||||
|
|
||||||
# Command to generate the workd list (kept here for documentation purposes only):
|
|
||||||
wordlist:
|
|
||||||
# To re-generate wordlist.go run:
|
|
||||||
# go-bindata -ignore ".*\.go" -o keys/words/bip39/wordlist.go -pkg "wordlist" keys/bip39/wordlist/...
|
|
||||||
|
|
||||||
build: wordlist
|
|
||||||
# Nothing else to build!
|
|
||||||
|
|
||||||
install:
|
|
||||||
# Nothing to install!
|
|
||||||
|
|
||||||
|
|
||||||
########################################
|
|
||||||
### Tools & dependencies
|
|
||||||
|
|
||||||
check_tools:
|
|
||||||
@# https://stackoverflow.com/a/25668869
|
|
||||||
@echo "Found tools: $(foreach tool,$(GOTOOLS_CHECK),\
|
|
||||||
$(if $(shell which $(tool)),$(tool),$(error "No $(tool) in PATH")))"
|
|
||||||
|
|
||||||
get_tools:
|
|
||||||
@echo "--> Installing tools"
|
|
||||||
go get -u -v $(GOTOOLS)
|
|
||||||
#@gometalinter.v2 --install
|
|
||||||
|
|
||||||
update_tools:
|
|
||||||
@echo "--> Updating tools"
|
|
||||||
@go get -u $(GOTOOLS)
|
|
||||||
|
|
||||||
get_vendor_deps:
|
|
||||||
@rm -rf vendor/
|
|
||||||
@echo "--> Running dep ensure"
|
|
||||||
@dep ensure
|
|
||||||
|
|
||||||
|
|
||||||
########################################
|
|
||||||
### Testing
|
|
||||||
|
|
||||||
test:
|
|
||||||
CGO_ENABLED=0 go test -p 1 $(shell go list ./... | grep -v vendor)
|
|
||||||
|
|
||||||
########################################
|
|
||||||
### Formatting, linting, and vetting
|
|
||||||
|
|
||||||
fmt:
|
|
||||||
@go fmt ./...
|
|
||||||
|
|
||||||
metalinter:
|
|
||||||
@echo "==> Running linter"
|
|
||||||
gometalinter.v2 --vendor --deadline=600s --disable-all \
|
|
||||||
--enable=maligned \
|
|
||||||
--enable=deadcode \
|
|
||||||
--enable=goconst \
|
|
||||||
--enable=goimports \
|
|
||||||
--enable=gosimple \
|
|
||||||
--enable=ineffassign \
|
|
||||||
--enable=megacheck \
|
|
||||||
--enable=misspell \
|
|
||||||
--enable=staticcheck \
|
|
||||||
--enable=safesql \
|
|
||||||
--enable=structcheck \
|
|
||||||
--enable=unconvert \
|
|
||||||
--enable=unused \
|
|
||||||
--enable=varcheck \
|
|
||||||
--enable=vetshadow \
|
|
||||||
./...
|
|
||||||
#--enable=gas \
|
|
||||||
#--enable=dupl \
|
|
||||||
#--enable=errcheck \
|
|
||||||
#--enable=gocyclo \
|
|
||||||
#--enable=golint \ <== comments on anything exported
|
|
||||||
#--enable=gotype \
|
|
||||||
#--enable=interfacer \
|
|
||||||
#--enable=unparam \
|
|
||||||
#--enable=vet \
|
|
||||||
|
|
||||||
metalinter_all:
|
|
||||||
protoc $(INCLUDE) --lint_out=. types/*.proto
|
|
||||||
gometalinter.v2 --vendor --deadline=600s --enable-all --disable=lll ./...
|
|
||||||
|
|
||||||
|
|
||||||
# To avoid unintended conflicts with file names, always add to .PHONY
|
|
||||||
# unless there is a reason not to.
|
|
||||||
# https://www.gnu.org/software/make/manual/html_node/Phony-Targets.html
|
|
||||||
.PHONEY: check build install check_tools get_tools update_tools get_vendor_deps test fmt metalinter metalinter_all
|
|
137
libs/Makefile
137
libs/Makefile
@ -1,137 +0,0 @@
|
|||||||
GOTOOLS = \
|
|
||||||
github.com/golang/dep/cmd/dep \
|
|
||||||
github.com/golang/protobuf/protoc-gen-go \
|
|
||||||
github.com/square/certstrap
|
|
||||||
# github.com/alecthomas/gometalinter.v2 \
|
|
||||||
|
|
||||||
GOTOOLS_CHECK = dep gometalinter.v2 protoc protoc-gen-go
|
|
||||||
INCLUDE = -I=. -I=${GOPATH}/src
|
|
||||||
|
|
||||||
all: check get_vendor_deps protoc grpc_dbserver build test install metalinter
|
|
||||||
|
|
||||||
check: check_tools
|
|
||||||
|
|
||||||
########################################
|
|
||||||
### Build
|
|
||||||
|
|
||||||
protoc:
|
|
||||||
## If you get the following error,
|
|
||||||
## "error while loading shared libraries: libprotobuf.so.14: cannot open shared object file: No such file or directory"
|
|
||||||
## See https://stackoverflow.com/a/25518702
|
|
||||||
protoc $(INCLUDE) --go_out=plugins=grpc:. common/*.proto
|
|
||||||
@echo "--> adding nolint declarations to protobuf generated files"
|
|
||||||
@awk '/package common/ { print "//nolint: gas"; print; next }1' common/types.pb.go > common/types.pb.go.new
|
|
||||||
@mv common/types.pb.go.new common/types.pb.go
|
|
||||||
|
|
||||||
build:
|
|
||||||
# Nothing to build!
|
|
||||||
|
|
||||||
install:
|
|
||||||
# Nothing to install!
|
|
||||||
|
|
||||||
|
|
||||||
########################################
|
|
||||||
### Tools & dependencies
|
|
||||||
|
|
||||||
check_tools:
|
|
||||||
@# https://stackoverflow.com/a/25668869
|
|
||||||
@echo "Found tools: $(foreach tool,$(GOTOOLS_CHECK),\
|
|
||||||
$(if $(shell which $(tool)),$(tool),$(error "No $(tool) in PATH")))"
|
|
||||||
|
|
||||||
get_tools:
|
|
||||||
@echo "--> Installing tools"
|
|
||||||
go get -u -v $(GOTOOLS)
|
|
||||||
# @gometalinter.v2 --install
|
|
||||||
|
|
||||||
get_protoc:
|
|
||||||
@# https://github.com/google/protobuf/releases
|
|
||||||
curl -L https://github.com/google/protobuf/releases/download/v3.4.1/protobuf-cpp-3.4.1.tar.gz | tar xvz && \
|
|
||||||
cd protobuf-3.4.1 && \
|
|
||||||
DIST_LANG=cpp ./configure && \
|
|
||||||
make && \
|
|
||||||
make install && \
|
|
||||||
cd .. && \
|
|
||||||
rm -rf protobuf-3.4.1
|
|
||||||
|
|
||||||
update_tools:
|
|
||||||
@echo "--> Updating tools"
|
|
||||||
@go get -u $(GOTOOLS)
|
|
||||||
|
|
||||||
get_vendor_deps:
|
|
||||||
@rm -rf vendor/
|
|
||||||
@echo "--> Running dep ensure"
|
|
||||||
@dep ensure
|
|
||||||
|
|
||||||
|
|
||||||
########################################
|
|
||||||
### Testing
|
|
||||||
|
|
||||||
gen_certs: clean_certs
|
|
||||||
## Generating certificates for TLS testing...
|
|
||||||
certstrap init --common-name "tendermint.com" --passphrase ""
|
|
||||||
certstrap request-cert -ip "::" --passphrase ""
|
|
||||||
certstrap sign "::" --CA "tendermint.com" --passphrase ""
|
|
||||||
mv out/::.crt out/::.key db/remotedb
|
|
||||||
|
|
||||||
clean_certs:
|
|
||||||
## Cleaning TLS testing certificates...
|
|
||||||
rm -rf out
|
|
||||||
rm -f db/remotedb/::.crt db/remotedb/::.key
|
|
||||||
|
|
||||||
test: gen_certs
|
|
||||||
GOCACHE=off go test -tags gcc $(shell go list ./... | grep -v vendor)
|
|
||||||
make clean_certs
|
|
||||||
|
|
||||||
test100:
|
|
||||||
@for i in {1..100}; do make test; done
|
|
||||||
|
|
||||||
|
|
||||||
########################################
|
|
||||||
### Formatting, linting, and vetting
|
|
||||||
|
|
||||||
fmt:
|
|
||||||
@go fmt ./...
|
|
||||||
|
|
||||||
metalinter:
|
|
||||||
@echo "==> Running linter"
|
|
||||||
gometalinter.v2 --vendor --deadline=600s --disable-all \
|
|
||||||
--enable=deadcode \
|
|
||||||
--enable=goconst \
|
|
||||||
--enable=goimports \
|
|
||||||
--enable=gosimple \
|
|
||||||
--enable=ineffassign \
|
|
||||||
--enable=megacheck \
|
|
||||||
--enable=misspell \
|
|
||||||
--enable=staticcheck \
|
|
||||||
--enable=safesql \
|
|
||||||
--enable=structcheck \
|
|
||||||
--enable=unconvert \
|
|
||||||
--enable=unused \
|
|
||||||
--enable=varcheck \
|
|
||||||
--enable=vetshadow \
|
|
||||||
./...
|
|
||||||
|
|
||||||
#--enable=maligned \
|
|
||||||
#--enable=gas \
|
|
||||||
#--enable=aligncheck \
|
|
||||||
#--enable=dupl \
|
|
||||||
#--enable=errcheck \
|
|
||||||
#--enable=gocyclo \
|
|
||||||
#--enable=golint \ <== comments on anything exported
|
|
||||||
#--enable=gotype \
|
|
||||||
#--enable=interfacer \
|
|
||||||
#--enable=unparam \
|
|
||||||
#--enable=vet \
|
|
||||||
|
|
||||||
metalinter_all:
|
|
||||||
protoc $(INCLUDE) --lint_out=. types/*.proto
|
|
||||||
gometalinter.v2 --vendor --deadline=600s --enable-all --disable=lll ./...
|
|
||||||
|
|
||||||
|
|
||||||
# To avoid unintended conflicts with file names, always add to .PHONY
|
|
||||||
# unless there is a reason not to.
|
|
||||||
# https://www.gnu.org/software/make/manual/html_node/Phony-Targets.html
|
|
||||||
.PHONY: check protoc build check_tools get_tools get_protoc update_tools get_vendor_deps test fmt metalinter metalinter_all gen_certs clean_certs
|
|
||||||
|
|
||||||
grpc_dbserver:
|
|
||||||
protoc -I db/remotedb/proto/ db/remotedb/proto/defs.proto --go_out=plugins=grpc:db/remotedb/proto
|
|
@ -1,14 +0,0 @@
|
|||||||
#! /bin/bash
|
|
||||||
|
|
||||||
set +u
|
|
||||||
if [[ "$DEP" == "" ]]; then
|
|
||||||
DEP=$GOPATH/src/github.com/tendermint/tendermint/Gopkg.lock
|
|
||||||
fi
|
|
||||||
set -u
|
|
||||||
|
|
||||||
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
LIB=$1
|
|
||||||
|
|
||||||
grep -A100 "$LIB" "$DEP" | grep revision | head -n1 | grep -o '"[^"]\+"' | cut -d '"' -f 2
|
|
@ -1,12 +0,0 @@
|
|||||||
#! /bin/bash
|
|
||||||
|
|
||||||
# get the abci commit used by tendermint
|
|
||||||
COMMIT=$(bash scripts/dep_utils/parse.sh abci)
|
|
||||||
echo "Checking out vendored commit for abci: $COMMIT"
|
|
||||||
|
|
||||||
go get -d github.com/tendermint/abci
|
|
||||||
cd "$GOPATH/src/github.com/tendermint/abci" || exit
|
|
||||||
git checkout "$COMMIT"
|
|
||||||
make get_tools
|
|
||||||
make get_vendor_deps
|
|
||||||
make install
|
|
@ -21,15 +21,12 @@ ADD Makefile Makefile
|
|||||||
RUN make get_tools
|
RUN make get_tools
|
||||||
RUN make get_vendor_deps
|
RUN make get_vendor_deps
|
||||||
|
|
||||||
# Install the apps
|
|
||||||
ADD scripts scripts
|
|
||||||
RUN bash scripts/install_abci_apps.sh
|
|
||||||
|
|
||||||
# Now copy in the code
|
# Now copy in the code
|
||||||
# NOTE: this will overwrite whatever is in vendor/
|
# NOTE: this will overwrite whatever is in vendor/
|
||||||
COPY . $REPO
|
COPY . $REPO
|
||||||
|
|
||||||
RUN go install ./cmd/tendermint
|
RUN go install ./cmd/tendermint
|
||||||
|
RUN go install ./abci/cmd/abci-cli
|
||||||
|
|
||||||
# expose the volume for debugging
|
# expose the volume for debugging
|
||||||
VOLUME $REPO
|
VOLUME $REPO
|
||||||
|
Reference in New Issue
Block a user