diff --git a/Makefile b/Makefile index d4144e45..908cb9a8 100644 --- a/Makefile +++ b/Makefile @@ -11,6 +11,9 @@ # See the License for the specific language governing permissions and # limitations under the License. +# Ensure that 'all' is the default target otherwise it will be the first target from Makefile.common. +all:: + include Makefile.common PROMTOOL_VERSION ?= 2.5.0 @@ -70,7 +73,7 @@ $(eval $(call goarch_pair,amd64,386)) $(eval $(call goarch_pair,mips64,mips)) $(eval $(call goarch_pair,mips64el,mipsel)) -all: style vet staticcheck checkmetrics checkrules build test $(cross-test) $(test-e2e) +all:: vet checkmetrics checkrules common-all $(cross-test) $(test-e2e) .PHONY: test test: collector/fixtures/sys/.unpacked diff --git a/Makefile.common b/Makefile.common index 79001dd9..ed29aa82 100644 --- a/Makefile.common +++ b/Makefile.common @@ -60,7 +60,6 @@ $(warning Some recipes may not work as expected as the current Go runtime is '$( endif endif PROMU := $(FIRST_GOPATH)/bin/promu -STATICCHECK := $(FIRST_GOPATH)/bin/staticcheck pkgs = ./... ifeq (arm, $(GOHOSTARCH)) @@ -72,8 +71,17 @@ endif PROMU_VERSION ?= 0.3.0 PROMU_URL := https://github.com/prometheus/promu/releases/download/v$(PROMU_VERSION)/promu-$(PROMU_VERSION).$(GO_BUILD_PLATFORM).tar.gz -STATICCHECK_VERSION ?= 2019.1 -STATICCHECK_URL := https://github.com/dominikh/go-tools/releases/download/$(STATICCHECK_VERSION)/staticcheck_$(GOHOSTOS)_$(GOHOSTARCH) + +STATICCHECK := +# staticcheck only supports linux, freebsd, darwin and windows platforms on i386/amd64 +# windows isn't included here because of the path separator being different. +ifeq ($(GOHOSTOS),$(filter $(GOHOSTOS),linux freebsd darwin)) + ifeq ($(GOHOSTARCH),$(filter $(GOHOSTARCH),amd64 i386)) + STATICCHECK := $(FIRST_GOPATH)/bin/staticcheck + STATICCHECK_VERSION ?= 2019.1 + STATICCHECK_URL := https://github.com/dominikh/go-tools/releases/download/$(STATICCHECK_VERSION)/staticcheck_$(GOHOSTOS)_$(GOHOSTARCH) + endif +endif PREFIX ?= $(shell pwd) BIN_DIR ?= $(shell pwd) @@ -87,14 +95,14 @@ ifeq ($(GOHOSTARCH),amd64) endif endif -.PHONY: all -all: precheck style staticcheck unused build test - # This rule is used to forward a target like "build" to "common-build". This # allows a new "build" target to be defined in a Makefile which includes this # one and override "common-build" without override warnings. %: common-% ; +.PHONY: common-all +common-all: precheck style check_license staticcheck unused build test + .PHONY: common-style common-style: @echo ">> checking code style" @@ -116,6 +124,15 @@ common-check_license: exit 1; \ fi +.PHONY: common-deps +common-deps: + @echo ">> getting dependencies" +ifdef GO111MODULE + GO111MODULE=$(GO111MODULE) $(GO) mod download +else + $(GO) get $(GOOPTS) -t ./... +endif + .PHONY: common-test-short common-test-short: @echo ">> running short tests" @@ -138,6 +155,7 @@ common-vet: .PHONY: common-staticcheck common-staticcheck: $(STATICCHECK) +ifdef STATICCHECK @echo ">> running staticcheck" chmod +x $(STATICCHECK) ifdef GO111MODULE @@ -148,6 +166,7 @@ ifdef GO111MODULE else $(STATICCHECK) -ignore "$(STATICCHECK_IGNORE)" $(pkgs) endif +endif .PHONY: common-unused common-unused: $(GOVENDOR) @@ -205,9 +224,11 @@ proto: @echo ">> generating code from proto files" @./scripts/genproto.sh +ifdef STATICCHECK $(STATICCHECK): mkdir -p $(FIRST_GOPATH)/bin curl -s -L $(STATICCHECK_URL) > $(STATICCHECK) +endif ifdef GOVENDOR .PHONY: $(GOVENDOR) @@ -221,7 +242,6 @@ precheck:: define PRECHECK_COMMAND_template = precheck:: $(1)_precheck - PRECHECK_COMMAND_$(1) ?= $(1) $$(strip $$(PRECHECK_OPTIONS_$(1))) .PHONY: $(1)_precheck $(1)_precheck: diff --git a/node_exporter_test.go b/node_exporter_test.go index 5a9599ec..a0881e9e 100644 --- a/node_exporter_test.go +++ b/node_exporter_test.go @@ -1,3 +1,16 @@ +// Copyright 2017 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + package main import (