Makefile: pin tool versions, use go install

Using latest version every time is just asking for weird random issues.

This commit in `gomobile` has made Go `1.16` required:
80cb72e7af

Since we upgarded Go to 1.16 on CI hosts we can now use the recommended
method of installing tools, which is using `go install`.

In addition to that I've pinned other tools that we install to specific
versions, and dropped use of `modvendor` fork thanks to merging of:
https://github.com/goware/modvendor/pull/13

Signed-off-by: Jakub Sokołowski <jakub@status.im>
This commit is contained in:
Jakub Sokołowski 2021-09-13 11:04:00 +02:00 committed by Jakub
parent 3c8b0e7af6
commit 116f76e189
6 changed files with 49 additions and 41 deletions

View File

@ -113,7 +113,8 @@ statusgo-cross: statusgo-android statusgo-ios
statusgo-android: ##@cross-compile Build status-go for Android
@echo "Building status-go for Android..."
gomobile init
export GO111MODULE=off; \
gomobile init; \
gomobile bind -v \
-target=android -ldflags="-s -w" \
$(BUILD_FLAGS_MOBILE) \
@ -123,7 +124,8 @@ statusgo-android: ##@cross-compile Build status-go for Android
statusgo-ios: ##@cross-compile Build status-go for iOS
@echo "Building status-go for iOS..."
gomobile init
export GO111MODULE=off; \
gomobile init; \
gomobile bind -v \
-target=ios -ldflags="-s -w" \
$(BUILD_FLAGS_MOBILE) \
@ -202,14 +204,42 @@ endif
docker push $(BOOTNODE_IMAGE_NAME):$(DOCKER_IMAGE_CUSTOM_TAG)
docker push $(DOCKER_IMAGE_NAME):$(DOCKER_IMAGE_CUSTOM_TAG)
install-os-dependencies:
setup: ##@setup Install all tools
setup: setup-build setup-dev tidy
setup-dev: ##@setup Install all necessary tools for development
setup-dev: install-lint install-mock install-modvendor install-protobuf tidy install-os-deps
setup-build: ##@setup Install all necessary build tools
setup-build: install-lint install-release install-gomobile
install-os-deps: ##@install Operating System Dependencies
_assets/scripts/install_deps.sh
setup-dev: lint-install mock-install modvendor-install gen-install tidy install-os-dependencies ##@other Prepare project for development
install-gomobile: install-xtools
install-gomobile: ##@install Go Mobile Build Tools
GO111MODULE=on go install golang.org/x/mobile/cmd/...@5d9a3325
GO111MODULE=on go mod download golang.org/x/exp@ec7cb31e
GO111MODULE=off go get -d golang.org/x/mobile/cmd/gobind
setup-build: lint-install release-install gomobile-install ##@other Prepare project for build
install-lint: ##@install Install Linting Tools
GO111MODULE=on go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.33.0
setup: setup-build setup-dev tidy ##@other Prepare project for development and building
install-mock: ##@install Install Module Mocking Tools
GO111MODULE=on go install github.com/golang/mock/mockgen@v1.4.4
install-modvendor: ##@install Install Module Vendoring Tool
GO111MODULE=on go install github.com/goware/modvendor@v0.4.0
install-protobuf: ##@install Install Protobuf Generation Tools
GO111MODULE=on go install github.com/kevinburke/go-bindata/go-bindata@v3.13.0
GO111MODULE=on go install github.com/golang/protobuf/protoc-gen-go@v1.3.4
install-release: ##@install Install Github Release Tools
GO111MODULE=on go install github.com/c4milo/github-release@v1.1.0
install-xtools: ##@install Install Miscellaneous Go Tools
GO111MODULE=on go install golang.org/x/tools/go/packages/...@v0.1.5
generate: ##@other Regenerate assets and other auto-generated stuff
go generate ./static ./static/mailserver_db_migrations ./t ./multiaccounts/... ./appdatabase/... ./protocol/...
@ -261,29 +291,6 @@ release: check-existing-release
echo "Aborting." && exit 1; \
fi
gomobile-install: xtools-install
go get golang.org/x/mobile/cmd/gomobile
release-install:
go get -u github.com/c4milo/github-release
gen-install:
go get github.com/kevinburke/go-bindata/go-bindata@v3.13.0
go get github.com/golang/protobuf/protoc-gen-go@v1.3.4
xtools-install:
# special fix for gomobile issues
go get golang.org/x/tools/go/packages
modvendor-install:
# a tool to vendor non-go files
# TODO: switch to original repo when https://github.com/goware/modvendor/pull/13 is merged
GO111MODULE=off go get -u github.com/adambabik/modvendor
mock-install: ##@other Install mocking tools
# keep in sync with go.mod and github.com/golang/mock
go get github.com/golang/mock/mockgen@v1.4.1
mock: ##@other Regenerate mocks
mockgen -package=fake -destination=transactions/fake/mock.go -source=transactions/fake/txservice.go
mockgen -package=status -destination=services/status/account_mock.go -source=services/status/service.go
@ -317,10 +324,6 @@ canary-test: node-canary
# TODO: uncomment that!
#_assets/scripts/canary_test_mailservers.sh ./config/cli/fleet-eth.prod.json
lint-install:
@# The following installs a specific version of golangci-lint, which is appropriate for a CI server to avoid different results from build to build
curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | BINARY=$(GOLANGCI_BINARY) bash -s -- -d -b $(GOPATH)/bin v1.33.0
lint:
@echo "lint"
@golangci-lint --exclude=SA1019 run ./... --deadline=5m

