clean up abci/libs directoriespull/1925/head
@ -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 |
@ -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 |