Skip to content

Commit 74b8399

Browse files
committed
Support Rebar3.
1 parent 97c345d commit 74b8399

29 files changed

+341
-336
lines changed

.gitignore

+3-15
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,4 @@
1-
*.beam
2-
.eunit
3-
.rebar
4-
deps/*
5-
ebin/*
6-
rel/dotted_db
7-
dev
8-
apps/dotted_db/src/*
9-
.idea/*
10-
DottedDB.iml
111
benchmarks/tests/*
12-
.combo_dialyzer_plt
13-
.local_dialyzer_plt
14-
dialyzer_unhandled_warnings
15-
dialyzer_warnings
16-
dialyzer.ignore-warnings
2+
benchmarks/*.out
3+
benchmarks/*.svg
4+
_build/*

Makefile

+43-101
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,54 @@
1-
REBAR = $(shell pwd)/rebar
2-
.PHONY: deps
1+
REBAR3_URL=https://s3.amazonaws.com/rebar3/rebar3
32

4-
all: deps compile
3+
# If there is a rebar in the current directory, use it
4+
ifeq ($(wildcard rebar3),rebar3)
5+
REBAR3 = $(CURDIR)/rebar3
6+
endif
57

6-
compile:
7-
$(REBAR) compile
8+
# Fallback to rebar on PATH
9+
REBAR3 ?= $(shell test -e `which rebar3` 2>/dev/null && which rebar3 || echo "./rebar3")
810

9-
deps:
10-
$(REBAR) get-deps
11+
# And finally, prep to download rebar if all else fails
12+
ifeq ($(REBAR3),)
13+
REBAR3 = $(CURDIR)/rebar3
14+
endif
1115

12-
compile-no-deps:
13-
$(REBAR) compile skip_deps=true
16+
.PHONY: all
1417

15-
test: compile
16-
$(REBAR) eunit skip_deps=true
18+
all: $(REBAR3)
19+
@$(REBAR3) do deps, compile
20+
21+
rel: compile
22+
@$(REBAR3) release -d false --overlay_vars config/vars.config
23+
24+
rel_dev: compile
25+
@$(REBAR3) release --overlay_vars config/vars.config
1726

1827
clean:
19-
$(REBAR) clean
28+
@$(REBAR3) clean
2029

21-
distclean: clean devclean relclean
22-
$(REBAR) delete-deps
30+
compile:
31+
@$(REBAR3) compile
2332

24-
rel: all
25-
$(REBAR) generate
33+
compile-no-deps:
34+
@$(REBAR3) compile
2635

27-
relclean:
28-
rm -rf rel/dotted_db
36+
deps:
37+
@$(REBAR3) deps
2938

30-
xref: all
31-
$(REBAR) skip_deps=true xref
39+
doc: compile
40+
@$(REBAR3) edoc
3241

33-
stage: rel
34-
$(foreach dep,$(wildcard deps/*), rm -rf rel/dotted_db/lib/$(shell basename $(dep))-* && ln -sf $(abspath $(dep)) rel/dotted_db/lib;)
35-
$(foreach app,$(wildcard apps/*), rm -rf rel/dotted_db/lib/$(shell basename $(app))-* && ln -sf $(abspath $(app)) rel/dotted_db/lib;)
42+
dialyzer: compile
43+
@$(REBAR3) dialyzer
3644

37-
##
38-
## Lock Targets
39-
##
40-
## see https://github.com/seth/rebar_lock_deps_plugin
41-
lock: deps compile
42-
./rebar lock-deps
45+
test: deps compile
46+
@$(REBAR3) do eunit skip_deps=true, ct, dialyzer
4347

44-
locked-all: locked-deps compile
4548

46-
locked-deps:
47-
@echo "Using rebar.config.lock file to fetch dependencies"
48-
./rebar -C rebar.config.lock get-deps
49+
$(REBAR3):
50+
curl -Lo rebar3 $(REBAR3_URL) || wget $(REBAR3_URL)
51+
chmod a+x rebar3
4952

5053

5154
##
@@ -59,7 +62,7 @@ locked-deps:
5962
## Example, make a 68 node devrel cluster
6063
## make stagedevrel DEVNODES=68
6164

62-
.PHONY : stagedevrel devrel
65+
.PHONY : devrel
6366
DEVNODES ?= 4
6467

6568
# 'seq' is not available on all *BSD, so using an alternate in awk
@@ -68,72 +71,11 @@ SEQ = $(shell awk 'BEGIN { for (i = 1; i < '$(DEVNODES)'; i++) printf("%i ", i);
6871
$(eval stagedevrel : $(foreach n,$(SEQ),stagedev$(n)))
6972
$(eval devrel : $(foreach n,$(SEQ),dev$(n)))
7073

71-
dev% : all
72-
mkdir -p dev
73-
rel/gen_dev $@ rel/vars/dev_vars.config.src rel/vars/$@_vars.config
74-
(cd rel && $(REBAR) generate target_dir=../dev/$@ overlay_vars=vars/$@_vars.config)
75-
76-
stagedev% : dev%
77-
$(foreach dep,$(wildcard deps/*), rm -rf dev/$^/lib/$(shell basename $(dep))* && ln -sf $(abspath $(dep)) dev/$^/lib;)
78-
$(foreach app,$(wildcard apps/*), rm -rf dev/$^/lib/$(shell basename $(app))* && ln -sf $(abspath $(app)) dev/$^/lib;)
74+
dev% : devclean all
75+
mkdir -p _build/dev/$@
76+
config/gen_dev $@ config/vars/dev_vars.config.src config/vars/$@_vars.config
77+
$(REBAR3) release -o _build/dev/$@ --overlay_vars config/vars/$@_vars.config
7978

8079
devclean: clean
81-
rm -rf dev
82-
83-
84-
## Dialyzer
85-
86-
DIALYZER_APPS = kernel stdlib sasl erts ssl tools os_mon runtime_tools crypto inets \
87-
xmerl webtool eunit syntax_tools compiler public_key snmp
88-
89-
90-
PLT ?= $(PWD)/.combo_dialyzer_plt
91-
LOCAL_PLT = $(PWD)/.local_dialyzer_plt
92-
DIALYZER_FLAGS ?= -Wunmatched_returns -Werror_handling -Wrace_conditions -Wunderspecs
93-
94-
${PLT}: compile-no-deps
95-
@if [ -f $(PLT) ]; then \
96-
dialyzer --check_plt --plt $(PLT) --apps $(DIALYZER_APPS) && \
97-
dialyzer --add_to_plt --plt $(PLT) --output_plt $(PLT) --apps $(DIALYZER_APPS) ; test $$? -ne 1; \
98-
else \
99-
dialyzer --build_plt --output_plt $(PLT) --apps $(DIALYZER_APPS); test $$? -ne 1; \
100-
fi
101-
102-
${LOCAL_PLT}: compile-no-deps
103-
@if [ -d deps ]; then \
104-
if [ -f $(LOCAL_PLT) ]; then \
105-
dialyzer --check_plt --plt $(LOCAL_PLT) deps/*/ebin ebin && \
106-
dialyzer --add_to_plt --plt $(LOCAL_PLT) --output_plt $(LOCAL_PLT) deps/*/ebin ebin ; test $$? -ne 1; \
107-
else \
108-
dialyzer --build_plt --output_plt $(LOCAL_PLT) deps/*/ebin ebin ; test $$? -ne 1; \
109-
fi \
110-
fi
111-
112-
dialyzer: ${PLT} ${LOCAL_PLT}
113-
@echo "==> $(shell basename $(shell pwd)) (dialyzer)"
114-
@if [ -f $(LOCAL_PLT) ]; then \
115-
PLTS="$(PLT) $(LOCAL_PLT)"; \
116-
else \
117-
PLTS=$(PLT); \
118-
fi; \
119-
if [ -f dialyzer.ignore-warnings ]; then \
120-
if [ $$(grep -cvE '[^[:space:]]' dialyzer.ignore-warnings) -ne 0 ]; then \
121-
echo "ERROR: dialyzer.ignore-warnings contains a blank/empty line, this will match all messages!"; \
122-
exit 1; \
123-
fi; \
124-
dialyzer $(DIALYZER_FLAGS) --plts $${PLTS} -c ebin > dialyzer_warnings ; \
125-
egrep -v "^[[:space:]]*(done|Checking|Proceeding|Compiling)" dialyzer_warnings | grep -F -f dialyzer.ignore-warnings -v > dialyzer_unhandled_warnings ; \
126-
cat dialyzer_unhandled_warnings ; \
127-
[ $$(cat dialyzer_unhandled_warnings | wc -l) -eq 0 ] ; \
128-
else \
129-
dialyzer $(DIALYZER_FLAGS) --plts $${PLTS} -c ebin; \
130-
fi
131-
132-
cleanplt:
133-
@echo
134-
@echo "Are you sure? It takes several minutes to re-build."
135-
@echo Deleting $(PLT) and $(LOCAL_PLT) in 5 seconds.
136-
@echo
137-
sleep 5
138-
rm $(PLT)
139-
rm $(LOCAL_PLT)
80+
rm -rf _build/dev
81+

