forked from membase/ns_server
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
207 lines (158 loc) · 7.24 KB
/
Makefile
File metadata and controls
207 lines (158 loc) · 7.24 KB
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
# Copyright (c) 2011, Couchbase, Inc.
# All rights reserved.
SHELL=/bin/sh
COUCHBASE_PLT ?= couchbase.plt
TMP_DIR=./tmp
TMP_VER=$(TMP_DIR)/version_num.tmp
TEST_TARGET=start
DOC_DIR?=./docs/erldocs
REBAR=./rebar
.PHONY: ebins
# always rebuild TMP_VER just in case someone depends on it be
# up-to-date
.PHONY: $(TMP_VER)
ifneq (,$(wildcard .configuration))
all: ebins deps_all priv/public/js/all-images.js
fail-unless-configured:
@true
else
all fail-unless-configured:
@echo
@echo "you need to run ./configure with --prefix option to be able to run ns_server"
@echo
@false
endif
dist:
mkdir -p tmp/ns_server-`git describe`
rm -rf tmp/ns_server-`git describe`/*
cp configure tmp/ns_server-`git describe`/
cp -R LICENSE Makefile README* cluster* common* cb* couchbase* rebar* tmp/ns_server-`git describe`/
cp -R deps doc etc include priv scripts src test tmp/ns_server-`git describe`/
find tmp/ns_server-`git describe` -name '*.beam' | xargs rm -f
tar -C tmp -czf ns_server-`git describe`.tar.gz ns_server-`git describe`
deps_smtp:
(cd deps/gen_smtp && $(MAKE) compile)
deps_erlwsh:
(cd deps/erlwsh; $(MAKE))
deps_ale:
(cd deps/ale; $(MAKE))
deps_all: deps_smtp deps_erlwsh deps_ale
docs:
priv/erldocs $(DOC_DIR)
ebins: src/ns_server.app.src include/replication_infos_ddoc.hrl deps_all
$(REBAR) compile
src/ns_server.app.src: src/ns_server.app.src.in $(TMP_VER)
(sed s/0.0.0/'$(if $(PRODUCT_VERSION),$(PRODUCT_VERSION),$(shell cat $(TMP_VER)))$(if $(PRODUCT_LICENSE),-$(PRODUCT_LICENSE))'/g $< > $@) || (rm $@ && false)
# NOTE: not depending on scripts/build_replication_infos_ddoc.rb because we're uploading both files to git.
# If you need to rebuild this file, remove it first.
include/replication_infos_ddoc.hrl:
scripts/build_replication_infos_ddoc.rb >$@ || (rm $@ && false)
rebuild_replication_infos_ddoc:
rm -f include/replication_infos_ddoc.hrl
$(MAKE) include/replication_infos_ddoc.hrl
.PHONY: rebuild_replication_infos_ddoc
ifdef PRODUCT_VERSION
.PHONY: src/ns_server.app.src
endif
priv/public/js/all-images.js: priv/public/images priv/public/images/spinner scripts/build-all-images.sh
scripts/build-all-images.sh >$@ || (rm $@ && false)
$(TMP_VER):
test -d $(TMP_DIR) || mkdir $(TMP_DIR)
git describe | sed s/-/_/g > $(TMP_VER)
REST_PREFIX := $(DESTDIR)$(PREFIX)
NS_SERVER := $(DESTDIR)$(PREFIX)/ns_server
install: all ebucketmigrator $(TMP_VER) fail-unless-configured
$(MAKE) do-install "NS_SERVER_VER=$(strip $(shell cat $(TMP_VER)))" "PREFIX=$(strip $(shell . `pwd`/.configuration && echo $$prefix))"
NS_SERVER_LIBDIR := $(DESTDIR)$(PREFIX)/lib/ns_server/erlang/lib/ns_server
ifdef NS_SERVER_VER
NS_SERVER_LIBDIR := $(DESTDIR)$(PREFIX)/lib/ns_server/erlang/lib/ns_server-$(NS_SERVER_VER)
ifeq (,$(DESTDIR)$(PREFIX))
$(error "need PREFIX defined")
endif
endif
PREFIX_FOR_CONFIG ?= $(PREFIX)
COUCHBASE_DB_DIR ?= $(PREFIX)/var/lib/couchbase/data/
ERLWSH_LIBDIR := $(DESTDIR)$(PREFIX)/lib/ns_server/erlang/lib/erlwsh
GEN_SMTP_LIBDIR := $(DESTDIR)$(PREFIX)/lib/ns_server/erlang/lib/gen_smtp
ALE_LIBDIR := $(DESTDIR)$(PREFIX)/lib/ns_server/erlang/lib/ale
do-install:
echo $(DESTDIR)$(PREFIX)
rm -rf $(DESTDIR)$(PREFIX)/lib/ns_server/erlang/lib/ns_server*
mkdir -p $(NS_SERVER_LIBDIR)
cp -r ebin $(NS_SERVER_LIBDIR)/
mkdir -p $(NS_SERVER_LIBDIR)/priv
cp -r priv/public $(NS_SERVER_LIBDIR)/priv/
mkdir -p $(ERLWSH_LIBDIR)
cp -r deps/erlwsh/ebin $(ERLWSH_LIBDIR)/
cp -r deps/erlwsh/priv $(ERLWSH_LIBDIR)/
mkdir -p $(GEN_SMTP_LIBDIR)
cp -r deps/gen_smtp/ebin $(GEN_SMTP_LIBDIR)/
mkdir -p $(ALE_LIBDIR)
cp -r deps/ale/ebin $(ALE_LIBDIR)/
mkdir -p $(DESTDIR)$(PREFIX)/etc/couchbase
sed -e 's|@DATA_PREFIX@|$(PREFIX_FOR_CONFIG)|g' -e 's|@BIN_PREFIX@|$(PREFIX_FOR_CONFIG)|g' \
<etc/static_config.in >$(DESTDIR)$(PREFIX)/etc/couchbase/static_config
touch $(DESTDIR)$(PREFIX)/etc/couchbase/config
mkdir -p $(DESTDIR)$(PREFIX)/bin/
sed -e 's|@PREFIX@|$(PREFIX)|g' <couchbase-server.sh.in >$(DESTDIR)$(PREFIX)/bin/couchbase-server
cp cbbrowse_logs $(DESTDIR)$(PREFIX)/bin/cbbrowse_logs
cp cbcollect_info $(DESTDIR)$(PREFIX)/bin/cbcollect_info
chmod +x $(DESTDIR)$(PREFIX)/bin/couchbase-server $(DESTDIR)$(PREFIX)/bin/cbbrowse_logs $(DESTDIR)$(PREFIX)/bin/cbcollect_info
mkdir -p $(DESTDIR)$(PREFIX)/var/lib/couchbase/mnesia
mkdir -p $(DESTDIR)$(PREFIX)/var/lib/couchbase/logs
cp priv/init.sql $(DESTDIR)$(PREFIX)/etc/couchbase/
cp ebucketmigrator $(DESTDIR)$(PREFIX)/bin/ebucketmigrator
chmod +x $(DESTDIR)$(PREFIX)/bin/ebucketmigrator
cp scripts/cbdump-config $(DESTDIR)$(PREFIX)/bin/
mkdir -p $(DESTDIR)$(PREFIX)/etc/couchdb/default.d
sed -e 's|@COUCHBASE_DB_DIR@|$(COUCHBASE_DB_DIR)|g' <etc/capi.ini.in >$(DESTDIR)$(PREFIX)/etc/couchdb/default.d/capi.ini
cp etc/geocouch.ini.in $(DESTDIR)$(PREFIX)/etc/couchdb/default.d/geocouch.ini
clean clean_all:
@(cd deps/gen_smtp && $(MAKE) clean)
@(cd deps/erlwsh && $(MAKE) clean)
@(cd deps/ale && $(MAKE) clean)
rm -f $(TMP_VER)
rm -f $(TMP_DIR)/*.cov.html
rm -f cov.html
rm -f ebucketmigrator
rm -f erl_crash.dump
rm -f ns_server_*.tar.gz
rm -f src/ns_server.app
rm -rf test/log
rm -rf ebin
rm -rf docs
dataclean:
rm -rf $(TMP_DIR) data coverage couch logs tmp
distclean: clean dataclean
TEST_EFLAGS=-pa ./ebin ./deps/*/ebin ./deps/*/deps/*/ebin $(shell . `pwd`/.configuration && echo $$couchdb_src)/src/couchdb
test: ebins
erl $(TEST_EFLAGS) -noshell -kernel error_logger silent -shutdown_time 10000 -eval 'application:start(sasl).' -eval "case t:$(TEST_TARGET)() of ok -> init:stop(); _ -> init:stop(1) end."
# assuming exuberant-ctags
TAGS:
ctags -eR .
$(COUCHBASE_PLT): | all
$(MAKE) do_build_plt COUCH_PATH="$(shell . `pwd`/.configuration && echo $$couchdb_src)"
do_build_plt:
dialyzer --output_plt $(COUCHBASE_PLT) --build_plt \
--apps compiler crypto erts inets kernel mnesia os_mon sasl ssl stdlib xmerl \
$(COUCH_PATH)/src/mochiweb \
$(COUCH_PATH)/src/snappy $(COUCH_PATH)/src/etap $(realpath $(COUCH_PATH)/src/ibrowse) \
$(realpath $(COUCH_PATH)/src/lhttpc) \
$(COUCH_PATH)/src/erlang-oauth deps/erlwsh/ebin deps/gen_smtp/ebin
OTP_RELEASE = $(shell erl -noshell -eval 'io:format("~s~n", [erlang:system_info(otp_release)]), erlang:halt().')
MAYBE_UNDEFINED_CALLBACKS = $(shell echo "$(OTP_RELEASE)" | grep -q "^R1[5-9]B.*$$" && echo -n "-Wno_undefined_callbacks" || echo -n)
dialyzer: all $(COUCHBASE_PLT)
$(MAKE) do-dialyzer DIALYZER_FLAGS="-Wno_return $(MAYBE_UNDEFINED_CALLBACKS) $(DIALYZER_FLAGS)" COUCH_PATH="$(shell . `pwd`/.configuration && echo $$couchdb_src)"
do-dialyzer:
dialyzer --plt $(COUCHBASE_PLT) $(DIALYZER_FLAGS) \
--apps `ls -1 ebin/*.beam | grep -v couch_log` deps/ale/ebin \
$(COUCH_PATH)/src/couchdb $(COUCH_PATH)/src/couch_set_view $(COUCH_PATH)/src/couch_view_parser \
$(COUCH_PATH)/src/couch_index_merger/ebin \
$(realpath $(COUCH_PATH)/src/mapreduce)
dialyzer_obsessive: all $(COUCHBASE_PLT)
$(MAKE) do-dialyzer DIALYZER_FLAGS="-Wunmatched_returns -Werror_handling -Wrace_conditions -Wbehaviours -Wunderspecs " COUCH_PATH="$(shell . `pwd`/.configuration && echo $$couchdb_src)"
Features/Makefile:
(cd features && ../test/parallellize_features.rb) >features/Makefile
.PHONY : features/Makefile
ebucketmigrator: ebins deps_all
erl -noshell -noinput -pa ebin -s misc build_ebucketmigrator -s init stop