influxdb/Makefile.in

361 lines
11 KiB
Makefile
Raw Normal View History

2013-11-20 20:53:43 +00:00
SHELL = /bin/bash
PROTOC = @PROTOC@
GO = @GO@
2013-11-26 21:04:07 +00:00
GOROOT = @GOROOT@
# or 386, arm
2013-11-20 20:53:43 +00:00
arch = amd64
CGO_ENABLED = 1
2013-11-26 21:04:07 +00:00
ifneq ($(GOROOT),)
export GOROOT
endif
2013-11-20 20:53:43 +00:00
cflags =
ifeq ($(arch),386)
cflags = -m32
else
ifeq ($(arch),arm)
cflags = -fpic
endif
endif
ifneq ($(arch),)
2013-11-20 20:53:43 +00:00
GOARCH = $(arch)
endif
ifneq ($(CROSS_COMPILE),)
export CXX=$(CROSS_COMPILE)-g++
export CC=$(CROSS_COMPILE)-gcc
export AS=$(CROSS_COMPILE)-as
export AR=$(CROSS_COMPILE)-ar
export NM=$(CROSS_COMPILE)-nm
export LD=$(CROSS_COMPILE)-ld
export OBJDUMP=$(CROSS_COMPILE)-objdump
export OBJCOPY=$(CROSS_COMPILE)-objcopy
export RANLIB=$(CROSS_COMPILE)-ranlib
export STRIP=$(CROSS_COMPILE)-strip
export CXX_FOR_TARGET=$(CROSS_COMPILE)-g++
export CC_FOR_TARGET=$(CROSS_COMPILE)-gcc
GO_BUILD_OPTIONS += -ldflags="-extld=$(CC)"
cross_flags = --host=$(arch)
endif
2013-11-20 20:53:43 +00:00
export GOARCH
export CGO_ENABLED
2014-03-24 23:42:36 +00:00
.PHONY: all valgrind parser package replace_version_string build binary_package dependencies
2013-11-20 20:53:43 +00:00
2013-12-04 17:35:41 +00:00
all: | parser valgrind build test integration_test
parser:
$(MAKE) -C src/parser
2013-11-20 20:53:43 +00:00
GOPATH := $(shell pwd)
export GOPATH
uname_S = $(shell sh -c "uname -s 2>/dev/null || echo not")
2013-12-18 20:28:53 +00:00
valgrind:
ifeq ($(uname_S),Linux)
$(MAKE) -C src/parser valgrind
endif
2013-11-20 20:53:43 +00:00
# packages
2014-04-07 20:37:29 +00:00
packages = admin api/http api/graphite cluster common configuration \
checkers coordinator datastore engine parser protocol wal
2013-11-20 20:53:43 +00:00
# Storage engines libraries
2013-11-20 20:53:43 +00:00
# snappy variables
snappy_version = 1.1.0
snappy_dir = /tmp/snappy.influxdb.$(arch)
snappy_file = snappy-$(snappy_version).tar.gz
snappy_deps = $(snappy_dir)/.libs/libsnappy.a
# leveldb variables
2014-04-01 15:48:07 +00:00
leveldb_version = 1.15.0
2013-11-20 20:53:43 +00:00
leveldb_dir = /tmp/leveldb.influxdb.$(arch)
leveldb_file = leveldb-$(leveldb_version).tar.gz
leveldb_deps = $(leveldb_dir)/libleveldb.a
rocksdb = no
ifeq ($(rocksdb),yes)
2014-06-17 15:26:33 +00:00
# rocksdb variables
rocksdb_version = 3.1
rocksdb_dir = /tmp/rocksdb.influxdb.$(arch)
rocksdb_file = rocksdb-$(rocksdb_version).tar.gz
rocksdb_deps = $(rocksdb_dir)/librocksdb.a
GO_BUILD_OPTIONS += -tags rocksdb
storage_engines += src/$(rocksdb_dependency)
endif
2014-06-17 15:26:33 +00:00
2014-06-17 19:00:47 +00:00
# hyperleveldb variables
hyperleveldb_version = v1.0.3
hyperleveldb_dir = /tmp/hyperleveldb.influxdb.$(arch)
hyperleveldb_file = $(hyperleveldb_version).tar.gz
hyperleveldb_deps = $(hyperleveldb_dir)/.libs/libhyperleveldb.a
profile=off
ifneq ($(profile),off)
CGO_LDFLAGS += -ltcmalloc -lprofiler
GO_BUILD_OPTIONS += -tags profile
endif
2013-11-20 20:53:43 +00:00
# levigo flags
2013-11-26 19:08:51 +00:00
ifeq ($(uname_S),Linux)
ifeq ($(rocksdb),yes)
CGO_CFLAGS += -I$(rocksdb_dir)/include
CGO_LDFLAGS += $(rocksdb_deps)
endif
CGO_CFLAGS += -I$(leveldb_dir)/include -I$(hyperleveldb_dir)/include
CGO_LDFLAGS += $(leveldb_deps) $(snappy_deps) $(hyperleveldb_deps)
2014-06-17 19:00:47 +00:00
CGO_LDFLAGS += -lstdc++ -lm -lz -lbz2
2013-11-20 20:53:43 +00:00
export CGO_CFLAGS
export CGO_LDFLAGS
2013-11-26 19:08:51 +00:00
else
2014-06-17 15:26:33 +00:00
CGO_LDFLAGS += -lleveldb -lrocksdb -lsnappy -lstdc++
2013-11-26 19:08:51 +00:00
export CGO_LDFLAGS
endif
ifneq ($(uname_S),Linux)
PYTHONPATH ?= /usr/local/lib/python2.7/site-packages/
export PYTHONPATH
endif
2013-11-20 20:53:43 +00:00
$(snappy_deps):
ifeq ($(uname_S),Linux)
rm -rf $(snappy_dir)
mkdir -p $(snappy_dir)
bash -c "cd $(snappy_dir); \
wget https://snappy.googlecode.com/files/$(snappy_file); \
tar --strip-components=1 -xvzf $(snappy_file); \
CFLAGS=$(cflags) CXXFLAGS=$(cflags) ./configure $(cross_flags); \
2013-11-20 20:53:43 +00:00
$(MAKE)"
endif
$(leveldb_deps): $(snappy_deps)
ifeq ($(uname_S),Linux)
rm -rf $(leveldb_dir)
mkdir -p $(leveldb_dir)
bash -c "cd $(leveldb_dir); \
wget https://leveldb.googlecode.com/files/$(leveldb_file); \
tar --strip-components=1 -xvzf $(leveldb_file); \
2014-06-17 15:26:33 +00:00
CXXFLAGS='-I$(snappy_dir) $(cflags)' LDFLAGS='-L$(snappy_dir)/.libs' $(MAKE)"
endif
$(rocksdb_deps):
ifeq ($(uname_S),Linux)
rm -rf $(rocksdb_dir)
mkdir -p $(rocksdb_dir)
bash -c "cd $(rocksdb_dir); \
wget -O $(rocksdb_file) https://github.com/facebook/rocksdb/archive/$(rocksdb_file); \
2014-06-17 15:26:33 +00:00
tar --strip-components=1 -xvzf $(rocksdb_file); \
CXXFLAGS='$(cflags)' $(MAKE) librocksdb.a"
2013-11-20 20:53:43 +00:00
endif
2014-06-17 19:00:47 +00:00
$(hyperleveldb_deps):
ifeq ($(uname_S),Linux)
rm -rf $(hyperleveldb_dir)
mkdir -p $(hyperleveldb_dir)
bash -c "cd $(hyperleveldb_dir); \
wget https://github.com/influxdb/HyperLevelDB/archive/$(hyperleveldb_file); \
tar --strip-components=1 -xvzf $(hyperleveldb_file); \
autoreconf -i; \
CFLAGS='$(cflags)' CXXFLAGS='$(cflags)' ./configure; \
$(MAKE)"
endif
2013-12-02 21:03:56 +00:00
levigo_dependency = github.com/jmhodges/levigo
2014-06-17 15:26:33 +00:00
rocksdb_dependency = github.com/influxdb/rocksdb
2014-06-17 19:00:47 +00:00
hyperleveldb_dependency = github.com/influxdb/hyperleveldb-go
2013-12-02 21:03:56 +00:00
proto_dependency = code.google.com/p/goprotobuf/protoc-gen-go
dependencies = code.google.com/p/go.crypto/bcrypt \
code.google.com/p/goprotobuf/proto \
code.google.com/p/log4go \
github.com/bmizerany/pat \
github.com/fitstar/falcore \
github.com/fitstar/falcore/filter \
github.com/gorilla/mux \
github.com/goraft/raft \
2013-12-03 22:34:04 +00:00
github.com/influxdb/go-cache \
github.com/BurntSushi/toml \
github.com/influxdb/influxdb-go \
2014-01-30 21:15:51 +00:00
code.google.com/p/gogoprotobuf/proto \
github.com/szferi/gomdb \
2013-12-02 21:03:56 +00:00
$(proto_dependency)
dependencies_paths := $(addprefix src/,$(dependencies))
src/$(levigo_dependency): $(leveldb_deps) $(snappy_deps)
$(GO) get -d $(levigo_dependency)
bash -c "pushd $@; find . -name \*.go | xargs sed -i 's/\/\/ #cgo LDFLAGS: -lleveldb\|#cgo LDFLAGS: -lleveldb//g'; popd"
src/$(rocksdb_dependency): $(rocksdb_deps)
2014-06-17 15:26:33 +00:00
$(GO) get -d $(rocksdb_dependency)
bash -c "pushd $@; find . -name \*.go | xargs sed -i 's/\/\/ #cgo LDFLAGS: -lrocksdb\|#cgo LDFLAGS: -lrocksdb//g'; popd"
src/$(hyperleveldb_dependency): $(hyperleveldb_deps)
2014-06-17 19:00:47 +00:00
$(GO) get -d $(hyperleveldb_dependency)
bash -c "pushd $@; find . -name \*.go | xargs sed -i 's/\/\/ #cgo LDFLAGS: -lhyperleveldb\|#cgo LDFLAGS: -lhyperleveldb//g'; popd"
$(dependencies_paths):
2013-12-02 21:03:56 +00:00
for i in $(dependencies); do $(GO) get -d $$i; done
storage_engines += src/$(levigo_dependency) src/$(hyperleveldb_dependency)
dependencies: $(storage_engines) $(dependencies_paths)
2013-11-20 20:53:43 +00:00
test_dependencies: dependencies
$(GO) get launchpad.net/gocheck
protobuf:
2013-12-02 21:03:56 +00:00
$(GO) get $(proto_dependency)
2013-11-20 20:53:43 +00:00
rm -f src/protocol/*.pb.go
PATH=$$PWD/bin:$$PATH $(PROTOC) --go_out=. src/protocol/*.proto
build: | dependencies protobuf parser build_version_string
2013-11-20 20:53:43 +00:00
# TODO: build all packages, otherwise we won't know
# if there's an error
$(GO) build $(GO_BUILD_OPTIONS) daemon
$(GO) build $(GO_BUILD_OPTIONS) tools/benchmark-storage
$(GO) build benchmark
2013-11-20 20:53:43 +00:00
clean:
2013-12-03 22:34:04 +00:00
rm -f daemon
2014-04-14 00:53:50 +00:00
rm -f benchmark
2013-11-20 20:53:43 +00:00
rm -rf pkg/
rm -rf packages/
2013-11-26 22:23:47 +00:00
rm -rf src/$(levigo_dependency)
rm -rf /tmp/influxdb
rm -rf /tmp/admin.influxdb
2013-12-04 17:35:41 +00:00
$(MAKE) -C src/parser clean
2013-11-20 20:53:43 +00:00
only =
verbose = off
ifneq ($(only),)
2014-02-28 15:30:14 +00:00
GOTEST_OPTS = -gocheck.f '$(only)'
2013-11-20 20:53:43 +00:00
endif
ifneq ($(verbose),off)
2013-12-23 22:30:21 +00:00
GOTEST_OPTS += -v -gocheck.v -gocheck.vv
2013-11-20 20:53:43 +00:00
endif
version=
ifeq ($(version),)
version = "dev"
endif
timeout = 10m
GOTEST_OPTS += -test.timeout=$(timeout)
bench:
$(GO) test coordinator -test.bench=. -test.benchmem
test: test_dependencies parser protobuf
2013-11-20 20:53:43 +00:00
$(GO) test $(packages) $(GOTEST_OPTS)
coverage: test_dependencies
for i in $(packages); do $(GO) test -coverprofile /tmp/influxdb.$${i/\//}.coverage $$i $(GOTEST_OPTS); \
$(GO) tool cover -html=/tmp/influxdb.$${i/\//}.coverage; done
integration_test: test_dependencies build
2013-12-02 04:34:45 +00:00
$(GO) test integration $(GOTEST_OPTS)
2013-11-20 20:53:43 +00:00
package_version=$(subst -,_,$(version))
2013-11-26 22:23:47 +00:00
admin_dir = /tmp/admin.influxdb
2014-02-25 22:57:54 +00:00
source_package = packages/influxdb-$(version).src.tar.gz
binary_package = packages/influxdb-$(version).$(arch).tar.gz
2013-11-26 22:23:47 +00:00
ifeq ($(arch),386)
rpm_package = packages/influxdb-$(package_version)-1.i686.rpm
debian_package = packages/influxdb_$(version)_i686.deb
arch_args = -a i686
else ifeq ($(arch),arm)
2014-05-28 23:33:45 +00:00
rpm_package = packages/influxdb-$(package_version)-1.armel.rpm
debian_package = packages/influxdb_$(version)_armel.deb
arch_args = -a armel
2013-11-26 22:23:47 +00:00
else
rpm_package = packages/influxdb-$(package_version)-1.x86_64.rpm
2014-02-25 22:57:54 +00:00
debian_package = packages/influxdb_$(version)_amd64.deb
2013-11-26 22:23:47 +00:00
endif
2013-11-27 02:44:09 +00:00
files = $(binary_package) $(debian_package) $(rpm_package) $(source_package)
2014-05-13 20:59:21 +00:00
sha1 = $(shell sh -c "git rev-list --max-count=1 --abbrev-commit HEAD")
2013-11-26 22:23:47 +00:00
build_version_string:
@echo "package main" > src/daemon/version.go
@echo "const version = \"$(version)\"" >> src/daemon/version.go
@echo "const gitSha = \"$(sha1)\"" >> src/daemon/version.go
package_version_string: build_version_string
2013-11-26 22:23:47 +00:00
sed -i.bak -e "s/REPLACE_VERSION/$(version)/" scripts/post_install.sh
$(admin_dir)/build:
rm -rf $(admin_dir)
rvm 1.9.3 do rvm gemset create influxdb
git clone https://github.com/influxdb/influxdb-admin.git $(admin_dir)
2014-01-06 19:55:35 +00:00
rvm 1.9.3@influxdb do bash -c "pushd $(admin_dir); bundle install; middleman build; popd"
2013-11-26 22:23:47 +00:00
$(rpm_package): $(admin_dir)/build build
rm -rf out_rpm
mkdir -p out_rpm/opt/influxdb/versions/$(version)
cp -r build/* out_rpm/opt/influxdb/versions/$(version)
rvm 1.9.3@influxdb do bash -c "pushd out_rpm; fpm -s dir -t rpm $(arch_args) --after-install ../scripts/post_install.sh -n influxdb -v $(version) .; popd"
2013-11-26 22:23:47 +00:00
mv out_rpm/$(shell basename $(rpm_package)) packages/
$(debian_package): $(admin_dir)/build build
rm -rf out_rpm
mkdir -p out_rpm/opt/influxdb/versions/$(version)
cp -r build/* out_rpm/opt/influxdb/versions/$(version)
rvm 1.9.3@influxdb do bash -c "pushd out_rpm; fpm -s dir -t deb $(arch_args) --after-install ../scripts/post_install.sh -n influxdb -v $(version) .; popd"
2013-11-26 22:23:47 +00:00
mv out_rpm/$(shell basename $(debian_package)) packages/
$(source_package): dependencies
rm -rf src/$(levigo_dependency)
$(GO) get -d $(levigo_dependency)
2013-12-03 22:34:04 +00:00
rm -f daemon
rm -f benchmark
git ls-files --others | egrep -v 'github|launchpad|code.google|version.go' > /tmp/influxdb.ignored
2013-11-26 22:23:47 +00:00
echo "pkg/*" >> /tmp/influxdb.ignored
echo "packages/*" >> /tmp/influxdb.ignored
echo "build/*" >> /tmp/influxdb.ignored
echo "out_rpm/*" >> /tmp/influxdb.ignored
rm -rf admin
cp -R $(admin_dir)/build admin
2013-11-26 22:23:47 +00:00
tar -czf $(source_package) --exclude-vcs -X /tmp/influxdb.ignored *
rm -rf /tmp/influxdb
mkdir /tmp/influxdb
tar -xzf $(source_package) -C /tmp/influxdb
rm $(source_package)
bash -c "pushd /tmp/; tar -czf `basename $(source_package)` influxdb; popd"
mv /tmp/$(shell basename $(source_package)) $(source_package)
rm -rf src/$(levigo_dependency)
rm -rf admin
2013-11-26 22:23:47 +00:00
$(binary_package): $(admin_dir)/build build packages
2013-11-26 22:23:47 +00:00
rm -rf build
mkdir build
2013-12-03 22:34:04 +00:00
mv daemon build/influxdb
mv benchmark build/influxdb-benchmark
cp src/benchmark/benchmark_config.sample.toml build/benchmark_config.toml
2013-11-26 22:23:47 +00:00
mkdir build/admin
cp -R $(admin_dir)/build/* build/admin/
cp -R scripts/ build/
cp config.sample.toml build/config.toml
2013-12-12 16:27:00 +00:00
sed -i 's/.\/admin/\/opt\/influxdb\/current\/admin/g' build/config.toml
sed -i 's/influxdb.log/\/opt\/influxdb\/shared\/log.txt/g' build/config.toml
sed -i 's/\/tmp\/influxdb\/development\/db/\/opt\/influxdb\/shared\/data\/db/g' build/config.toml
sed -i 's/\/tmp\/influxdb\/development\/raft/\/opt\/influxdb\/shared\/data\/raft/g' build/config.toml
sed -i 's/\/tmp\/influxdb\/development\/wal/\/opt\/influxdb\/shared\/data\/wal/g' build/config.toml
2013-11-26 22:23:47 +00:00
rm -f build/scripts/post_install.sh.bak
tar -czf $(binary_package) build/*
binary_package: $(binary_package)
2013-11-26 22:23:47 +00:00
packages:
mkdir $@
package: | packages build package_version_string $(files)
2013-11-26 22:23:47 +00:00
mv -f scripts/post_install.sh.bak scripts/post_install.sh