Rakefile

+28-28
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ require 'fileutils'
55
NUM_NODES = 4
66
NUM_NODES_STR = "4"
77
#RING_SIZE = 16
8-
BACKEND = 'leveldb' #options: bitcask, leveldb, memory.
8+
# BACKEND = 'leveldb' #options: bitcask, leveldb, memory.
99

1010
task :default => :help
1111

@@ -15,25 +15,25 @@ end
1515

1616
desc "counters # of errors lines in the dev cluster log"
1717
task :errors do
18-
sh "cat dev/dev?/log/error.log dev/dev?/log/crash.log| wc -l" rescue "print errors error"
19-
sh "cat dev/dev1/log/error.log dev/dev1/log/crash.log| wc -l" rescue "print errors error"
20-
sh "cat dev/dev2/log/error.log dev/dev2/log/crash.log| wc -l" rescue "print errors error"
21-
sh "cat dev/dev3/log/error.log dev/dev3/log/crash.log| wc -l" rescue "print errors error"
22-
sh "cat dev/dev4/log/error.log dev/dev4/log/crash.log| wc -l" rescue "print errors error"
18+
sh "cat _build/dev/dev?/dotted_db/log/error.log dev/dev?/log/crash.log| wc -l" rescue "print errors error"
19+
sh "cat _build/dev/dev1/dotted_db/log/error.log dev/dev1/log/crash.log| wc -l" rescue "print errors error"
20+
sh "cat _build/dev/dev2/dotted_db/log/error.log dev/dev2/log/crash.log| wc -l" rescue "print errors error"
21+
sh "cat _build/dev/dev3/dotted_db/log/error.log dev/dev3/log/crash.log| wc -l" rescue "print errors error"
22+
sh "cat _build/dev/dev4/dotted_db/log/error.log dev/dev4/log/crash.log| wc -l" rescue "print errors error"
2323
end
2424

