1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
|
REPO ?= bitcask
BITCASK_TAG = $(shell git describe --tags)
BASE_DIR = $(shell pwd)
REBAR := $(shell which rebar)
ifeq ($(REBAR),)
REBAR = ./rebar
endif
PULSE_TESTS = bitcask_pulse
.PHONY: rel deps package pkgclean
all: deps compile
compile: deps
$(REBAR) compile
deps:
$(REBAR) get-deps
clean:
$(REBAR) clean
BITCASK_IO_MODE=erlang
test: deps compile eunit_nif
eunit_nif:
BITCASK_IO_MODE="nif" $(REBAR) skip_deps=true eunit
NOW = $(shell date +%s)
COUNTER = $(PWD)/$(NOW).current_counterexample.eqc
EQCINFO = $(PWD)/$(NOW).eqc-info
pulse:
@rm -rf $(BASE_DIR)/.eunit
BITCASK_PULSE=1 $(REBAR) clean compile
env BITCASK_PULSE=1 $(REBAR) -D PULSE eunit skip_deps=true suites=$(PULSE_TESTS) ; \
if [ $$? -ne 0 ]; then \
echo PULSE test FAILED; \
cp ./.eunit/current_counterexample.eqc $(COUNTER); \
cp ./.eunit/.eqc-info $(EQCINFO); \
echo See files $(COUNTER) and $(EQCINFO); \
exit 1; \
else \
exit 0; \
fi
# Release tarball creation
# Generates a tarball that includes all the deps sources so no checkouts are necessary
archivegit = git archive --format=tar --prefix=$(1)/ HEAD | (cd $(2) && tar xf -)
archivehg = hg archive $(2)/$(1)
archive = if [ -d ".git" ]; then \
$(call archivegit,$(1),$(2)); \
else \
$(call archivehg,$(1),$(2)); \
fi
buildtar = mkdir distdir && \
git clone . distdir/$(REPO)-clone && \
cd distdir/$(REPO)-clone && \
git checkout $(BITCASK_TAG) && \
$(call archive,$(BITCASK_TAG),..) && \
mkdir ../$(BITCASK_TAG)/deps && \
make deps; \
for dep in deps/*; do cd $${dep} && $(call archive,$${dep},../../../$(BITCASK_TAG)); cd ../..; done
distdir:
$(if $(BITCASK_TAG), $(call buildtar), $(error "You can't generate a release tarball from a non-tagged revision. Run 'git checkout <tag>', then 'make dist'"))
dist $(BITCASK_TAG).tar.gz: distdir
cd distdir; \
tar czf ../$(BITCASK_TAG).tar.gz $(BITCASK_TAG)
ballclean:
rm -rf $(BITCASK_TAG).tar.gz distdir
package: dist
$(MAKE) -C package package
pkgclean:
$(MAKE) -C package pkgclean
export BITCASK_TAG REPO
DIALYZER_APPS = kernel stdlib sasl erts ssl tools os_mon runtime_tools \
crypto inets xmerl webtool snmp public_key mnesia eunit \
syntax_tools compiler
include tools.mk
|