diff --git a/.gitignore b/.gitignore index 16bfed94a..fd78da1c1 100644 --- a/.gitignore +++ b/.gitignore @@ -29,3 +29,5 @@ command-line-arguments.test *BASE* *LOCAL* *REMOTE* +build/root +tools/dumper/dumper diff --git a/.travis.yml b/.travis.yml index 487339e28..c6b34dbe0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,6 +2,9 @@ language: go +go: + - 1.1 + # Explicitly stop before_script from doing anything by giving 'em nil work. before_script: - echo "Before Script" @@ -13,6 +16,4 @@ install: script: - echo "Script" - cd ${TRAVIS_BUILD_DIR} - - gvm install go1.1 || true - - gvm use go1.1 || true - bash -l ./tests-for-die-in-a-fire-travis.sh diff --git a/Makefile b/Makefile index a2c3c7fa4..0927ecb0a 100644 --- a/Makefile +++ b/Makefile @@ -18,17 +18,15 @@ include Makefile.INCLUDE all: binary test advice: - go tool vet . + $(GO) tool vet . binary: build - go build -o prometheus $(BUILDFLAGS) . + $(GO) build -o prometheus $(BUILDFLAGS) . build: preparation config model tools web clean: $(MAKE) -C build clean - $(MAKE) -C config clean - $(MAKE) -C model clean $(MAKE) -C tools clean $(MAKE) -C web clean rm -rf $(TEST_ARTIFACTS) @@ -43,7 +41,14 @@ documentation: search_index godoc -http=:6060 -index -index_files='search_index' format: - find . -iname '*.go' | egrep -v "generated|\.(l|y)\.go" | xargs -n1 gofmt -w -s=true + find . -iname '*.go' | egrep -v "generated|\.(l|y)\.go" | xargs -n1 $(GOFMT) -w -s=true + +build/cache/$(GOPKG): + curl -o $@ http://go.googlecode.com/files/$(GOPKG) + +$(GOCC): build/cache/$(GOPKG) + tar -C build/root -xzf $< + touch $@ model: preparation $(MAKE) -C model @@ -52,7 +57,7 @@ package: binary cp prometheus build/package/prometheus rsync -av build/root/lib/ build/package/lib/ -preparation: source_path +preparation: $(GOCC) source_path $(MAKE) -C build race_condition_binary: build @@ -77,7 +82,8 @@ source_path: [ -d "$(FULL_GOPATH)" ] test: build - go test ./... $(GO_TEST_FLAGS) + $(GOENV) find . -maxdepth 1 -mindepth 1 -type d -and -not -path ./build -exec $(GOCC) test {}/... $(GO_TEST_FLAGS) \; + $(GO) test $(GO_TEST_FLAGS) tools: $(MAKE) -C tools diff --git a/Makefile.INCLUDE b/Makefile.INCLUDE index c0d174730..e6318d793 100644 --- a/Makefile.INCLUDE +++ b/Makefile.INCLUDE @@ -25,15 +25,28 @@ else export THIRD_PARTY_BUILD_OUTPUT := endif +OS=$(shell uname) +ARCH=$(shell uname -m) + GO_VERSION := 1.1 +GOOS = $(subst Darwin,darwin,$(subst Linux,linux,$(OS))) +GOARCH = $(subst x86_64,amd64,$(ARCH)) +GOPKG = go$(GO_VERSION).$(GOOS)-$(GOARCH).tar.gz +GOROOT = $(PWD)/build/root/go +GOPATH = $(PWD)/build/root/gopath +GOCC = $(GOROOT)/bin/go +TMPDIR = /tmp +GOENV = TMPDIR=$(TMPDIR) GOROOT=$(GOROOT) GOPATH=$(GOPATH) +GO = $(GOENV) $(GOCC) +GOFMT = $(GOENV) $(GOROOT)/bin/gofmt + LEVELDB_VERSION := 1.9.0 PROTOCOL_BUFFERS_VERSION := 2.5.0 SNAPPY_VERSION := 1.1.0 UNAME := $(shell uname) -FIRST_GOPATH := $(shell echo $${GOPATH} | awk -F':' '{ print $$1 }') -FULL_GOPATH := $(FIRST_GOPATH)/src/github.com/prometheus/prometheus -FULL_GOPATH_BASE := $(FIRST_GOPATH)/src/github.com/prometheus +FULL_GOPATH := $(GOPATH)/src/github.com/prometheus/prometheus +FULL_GOPATH_BASE := $(GOPATH)/src/github.com/prometheus export PREFIX=$(PWD)/build/root @@ -50,7 +63,7 @@ export PKG_CONFIG_PATH := $(PREFIX)/lib/pkgconfig:$(PKG_CONFIG_PATH) export GO_TEST_FLAGS := "-v" -GO_GET := go get -u -v -x +GO_GET := $(GO) get -u -v -x APT_GET_INSTALL := sudo apt-get install -y BREW_INSTALL := brew install # By default, wget sets the creation time to match the server's, which throws diff --git a/build/.gitignore b/build/.gitignore new file mode 100644 index 000000000..cfbfa1fdd --- /dev/null +++ b/build/.gitignore @@ -0,0 +1 @@ +root/ diff --git a/build/Makefile b/build/Makefile index 9f9df0fcc..62167e4cc 100644 --- a/build/Makefile +++ b/build/Makefile @@ -45,18 +45,18 @@ cc-implementation-Linux-stamp: [ -x "$$(which cc)" ] || $(APT_GET_INSTALL) build-essential touch $@ -dependencies-stamp: cache-stamp go-stamp goprotobuf-stamp gorest-stamp goskiplist-stamp instrumentation-stamp levigo-stamp +dependencies-stamp: cache-stamp go-stamp goprotobuf-protoc-gen-go-stamp gorest-stamp goskiplist-stamp instrumentation-stamp levigo-stamp touch $@ -go-stamp: gvm-stamp +go-stamp: [ -x "$$(which go)" ] || { echo "go not found." ; false ; } touch $@ -goprotobuf-protoc-gen-go-stamp: protoc-stamp +goprotobuf-protoc-gen-go-stamp: protoc-stamp goprotobuf-stamp $(GO_GET) code.google.com/p/goprotobuf/protoc-gen-go $(THIRD_PARTY_BUILD_OUTPUT) touch $@ -goprotobuf-stamp: go-stamp mercurial-stamp +goprotobuf-stamp: go-stamp protoc-stamp mercurial-stamp $(GO_GET) code.google.com/p/goprotobuf/proto $(THIRD_PARTY_BUILD_OUTPUT) touch $@ @@ -68,29 +68,6 @@ goskiplist-stamp: go-stamp $(GO_GET) github.com/ryszard/goskiplist/skiplist $(THIRD_PARTY_BUILD_OUTPUT) touch $@ -gvm-stamp: bison-stamp cc-stamp mercurial-stamp - [ -x "$$(which gvm)" ] || { echo "gvm not found; install manually from https://github.com/moovweb/gvm." ; false ; } - # - # ********** ********** - # gvm installed go$(GO_VERSION) if it did not exist already. - # - # Prometheus expects go$(GO_VERSION) to be used for building. - # This can be achieved by running ``gvm use go$(GO_VERSION)`` before any - # other Prometheus make tools. - # - # Once this build finishes, $(GOPATH) will be mutated and - # contain some new packages. Here is an example workflow: - # - # $ gvm install go$(GO_VERSION) - # $ gvm use go$(GO_VERSION) - # $ gvm pkgset create prometheus - # $ gvm pkgset use prometheus - # - # ********** ********** - # - -[ -z "${CI}" ] && read -p "Press [ENTER] upon reading." _ - touch $@ - instrumentation-stamp: go-stamp $(GO_GET) github.com/prometheus/client_golang/prometheus $(THIRD_PARTY_BUILD_OUTPUT) $(GO_GET) github.com/prometheus/client_golang/prometheus/exp $(THIRD_PARTY_BUILD_OUTPUT) @@ -182,6 +159,7 @@ clean: $(MAKE) -C cache clean $(MAKE) -C dirty clean $(MAKE) -C root clean + $(MAKE) -C package clean rm -rf *-stamp diff --git a/tests-for-die-in-a-fire-travis.sh b/tests-for-die-in-a-fire-travis.sh index a111001fd..033a90ff2 100755 --- a/tests-for-die-in-a-fire-travis.sh +++ b/tests-for-die-in-a-fire-travis.sh @@ -16,6 +16,4 @@ # A helper until https://github.com/travis-ci/travis-cookbooks/issues/184 is # remedied. -. ./tests-for-die-in-a-fire-travis.shlib - make -f Makefile || exit 1 diff --git a/tests-for-die-in-a-fire-travis.shlib b/tests-for-die-in-a-fire-travis.shlib deleted file mode 100644 index bdad54490..000000000 --- a/tests-for-die-in-a-fire-travis.shlib +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash - -# 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. - -# A helper until https://github.com/travis-ci/travis-cookbooks/issues/184 is -# remedied. - -gvm install go1.1 -gvm use go1.1 - -go version -go env diff --git a/tools/Makefile b/tools/Makefile index 1fdd25e0a..80b5db150 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -24,6 +24,7 @@ pruner: $(MAKE) -C pruner clean: - $(MAKE) -C dumper pruner clean + $(MAKE) -C dumper clean + $(MAKE) -C pruner clean .PHONY: clean dumper pruner diff --git a/tools/dumper/.gitignore b/tools/dumper/.gitignore new file mode 100644 index 000000000..cd066db0e --- /dev/null +++ b/tools/dumper/.gitignore @@ -0,0 +1 @@ +dumper diff --git a/tools/dumper/Makefile b/tools/dumper/Makefile index 5221fa036..af137def0 100644 --- a/tools/dumper/Makefile +++ b/tools/dumper/Makefile @@ -20,7 +20,7 @@ SUFFIXES: include ../../Makefile.INCLUDE dumper: $(shell find . -iname '*.go') - go build -o dumper . + $(GO) build -o dumper . clean: rm -rf $(MAKE_ARTIFACTS) diff --git a/tools/pruner/Makefile b/tools/pruner/Makefile index d7b668242..69635d424 100644 --- a/tools/pruner/Makefile +++ b/tools/pruner/Makefile @@ -20,7 +20,7 @@ SUFFIXES: include ../../Makefile.INCLUDE pruner: $(shell find . -iname '*.go') - go build -o pruner . + $(GO) build -o pruner . clean: rm -rf $(MAKE_ARTIFACTS) diff --git a/web/blob/Makefile b/web/blob/Makefile index 5c64fa192..a041c3415 100644 --- a/web/blob/Makefile +++ b/web/blob/Makefile @@ -11,12 +11,14 @@ # See the License for the specific language governing permissions and # limitations under the License. +include ../../Makefile.INCLUDE + all: files.go SUFFIXES: files.go: $(shell find ../templates/ ../static/ -type f) - ../../utility/embed-static.sh ../static ../templates | gofmt > $@ + ../../utility/embed-static.sh ../static ../templates | $(GOFMT) > $@ clean: -rm files.go