diff --git a/Makefile b/Makefile index d0216b3..c001a39 100644 --- a/Makefile +++ b/Makefile @@ -3,26 +3,28 @@ IMAGE_NAME := mtg APP_NAME := $(IMAGE_NAME) CC_BINARIES := $(shell bash -c "echo -n $(APP_NAME)-{linux,freebsd,openbsd}-{386,amd64} $(APP_NAME)-linux-{arm,arm64}") -APP_DEPS := version.go -GOLANGCI_LINT_VERSION := v1.10.2 +GOLANGCI_LINT_VERSION := v1.11.2 -COMMON_BUILD_FLAGS := -ldflags="-s -w" +VERSION_GO := $(shell go version) +VERSION_DATE := $(shell date -Ru) +VERSION_TAG := $(shell git describe --tags --always) +COMMON_BUILD_FLAGS := -ldflags="-s -w -X 'main.version=$(VERSION_TAG) ($(VERSION_GO)) [$(VERSION_DATE)]'" MOD_ON := env GO111MODULE=on MOD_OFF := env GO111MODULE=auto # ----------------------------------------------------------------------------- -$(APP_NAME): $(APP_DEPS) +$(APP_NAME): @$(MOD_ON) go build $(COMMON_BUILD_FLAGS) -o "$(APP_NAME)" -static-$(APP_NAME): $(APP_DEPS) +static-$(APP_NAME): @$(MOD_ON) env CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo $(COMMON_BUILD_FLAGS) -o "$(APP_NAME)" $(APP_NAME)-%: GOOS=$(shell echo -n "$@" | sed 's?$(APP_NAME)-??' | cut -f1 -d-) $(APP_NAME)-%: GOARCH=$(shell echo -n "$@" | sed 's?$(APP_NAME)-??' | cut -f2 -d-) -$(APP_NAME)-%: $(APP_DEPS) ccbuilds +$(APP_NAME)-%: ccbuilds @$(MOD_ON) env "GOOS=$(GOOS)" "GOARCH=$(GOARCH)" \ go build \ $(COMMON_BUILD_FLAGS) \ @@ -31,9 +33,6 @@ $(APP_NAME)-%: $(APP_DEPS) ccbuilds ccbuilds: @rm -rf ./ccbuilds && mkdir -p ./ccbuilds -version.go: - @$(MOD_ON) go generate main.go - vendor: go.mod go.sum @$(MOD_ON) go mod vendor @@ -53,15 +52,15 @@ crosscompile-dir: @rm -rf "$(CC_DIR)" && mkdir -p "$(CC_DIR)" .PHONY: test -test: vendor $(APP_DEPS) +test: vendor @$(MOD_ON) go test -v ./... .PHONY: lint -lint: vendor $(APP_DEPS) +lint: vendor @$(MOD_OFF) golangci-lint run .PHONY: critic -critic: vendor $(APP_DEPS) +critic: vendor @$(MOD_OFF) gocritic check-project "$(ROOT_DIR)" .PHONY: clean diff --git a/go.mod b/go.mod index 3370d1a..221d572 100644 --- a/go.mod +++ b/go.mod @@ -25,7 +25,7 @@ require ( go.uber.org/atomic v1.3.2 // indirect go.uber.org/multierr v1.1.0 // indirect go.uber.org/zap v1.9.1 - golang.org/x/net v0.0.0-20181029044818-c44066c5c816 // indirect + golang.org/x/net v0.0.0-20181102091132-c10e9556a7bc // indirect golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f // indirect gopkg.in/alecthomas/kingpin.v2 v2.2.6 gopkg.in/alexcesaro/statsd.v2 v2.0.0 diff --git a/go.sum b/go.sum index 22ba675..bc62614 100644 --- a/go.sum +++ b/go.sum @@ -49,8 +49,8 @@ go.uber.org/multierr v1.1.0 h1:HoEmRHQPVSqub6w2z2d2EOVs2fjyFRGyofhKuyDq0QI= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/zap v1.9.1 h1:XCJQEf3W6eZaVwhRBof6ImoYGJSITeKWsyeh3HFu/5o= go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -golang.org/x/net v0.0.0-20181029044818-c44066c5c816 h1:mVFkLpejdFLXVUv9E42f3XJVfMdqd0IVLVIVLjZWn5o= -golang.org/x/net v0.0.0-20181029044818-c44066c5c816/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181102091132-c10e9556a7bc h1:ZMCWScCvS2fUVFw8LOpxyUUW5qiviqr4Dg5NdjLeiLU= +golang.org/x/net v0.0.0-20181102091132-c10e9556a7bc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f h1:wMNYb4v58l5UBM7MYRLPG6ZhfOqbKu7X5eyFl8ZhKvA= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc= diff --git a/main.go b/main.go index 37d5ff5..7f1c76f 100644 --- a/main.go +++ b/main.go @@ -1,7 +1,5 @@ package main -//go:generate scripts/generate_version.sh - import ( "encoding/json" "fmt" @@ -22,6 +20,8 @@ import ( "github.com/9seconds/mtg/stats" ) +var version = "dev" // this has to be set by build ld flags + var ( app = kingpin.New("mtg", "Simple MTPROTO proxy.") diff --git a/scripts/generate_version.sh b/scripts/generate_version.sh deleted file mode 100755 index 8a964ec..0000000 --- a/scripts/generate_version.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh -set -eu - -PROJECT_DIR="$(git rev-parse --show-toplevel)" -OUTPUT_FILE="${PROJECT_DIR}/version.go" - -cat > "$OUTPUT_FILE" <