diff --git a/.build/.gitignore b/.build/.gitignore deleted file mode 100644 index 936e7fe13..000000000 --- a/.build/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -build/ -root/ diff --git a/.build/Makefile b/.build/Makefile deleted file mode 100644 index 6e9533967..000000000 --- a/.build/Makefile +++ /dev/null @@ -1,21 +0,0 @@ -# Copyright 2013 Prometheus Team -# 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. - -.SUFFIXES: - -include ../Makefile.INCLUDE - -all: - -clean: - $(MAKE) -C root clean diff --git a/.build/cache/.gitignore b/.build/cache/.gitignore deleted file mode 100644 index bb541719c..000000000 --- a/.build/cache/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -*.gz -*.bz2 diff --git a/.build/root/Makefile b/.build/root/Makefile deleted file mode 100644 index d76a09106..000000000 --- a/.build/root/Makefile +++ /dev/null @@ -1,22 +0,0 @@ -# Copyright 2013 Prometheus Team -# 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. - -.SUFFIXES: - -include ../../Makefile.INCLUDE - -all: - -clean: - rm -rf * - git checkout . diff --git a/.build/root/bin/.gitignore b/.build/root/bin/.gitignore deleted file mode 100644 index f59ec20aa..000000000 --- a/.build/root/bin/.gitignore +++ /dev/null @@ -1 +0,0 @@ -* \ No newline at end of file diff --git a/.build/root/include/.gitignore b/.build/root/include/.gitignore deleted file mode 100644 index f59ec20aa..000000000 --- a/.build/root/include/.gitignore +++ /dev/null @@ -1 +0,0 @@ -* \ No newline at end of file diff --git a/.build/root/lib/.gitignore b/.build/root/lib/.gitignore deleted file mode 100644 index f59ec20aa..000000000 --- a/.build/root/lib/.gitignore +++ /dev/null @@ -1 +0,0 @@ -* \ No newline at end of file diff --git a/.build/root/share/.gitignore b/.build/root/share/.gitignore deleted file mode 100644 index 72e8ffc0d..000000000 --- a/.build/root/share/.gitignore +++ /dev/null @@ -1 +0,0 @@ -* diff --git a/.gitignore b/.gitignore index 755efc557..207a4c604 100644 --- a/.gitignore +++ b/.gitignore @@ -33,6 +33,7 @@ core /promtool benchmark.txt /data +/.build .#* command-line-arguments.test diff --git a/Makefile b/Makefile index 7ee0460e5..54b8aa320 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -# Copyright 2013 The Prometheus Authors +# Copyright 2015 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 @@ -11,86 +11,29 @@ # See the License for the specific language governing permissions and # limitations under the License. -TEST_ARTIFACTS = prometheus prometheus.race search_index +GO := GO15VENDOREXPERIMENT=1 go +pkgs = $(shell $(GO) list ./... | grep -v /vendor/) -include Makefile.INCLUDE +all: format build test -all: binary test +test: + @echo ">> running tests" + @$(GO) test -short $(pkgs) -$(GOCC): $(BUILD_PATH)/cache/$(GOPKG) - tar -C $(BUILD_PATH)/root -xzf $< - touch $@ +format: + @echo ">> formatting code" + @$(GO) fmt $(pkgs) -advice: $(GOCC) - $(GO) vet ./... +vet: + @echo ">> vetting code" + @$(GO) vet $(pkgs) -binary: build - -build: dependencies $(GOPATH) - $(GO) build -o prometheus $(BUILDFLAGS) github.com/prometheus/prometheus/cmd/prometheus - $(GO) build -o promtool $(BUILDFLAGS) github.com/prometheus/prometheus/cmd/promtool +build: + @echo ">> building binaries" + @./scripts/build.sh docker: - docker build -t prometheus:$(REV) . + @docker build -t prometheus:$(shell git rev-parse --short HEAD) . -tarball: $(ARCHIVE) -$(GOPATH): - mkdir -p $(GOPATH) - cp -a $(MAKEFILE_DIR)/vendor/ $(GOPATH)/src - -$(ARCHIVE): build - mkdir -p $(ARCHIVEDIR) - cp -a prometheus promtool consoles console_libraries $(ARCHIVEDIR) - tar -czf $(ARCHIVE) $(ARCHIVEDIR) - rm -rf $(ARCHIVEDIR) - -release: REMOTE ?= $(error "can't upload, REMOTE not set") -release: REMOTE_DIR ?= $(error "can't upload, REMOTE_DIR not set") -release: $(ARCHIVE) - scp $< $(REMOTE):$(REMOTE_DIR)/ - -tag: - git tag $(VERSION) - git push --tags - -$(BUILD_PATH)/cache/$(GOPKG): - $(CURL) -o $@ -L $(GOURL)/$(GOPKG) - -benchmark: dependencies - $(GO) test $(GO_TEST_FLAGS) -test.run='NONE' -test.bench='.*' -test.benchmem ./... | tee benchmark.txt - -clean: - $(MAKE) -C $(BUILD_PATH) clean - rm -rf $(TEST_ARTIFACTS) - -rm $(ARCHIVE) - -find . -type f -name '*~' -exec rm '{}' ';' - -find . -type f -name '*#' -exec rm '{}' ';' - -find . -type f -name '.#*' -exec rm '{}' ';' - -$(SELFLINK): $(GOPATH) - mkdir -p `dirname $@` - ln -s $(MAKEFILE_DIR) $@ - -dependencies: $(GOCC) | $(SELFLINK) - -documentation: search_index - godoc -http=:6060 -index -index_files='search_index' - -format: dependencies - find . -iname '*.go' | egrep -v "^\./(\.build|vendor)/" | xargs -n1 $(GOFMT) -w -s=true - -race_condition_binary: build - $(GO) build -race -o prometheus.race $(BUILDFLAGS) github.com/prometheus/prometheus/cmd/prometheus - $(GO) build -race -o promtool.race $(BUILDFLAGS) github.com/prometheus/prometheus/cmd/promtool - -search_index: - godoc -index -write_index -index_files='search_index' - -test: dependencies - $(GO) test $(GO_TEST_FLAGS) ./... - -web: dependencies - $(MAKE) -C web - -.PHONY: advice binary build clean dependencies documentation format race_condition_binary race_condition_run release run search_index tag tarball test +.PHONY: format build test vet docker diff --git a/Makefile.INCLUDE b/Makefile.INCLUDE deleted file mode 100644 index e624ec629..000000000 --- a/Makefile.INCLUDE +++ /dev/null @@ -1,74 +0,0 @@ -# -*- Mode: makefile -*- - -# Copyright 2013 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. - -.SUFFIXES: - -current_dir := $(patsubst %/,%, $(dir $(abspath $(lastword $(MAKEFILE_LIST))))) - -VERSION=$(shell cat $(current_dir)/version/VERSION) - -OS=$(shell uname) -ARCH=$(shell uname -m) - -# The release engineers apparently need to key their binary artifacts to the -# Mac OS X release family. -MAC_OS_X_VERSION ?= 10.8 - -MAKEFILE_DIR ?= $(realpath $(dir $(lastword $(MAKEFILE_LIST)))) - -BUILD_PATH = $(MAKEFILE_DIR)/.build - -GO_VERSION := 1.5.1 -GOOS ?= $(subst Darwin,darwin,$(subst Linux,linux,$(subst FreeBSD,freebsd,$(OS)))) - -# Never honor GOBIN, should it be set at all. -unexport GOBIN - -GOARCH ?= $(subst x86_64,amd64,$(patsubst i%86,386,$(ARCH))) -GOPKG ?= go$(GO_VERSION).$(GOOS)-$(GOARCH)$(RELEASE_SUFFIX).tar.gz -GOURL ?= https://golang.org/dl -GOROOT = $(BUILD_PATH)/root/go -GOPATH = $(BUILD_PATH)/root/gopath -GOCC = $(GOROOT)/bin/go -TMPDIR = /tmp -GOENV = TMPDIR=$(TMPDIR) GOROOT=$(GOROOT) GOPATH=$(GOPATH) -GO = $(GOENV) $(GOCC) -GOFMT = $(GOROOT)/bin/gofmt - -UNAME := $(shell uname) -REPO_PATH = github.com/prometheus/prometheus -SELFLINK = $(GOPATH)/src/$(REPO_PATH) - -export PREFIX=$(BUILD_PATH)/root - -export PATH := $(GOPATH)/bin:$(GOROOT)/bin:$(PATH) - -export GO_TEST_FLAGS ?= -short - -REV := $(shell git rev-parse --short HEAD 2> /dev/null || echo 'unknown') -BRANCH := $(shell git rev-parse --abbrev-ref HEAD 2> /dev/null || echo 'unknown') -HOSTNAME := $(shell hostname -f) -BUILD_DATE := $(shell date +%Y%m%d-%H:%M:%S) -BUILDFLAGS := -ldflags \ - " -X $(REPO_PATH)/version.Version=$(VERSION)\ - -X $(REPO_PATH)/version.Revision=$(REV)\ - -X $(REPO_PATH)/version.Branch=$(BRANCH)\ - -X $(REPO_PATH)/version.BuildUser=$(USER)@$(HOSTNAME)\ - -X $(REPO_PATH)/version.BuildDate=$(BUILD_DATE)\ - -X $(REPO_PATH)/version.GoVersion=$(GO_VERSION)" -CURL := curl - -ARCHIVEDIR := prometheus-$(VERSION).$(GOOS)-$(GOARCH) -ARCHIVE := $(ARCHIVEDIR).tar.gz diff --git a/scripts/build.sh b/scripts/build.sh new file mode 100755 index 000000000..e617b80ad --- /dev/null +++ b/scripts/build.sh @@ -0,0 +1,46 @@ +#!/usr/bin/env bash + +# Copyright 2015 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. + +set -e + +repo_path="github.com/prometheus/prometheus" + +version=$( cat version/VERSION ) +revision=$( git rev-parse --short HEAD 2> /dev/null || echo 'unknown' ) +branch=$( git rev-parse --abbrev-ref HEAD 2> /dev/null || echo 'unknown' ) +host=$( hostname -f ) +build_date=$( date +%Y%m%d-%H:%M:%S ) + +if [ "$(go env GOOS)" = "windows" ]; then + ext=".exe" +fi + +ldflags=" + -X ${repo_path}/version.Version=${version} + -X ${repo_path}/version.Revision=${revision} + -X ${repo_path}/version.Branch=${branch} + -X ${repo_path}/version.BuildUser=${USER}@${host} + -X ${repo_path}/version.BuildDate=${build_date} + -X ${repo_path}/version.GoVersion=${go_version}" + +export GO15VENDOREXPERIMENT="1" + +echo " > prometheus" +go build -ldflags "${ldflags}" -o prometheus${ext} ${repo_path}/cmd/prometheus + +echo " > promtool" +go build -ldflags "${ldflags}" -o promtool${ext} ${repo_path}/cmd/promtool + +exit 0