lnd.xprv/Makefile
Olaoluwa Osuntokun 8bc61693bf
build: update build file to exclude go 1.10 from linting
In this commit, we modify our build file to only lint under go 1.11. We
do this as there's been a breaking change in gofmt between go 1.10 and
go 1.11 that causes files which pass the linter under go 1.10, to fail
the linter under go 1.11. In the end, we only really need to lint using
one version of go.

In order to achieve this, we "unroll" the build matrix to enumerate each
version and the environment variables that it should be run with. We
then modify the Makefile to only include the lint directive if the
particular env variable is set ($(USE_LINT)). With these two changes,
we'll now only lint under go 1.11.
2018-10-07 14:37:39 +09:00

255 lines
5.7 KiB
Makefile

PKG := github.com/lightningnetwork/lnd
ESCPKG := github.com\/lightningnetwork\/lnd
DEP_PKG := github.com/golang/dep/cmd/dep
BTCD_PKG := github.com/btcsuite/btcd
GLIDE_PKG := github.com/Masterminds/glide
GOVERALLS_PKG := github.com/mattn/goveralls
LINT_PKG := gopkg.in/alecthomas/gometalinter.v2
GO_BIN := ${GOPATH}/bin
DEP_BIN := $(GO_BIN)/dep
BTCD_BIN := $(GO_BIN)/btcd
GLIDE_BIN := $(GO_BIN)/glide
GOVERALLS_BIN := $(GO_BIN)/goveralls
LINT_BIN := $(GO_BIN)/gometalinter.v2
HAVE_DEP := $(shell command -v $(DEP_BIN) 2> /dev/null)
HAVE_BTCD := $(shell command -v $(BTCD_BIN) 2> /dev/null)
HAVE_GLIDE := $(shell command -v $(GLIDE_BIN) 2> /dev/null)
HAVE_GOVERALLS := $(shell command -v $(GOVERALLS_BIN) 2> /dev/null)
HAVE_LINTER := $(shell command -v $(LINT_BIN) 2> /dev/null)
BTCD_DIR :=${GOPATH}/src/$(BTCD_PKG)
COMMIT := $(shell git rev-parse HEAD)
LDFLAGS := -ldflags "-X main.Commit=$(COMMIT)"
GLIDE_COMMIT := 84607742b10f492430762d038e954236bbaf23f7
BTCD_COMMIT := $(shell cat Gopkg.toml | \
grep -A1 $(BTCD_PKG) | \
tail -n1 | \
awk '{ print $$3 }' | \
tr -d '"')
GOBUILD := go build -v
GOINSTALL := go install -v
GOTEST := go test -v
GOLIST := go list $(PKG)/... | grep -v '/vendor/'
GOLISTCOVER := $(shell go list -f '{{.ImportPath}}' ./... | sed -e 's/^$(ESCPKG)/./')
GOLISTLINT := $(shell go list -f '{{.Dir}}' ./... | grep -v 'lnrpc')
RM := rm -f
CP := cp
MAKE := make
XARGS := xargs -L 1
include make/testing_flags.mk
COVER = for dir in $(GOLISTCOVER); do \
$(GOTEST) -tags="$(TEST_TAGS)" \
-covermode=count \
-coverprofile=$$dir/profile.tmp $$dir; \
\
if [ $$? != 0 ] ; \
then \
exit 1; \
fi ; \
\
if [ -f $$dir/profile.tmp ]; then \
cat $$dir/profile.tmp | \
tail -n +2 >> profile.cov; \
$(RM) $$dir/profile.tmp; \
fi \
done
LINT = $(LINT_BIN) \
--disable-all \
--enable=gofmt \
--enable=vet \
--enable=golint \
--line-length=72 \
--deadline=4m $(GOLISTLINT) 2>&1 | \
grep -v 'ALL_CAPS\|OP_' 2>&1 | \
tee /dev/stderr
CGO_STATUS_QUO := ${CGO_ENABLED}
GREEN := "\\033[0;32m"
NC := "\\033[0m"
define print
echo $(GREEN)$1$(NC)
endef
default: scratch
all: scratch check install
# ============
# DEPENDENCIES
# ============
$(DEP_BIN):
@$(call print, "Fetching dep.")
go get -u $(DEP_PKG)
$(GLIDE_BIN):
@$(call print, "Fetching glide.")
go get -d $(GLIDE_PKG)
cd ${GOPATH}/src/$(GLIDE_PKG) && ( git checkout $(GLIDE_COMMIT) || ( git fetch --all && git checkout $(GLIDE_COMMIT) ) )
$(GOINSTALL) $(GLIDE_PKG)
$(GOVERALLS_BIN):
@$(call print, "Fetching goveralls.")
go get -u $(GOVERALLS_PKG)
$(LINT_BIN):
@$(call print, "Fetching gometalinter.v2")
go get -u $(LINT_PKG)
$(GOINSTALL) $(LINT_PKG)
dep: $(DEP_BIN)
@$(call print, "Compiling dependencies.")
dep ensure -v
$(BTCD_DIR):
@$(call print, "Fetching btcd.")
go get -d github.com/btcsuite/btcd
btcd: $(GLIDE_BIN) $(BTCD_DIR)
@$(call print, "Compiling btcd dependencies.")
cd $(BTCD_DIR) && ( git checkout $(BTCD_COMMIT) || ( git fetch --all && git checkout $(BTCD_COMMIT) ) ) && glide install
@$(call print, "Installing btcd and btcctl.")
$(GOINSTALL) $(BTCD_PKG)
$(GOINSTALL) $(BTCD_PKG)/cmd/btcctl
# ============
# INSTALLATION
# ============
build:
@$(call print, "Building debug lnd and lncli.")
$(GOBUILD) -tags="$(TEST_TAGS) ${tags}" -o lnd-debug $(LDFLAGS) $(PKG)
$(GOBUILD) -tags="$(TEST_TAGS) ${tags}" -o lncli-debug $(LDFLAGS) $(PKG)/cmd/lncli
install:
@$(call print, "Installing lnd and lncli.")
go install -v -tags="${tags}" $(LDFLAGS) $(PKG)
go install -v -tags="${tags}" $(LDFLAGS) $(PKG)/cmd/lncli
scratch: dep build
# =======
# TESTING
# =======
check: unit itest
itest: btcd build
@$(call print, "Running integration tests.")
$(ITEST)
unit: btcd
@$(call print, "Running unit tests.")
$(UNIT)
unit-cover:
@$(call print, "Running unit coverage tests.")
echo "mode: count" > profile.cov
$(COVER)
unit-race:
@$(call print, "Running unit race tests.")
export CGO_ENABLED=1; env GORACE="history_size=7 halt_on_errors=1" $(UNIT_RACE)
export CGO_ENABLED=$(CGO_STATUS_QUO)
# =============
# FLAKE HUNTING
# =============
flakehunter: build
@$(call print, "Flake hunting integration tests.")
while [ $$? -eq 0 ]; do $(ITEST); done
flake-unit:
@$(call print, "Flake hunting unit tests.")
GOTRACEBACK=all $(UNIT) -count=1
while [ $$? -eq 0 ]; do /bin/sh -c "GOTRACEBACK=all $(UNIT) -count=1"; done
# ======
# TRAVIS
# ======
ifeq ($(RACE)$(USE_LINT), FALSETRUE)
travis: dep lint build itest unit-cover $(GOVERALLS_BIN)
@$(call print, "Sending coverage report.")
$(GOVERALLS_BIN) -coverprofile=profile.cov -service=travis-ci
endif
ifeq ($(RACE)$(USE_LINT), FALSEFALSE)
travis: dep build itest unit-cover $(GOVERALLS_BIN)
@$(call print, "Sending coverage report.")
$(GOVERALLS_BIN) -coverprofile=profile.cov -service=travis-ci
endif
ifeq ($(RACE)$(USE_LINT), TRUETRUE)
travis: dep lint btcd unit-race
endif
ifeq ($(RACE)$(USE_LINT), TRUEFALSE)
travis: dep btcd unit-race
endif
# =========
# UTILITIES
# =========
fmt:
@$(call print, "Formatting source.")
$(GOLIST) | $(XARGS) go fmt -x
lint: $(LINT_BIN)
@$(call print, "Linting source.")
$(LINT_BIN) --install 1> /dev/null
test -z "$$($(LINT))"
list:
@$(call print, "Listing commands.")
@$(MAKE) -qp | \
awk -F':' '/^[a-zA-Z0-9][^$$#\/\t=]*:([^=]|$$)/ {split($$1,A,/ /);for(i in A)print A[i]}' | \
grep -v Makefile | \
sort
rpc:
@$(call print, "Compiling protos.")
cd ./lnrpc; ./gen_protos.sh
clean:
@$(call print, "Cleaning source.$(NC)")
$(RM) ./lnd-debug ./lncli-debug
$(RM) -r ./vendor .vendor-new
.PHONY: all \
btcd \
default \
dep \
build \
install \
scratch \
check \
itest \
unit \
unit-cover \
unit-race \
flakehunter \
flake-unit \
travis \
fmt \
lint \
list \
rpc \
clean