2525
desc "resets the logs"
2626
task :clean_errors do
2727
(1..NUM_NODES).each do |n|
28-
sh %{rm -rf dev/dev#{n}/log/*}
29-
sh "touch dev/dev#{n}/log/error.log dev/dev#{n}/log/crash.log" rescue "print clean error"
28+
sh %{rm -rf _build/dev/dotted_db/dev#{n}/log/*}
29+
sh "touch _build/dev/dev#{n}/dotted_db/log/error.log _build/dev/dev#{n}/dotted_db/log/crash.log" rescue "print clean error"
3030
end
3131
end
3232

3333
desc "attach to a dottedDB console"
3434
task :attach, :node do |t, args|
3535
args.with_defaults(:node => 1)
36-
sh %{dev/dev#{args.node}/bin/dotted_db attach} rescue "attach error"
36+
sh %{_build/dev/dev#{args.node}/dotted_db/bin/dotted_db attach} rescue "attach error"
3737
end
3838

3939

@@ -57,15 +57,15 @@ end
5757

5858
desc "make the dev dotted_db folders"
5959
task :build => :clear do
60-
sh "make stagedevrel" rescue "build dev error"
60+
sh "make devrel" rescue "build dev error"
6161
end
6262

6363
desc "start all dotted_db nodes"
6464
task :start do
6565
# (1..NUM_NODES).each do |n|
6666
# sh %{dev/dev#{n}/bin/dotted_db start}
6767
# end
68-
sh "for d in dev/dev*; do $d/bin/dotted_db start; done" rescue "not running"
68+
sh "for d in _build/dev/dev*; do $d/dotted_db/bin/dotted_db start; done" rescue "not running"
6969
puts "========================================"
7070
puts "Dotted Dev Cluster started"
7171
puts "========================================"
@@ -75,38 +75,38 @@ desc "join dotted_db nodes (only needed once)"
7575
task :join do
7676
sleep(2)
7777
(2..NUM_NODES).each do |n|
78-
sh %{dev/dev#{n}/bin/dotted_db-admin cluster join [email protected]} rescue "already joined"
78+
sh %{_build/dev/dev#{n}/dotted_db/bin/dotted_db-admin cluster join [email protected]} rescue "already joined"
7979
end
80-
sh %{dev/dev1/bin/dotted_db-admin cluster plan}
81-
sh %{dev/dev1/bin/dotted_db-admin cluster commit}
80+
sh %{_build/dev/dev1/dotted_db/bin/dotted_db-admin cluster plan}
81+
sh %{_build/dev/dev1/dotted_db/bin/dotted_db-admin cluster commit}
8282
end
8383

8484
desc "waits for cluster vnode converge to stabilize"
8585
task :converge do
8686
puts "waiting for cluster vnode reshuffling to converge"
8787
$stdout.sync = true
88-
cmd = `dev/dev1/bin/dotted_db-admin member-status | grep "\ \-\-" | wc -l`
89-
cmd = `dev/dev1/bin/dotted_db-admin member-status | grep "\ \-\-" | wc -l`
88+
cmd = `_build/dev/dev1/dotted_db/bin/dotted_db-admin member-status | grep "\ \-\-" | wc -l`
89+
# cmd = `dev/dev1/bin/dotted_db-admin member-status | grep "\ \-\-" | wc -l`
9090
counter = 1
9191
tries = 0
9292
continue = true
9393
while (cmd.strip != NUM_NODES_STR and continue)
9494
print "."
9595
sleep(1)
96-
cmd = `dev/dev1/bin/dotted_db-admin member-status | grep "\ \-\-" | wc -l`
96+
cmd = `_build/dev/dev1/dotted_db/bin/dotted_db-admin member-status | grep "\ \-\-" | wc -l`
9797
counter = counter + 1
9898
if counter > 5
9999
tries = tries + 1
100100
puts ""
101101
puts "Try # #{tries} of 20"
102-
sh %{dev/dev1/bin/dotted_db-admin member-status}
102+
sh %{_build/dev/dev1/dotted_db/bin/dotted_db-admin member-status}
103103
counter = 1
104104
end
105105
if tries > 39
106106
continue = false
107107
end
108108
end
109-
sh %{dev/dev1/bin/dotted_db-admin member-status}
109+
sh %{_build/dev/dev1/dotted_db/bin/dotted_db-admin member-status}
110110
if continue
111111
puts "READY SET GO!"
112112
else
@@ -116,15 +116,15 @@ end
116116

117117
desc "dotted_db-admin member-status"
118118
task :member_status do
119-
sh %{dev/dev1/bin/dotted_db-admin member-status}
119+
sh %{_build/dev/dev1/dotted_db/bin/dotted_db-admin member-status}
120120
end
121121

122122
desc "stop all dotted_db nodes"
123123
task :stop do
124124
# (1..NUM_NODES).each do |n|
125125
# sh %{dev/dev#{n}/bin/dotted_db stop} rescue "not running"
126126
# end
127-
sh "for d in dev/dev*; do $d/bin/dotted_db stop; done" rescue "not running"
127+
sh "for d in _build/dev/dev*; do $d/dotted_db/bin/dotted_db stop; done" rescue "not running"
128128
puts "========================================"
129129
puts "Dotted Dev Cluster stopped"
130130
puts "========================================"
@@ -139,32 +139,32 @@ task :restart_with_storage => [:stop, :compile, :start]
139139
desc "clear data from all dotted_db nodes"
140140
task :clear => :stop do
141141
(1..NUM_NODES).each do |n|
142-
sh %{rm -rf dev/dev#{n}}
142+
sh %{rm -rf _build/dev/dev#{n}}
143143
end
144144
end
145145

146146
desc "ping all dotted_db nodes"
147147
task :ping do
148148
(1..NUM_NODES).each do |n|
149-
sh %{dev/dev#{n}/bin/dotted_db ping}
149+
sh %{_build/dev/dev#{n}/dotted_db/bin/dotted_db ping}
150150
end
151151
end
152152

153153
desc "dotted_db-admin test"
154154
task :test do
155155
(1..NUM_NODES).each do |n|
156-
sh %{dev/dev#{n}/bin/dotted_db-admin test}
156+
sh %{_build/dev/dev#{n}/dotted_db/bin/dotted_db-admin test}
157157
end
158158
end
159159

160160
desc "dotted_db-admin status"
161161
task :status do
162-
sh %{dev/dev1/bin/dotted_db-admin status}
162+
sh %{_build/dev/dev1/dotted_db/bin/dotted_db-admin status}
163163
end
164164

165165
desc "dotted_db-admin ring-status"
166166
task :ring_status do
167-
sh %{dev/dev1/bin/dotted_db-admin ring-status}
167+
sh %{_build/dev/dev1/dotted_db/bin/dotted_db-admin ring-status}
168168
end
169169

170170
desc "plot local dev nodes stats"
@@ -175,8 +175,8 @@ end
175175
desc "deletes the database storage to start from scratch"
176176
task :delete_storage do
177177
(1..NUM_NODES).each do |n|
178-
sh %{rm -rf dev/dev#{n}/data/vnode_state}
179-
sh %{rm -rf dev/dev#{n}/data/objects}
178+
sh %{rm -rf _build/dev/dev#{n}/dotted_db/data/vnode_state}
179+
sh %{rm -rf _build/dev/dev#{n}/dotted_db/data/objects}
180180
# sh %{rm -rf dev/dev#{n}/log}
181181
end
182182
end

apps/dotted_db/ebin

-1
This file was deleted.

apps/dotted_db/src

-1
This file was deleted.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

rel/gen_dev renamed to config/gen_dev

+2-5
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,14 @@
11
#! /bin/sh
22
#
3-
# gen_dev dev4 vars.src vars
4-
#
53
# Generate an overlay config for devNNN from vars.src and write to vars
64
#
5+
# Ex: > gen_dev dev4 vars.src vars
6+
#
77

88
NAME=$1
99
TEMPLATE=$2
1010
VARFILE=$3
1111

12-
## Allocate 10 ports per node
13-
## .7 - http
14-
1512
NUMBER=${NAME##dev}
1613
BASE=$((10000 + 10 * $NUMBER))
1714
WEBPORT=$(($BASE + 8))
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)