View File

@ -31,7 +31,6 @@ pipeline {
environment {
/* fix for gomobile complaining about missing packages */
CGO_ENABLED = "1"
GO111MODULE = "off"
/* Other stuff */
TARGET = 'android'
GOPATH = "${env.WORKSPACE}"
@ -54,12 +53,12 @@ pipeline {
} } } }
stage('Setup') { steps { dir(env.STATUS_PATH) {
sh 'make setup-build modvendor-install'
sh 'make setup-build install-modvendor'
} } }
stage('Vendoring check') { steps { dir(env.STATUS_PATH) {
/* fail build if vendoring hasn't been done */
sh 'GO111MODULE=on make vendor'
sh 'make vendor'
sh 'git diff --exit-code --no-color --stat vendor/'
} } }

View File

@ -31,7 +31,6 @@ pipeline {
environment {
/* fix for gomobile complaining about missing packages */
CGO_ENABLED = "1"
GO111MODULE = "off"
/* Other stuff */
TARGET = 'ios'
GOPATH = "${env.WORKSPACE}"

View File

@ -38,12 +38,13 @@ pipeline {
} } } }
stage('Setup') { steps { dir(env.STATUS_PATH) {
sh 'GO111MODULE=off make setup-build modvendor-install'
sh 'make setup-build install-modvendor'
} } }
stage('Vendoring check') { steps { dir(env.STATUS_PATH) {
// fail build if vendoring hasn't been done
sh 'GO111MODULE=on make vendor && git diff --exit-code --no-color --stat vendor/'
/* fail build if vendoring hasn't been done */
sh 'make vendor'
sh 'git diff --exit-code --no-color --stat vendor/'
} } }
stage('Lint') { steps { dir(env.STATUS_PATH) {

1
go.mod
View File

@ -63,6 +63,7 @@ require (
go.uber.org/zap v1.15.0
golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e
golang.org/x/image v0.0.0-20210220032944-ac19c3e999fb
golang.org/x/tools v0.1.2 // indirect
gopkg.in/go-playground/assert.v1 v1.2.1 // indirect
gopkg.in/go-playground/validator.v9 v9.31.0
gopkg.in/natefinch/lumberjack.v2 v2.0.0

7
go.sum
View File

@ -1193,6 +1193,7 @@ github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
gitlab.com/nyarla/go-crypt v0.0.0-20160106005555-d9a5dc2b789b/go.mod h1:T3BPAOm2cqquPa0MKWeNkmOM5RQsRhkrwMWonFMN7fE=
go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
@ -1344,6 +1345,7 @@ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwY
golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20210220033124-5f55cee0dc0d/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20210614182718-04defd469f4e h1:XpT3nA5TvE525Ne3hInMh6+GETgn27Zfm9dxsThnX2Q=
golang.org/x/net v0.0.0-20210614182718-04defd469f4e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
@ -1438,8 +1440,10 @@ golang.org/x/sys v0.0.0-20210301091718-77cc2087c03b/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20210309074719-68d13333faf2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210316164454-77fc1eacc6aa/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210420205809-ac73e9fd8988/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210616094352-59db8d763f22 h1:RqytpXGR1iVNX7psjB3ff8y7sNFinVFvkx1c8SjBkio=
@ -1518,8 +1522,9 @@ golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roY
golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
golang.org/x/tools v0.1.0 h1:po9/4sTYwZU9lPhi1tOrb4hCv3qrhiQ77LZfGa2OjwY=
golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
golang.org/x/tools v0.1.2 h1:kRBLX7v7Af8W7Gdbbc908OJcdgtK8bOz9Uaj8/F1ACA=
golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=