diff --git a/Makefile b/Makefile index 0eb2f8c5..863fef90 100644 --- a/Makefile +++ b/Makefile @@ -15,6 +15,7 @@ GPG_KEY = devteam@adguard.com GPG_KEY_PASSPHRASE = not-a-real-password NPM = npm NPM_FLAGS = --prefix $(CLIENT_DIR) +RACE = 0 SIGN = 1 VERBOSE = 0 VERSION = v0.0.0 @@ -30,6 +31,7 @@ ENV = env\ GO='$(GO)'\ GOPROXY='$(GOPROXY)'\ PATH="$${PWD}/bin:$$($(GO) env GOPATH)/bin:$${PATH}"\ + RACE='$(RACE)'\ SIGN='$(SIGN)'\ VERBOSE='$(VERBOSE)'\ VERSION='$(VERSION)'\ @@ -75,9 +77,12 @@ js-beta-test: ; # TODO(v.abdulmyanov): Add tests for the new client. go-build: ; $(ENV) "$(SHELL)" ./scripts/make/go-build.sh go-deps: ; $(ENV) "$(SHELL)" ./scripts/make/go-deps.sh go-lint: ; $(ENV) "$(SHELL)" ./scripts/make/go-lint.sh -go-test: ; $(ENV) "$(SHELL)" ./scripts/make/go-test.sh go-tools: ; $(ENV) "$(SHELL)" ./scripts/make/go-tools.sh +# TODO(a.garipov): Think about making RACE='1' the default for all +# targets. +go-test: ; $(ENV) RACE='1' "$(SHELL)" ./scripts/make/go-test.sh + go-check: go-tools go-lint go-test openapi-lint: ; cd ./openapi/ && $(YARN) test diff --git a/scripts/make/go-build.sh b/scripts/make/go-build.sh index 353ea7e2..aad1ab8a 100644 --- a/scripts/make/go-build.sh +++ b/scripts/make/go-build.sh @@ -91,10 +91,22 @@ else readonly out_flags='' fi -# Don't use cgo. Use modules. -export CGO_ENABLED='0' GO111MODULE='on' +# Allow users to enable the race detector. Unfortunately, that means +# that CGo must be enabled. +readonly race="${RACE:-0}" +if [ "$race" = '0' ] +then + readonly cgo_enabled='0' + readonly race_flags='' +else + readonly cgo_enabled='1' + readonly race_flags='--race' +fi -readonly build_flags="${BUILD_FLAGS:-$out_flags $par_flags\ +export CGO_ENABLED="$cgo_enabled" +export GO111MODULE='on' + +readonly build_flags="${BUILD_FLAGS:-$race_flags $out_flags $par_flags\ $v_flags $x_flags}" # Don't use quotes with flag variables to get word splitting.