mirror of
https://github.com/lightninglabs/loop
synced 2024-11-09 19:10:47 +00:00
dad103530f
Protobuf does not allow naming conflicts for files within the same process, because all proto messages register themselves in a global registry. This is problematic because the server's itests import the client's looprpc package to make rpc queries to the loopd client, thus importing duplicate common.proto and server.proto from the client's looprc package (since they're both in there as well). This change moves the server's proto files into their own directory so that they are not imported when we want to use the client's files. We cannot change the package name for the server, because that would be a breaking change (the package name is included in URIS). Fortunately, we have the go_package option which allows us to place generated files in a different location.
97 lines
2.5 KiB
Makefile
97 lines
2.5 KiB
Makefile
.DEFAULT_GOAL := build
|
|
|
|
PKG := github.com/lightninglabs/loop
|
|
|
|
GOTEST := GO111MODULE=on go test -v
|
|
|
|
GO_BIN := ${GOPATH}/bin
|
|
GOBUILD := GO111MODULE=on go build -v
|
|
GOINSTALL := GO111MODULE=on go install -v
|
|
GOMOD := GO111MODULE=on go mod
|
|
|
|
COMMIT := $(shell git describe --abbrev=40 --dirty)
|
|
LDFLAGS := -ldflags "-X $(PKG).Commit=$(COMMIT)"
|
|
DEV_TAGS = dev
|
|
|
|
GOFILES_NOVENDOR = $(shell find . -type f -name '*.go' -not -path "./vendor/*")
|
|
GOLIST := go list $(PKG)/... | grep -v '/vendor/'
|
|
|
|
LINT_BIN := $(GO_BIN)/golangci-lint
|
|
LINT_PKG := github.com/golangci/golangci-lint/cmd/golangci-lint
|
|
LINT_COMMIT := v1.18.0
|
|
LINT = $(LINT_BIN) run -v
|
|
|
|
DEPGET := cd /tmp && GO111MODULE=on go get -v
|
|
XARGS := xargs -L 1
|
|
|
|
TEST_FLAGS = -test.timeout=20m
|
|
|
|
UNIT := $(GOLIST) | $(XARGS) env $(GOTEST) $(TEST_FLAGS)
|
|
|
|
GREEN := "\\033[0;32m"
|
|
NC := "\\033[0m"
|
|
define print
|
|
echo $(GREEN)$1$(NC)
|
|
endef
|
|
|
|
$(LINT_BIN):
|
|
@$(call print, "Fetching linter")
|
|
$(DEPGET) $(LINT_PKG)@$(LINT_COMMIT)
|
|
|
|
unit:
|
|
@$(call print, "Running unit tests.")
|
|
$(UNIT)
|
|
|
|
fmt:
|
|
@$(call print, "Formatting source.")
|
|
gofmt -l -w -s $(GOFILES_NOVENDOR)
|
|
|
|
lint: $(LINT_BIN)
|
|
@$(call print, "Linting source.")
|
|
$(LINT)
|
|
|
|
mod-tidy:
|
|
@$(call print, "Tidying modules.")
|
|
$(GOMOD) tidy
|
|
|
|
mod-check:
|
|
@$(call print, "Checking modules.")
|
|
$(GOMOD) tidy
|
|
if test -n "$$(git status | grep -e "go.mod\|go.sum")"; then echo "Running go mod tidy changes go.mod/go.sum"; git status; git diff; exit 1; fi
|
|
|
|
# ============
|
|
# INSTALLATION
|
|
# ============
|
|
|
|
build:
|
|
@$(call print, "Building debug loop and loopd.")
|
|
$(GOBUILD) -tags="$(DEV_TAGS)" -o loop-debug $(LDFLAGS) $(PKG)/cmd/loop
|
|
$(GOBUILD) -tags="$(DEV_TAGS)" -o loopd-debug $(LDFLAGS) $(PKG)/cmd/loopd
|
|
|
|
install:
|
|
@$(call print, "Installing loop and loopd.")
|
|
$(GOINSTALL) -tags="${tags}" $(LDFLAGS) $(PKG)/cmd/loop
|
|
$(GOINSTALL) -tags="${tags}" $(LDFLAGS) $(PKG)/cmd/loopd
|
|
|
|
rpc:
|
|
@$(call print, "Compiling protos.")
|
|
cd ./swapserverrpc; ./gen_protos_docker.sh
|
|
cd ./looprpc; ./gen_protos_docker.sh
|
|
|
|
rpc-check: rpc
|
|
@$(call print, "Verifying protos.")
|
|
if test -n "$$(git describe --dirty | grep dirty)"; then echo "Protos not properly formatted or not compiled with correct version!"; git status; git diff; exit 1; fi
|
|
|
|
rpc-js-compile:
|
|
@$(call print, "Compiling JSON/WASM stubs.")
|
|
GOOS=js GOARCH=wasm $(GOBUILD) $(PKG)/looprpc
|
|
|
|
rpc-format:
|
|
cd ./looprpc; find . -name "*.proto" | xargs clang-format --style=file -i
|
|
cd ./swapserverrpc; find . -name "*.proto" | xargs clang-format --style=file -i
|
|
|
|
clean:
|
|
@$(call print, "Cleaning up.")
|
|
rm -f ./loop-debug ./loopd-debug
|
|
rm -rf ./vendor
|