summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBadlop <badlop@process-one.net>2021-06-25 12:32:40 +0200
committerBadlop <badlop@process-one.net>2021-06-25 12:53:22 +0200
commitd5adcaea61dd0007cd0dbd77fb123b62c1fda876 (patch)
treedb2e33e7f5f8c62899efbed3d113462e5784096e
parentmod_push_keepalive: Fix 'resume_timeout' docs (diff)
Add support for rebar3 to "make rel"
-rw-r--r--.github/workflows/ci.yml3
-rw-r--r--Makefile.in6
-rw-r--r--rebar.config21
-rw-r--r--rebar.config.script10
-rw-r--r--rel/sys.config2
-rw-r--r--rel/vm.args32
-rw-r--r--src/ejabberd.app.src.script4
7 files changed, 73 insertions, 5 deletions
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 6b2b7b05..d498760b 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -123,10 +123,7 @@ jobs:
make update
make
- # Right now 'make rel' works only with rebar2, not rebar3
- run: make rel
- if: matrix.rebar == 2
-
- run: make install -s
- run: make hooks
- run: make options
diff --git a/Makefile.in b/Makefile.in
index ee2b36e3..2f6490d8 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -107,6 +107,7 @@ ifeq "$(IS_REBAR3)" "1"
DEPSBASE=_build
DEPSDIR=$(DEPSBASE)/default/lib
EBINDIR=$(DEPSDIR)/ejabberd/ebin
+ REBARREL=as prod tar
else
SKIPDEPS=skip_deps=true
LISTDEPS=-q list-deps
@@ -115,6 +116,7 @@ else
DEPSBASE=deps
DEPSDIR=$(DEPSBASE)
EBINDIR=ebin
+ REBARREL=generate
endif
all: deps src
@@ -357,8 +359,8 @@ distclean: clean clean-rel
rm -f ejabberdctl.example ejabberd.init ejabberd.service
[ ! -f ../ChangeLog ] || rm -f ../ChangeLog
-rel: all
- $(REBAR) generate
+rel:
+ $(REBAR) $(REBARREL)
TAGS:
etags *.erl
diff --git a/rebar.config b/rebar.config
index 046d3d92..a5eb1477 100644
--- a/rebar.config
+++ b/rebar.config
@@ -172,6 +172,27 @@
{"fast_yaml", []},
{"stringprep", []}]}.
+{relx, [{release, {ejabberd, {cmd, "grep {vsn, vars.config | sed 's|{vsn, \"||;s|\"}.||' | tr -d '\012'"}},
+ [ejabberd, odbc]},
+ {sys_config, "./rel/sys.config"},
+ {vm_args, "./rel/vm.args"},
+ {overlay_vars, "vars.config"},
+ {extended_start_script, true},
+ {overlay, [{mkdir, "var/log/ejabberd"},
+ {mkdir, "var/lock"},
+ {mkdir, "var/lib/ejabberd"},
+ {mkdir, "etc/ejabberd"},
+ {copy, "rel/files/erl", "\{\{erts_vsn\}\}/bin/erl"}, % in rebar2 this prepends erts-
+ {template, "ejabberdctl.template", "bin/ejabberdctl"},
+ {copy, "inetrc", "etc/ejabberd/inetrc"},
+ {copy, "rel/files/install_upgrade.escript", "bin/install_upgrade.escript"}]}
+ ]}.
+
+{profiles, [{prod, [{relx, [{mode, prod},
+ {overlay, [{copy, "sql/*", "lib/ejabberd-\{\{release_version\}\}/priv/sql/"},
+ {copy, "ejabberdctl.cfg.example", "etc/ejabberd/ejabberdctl.cfg"},
+ {copy, "ejabberd.yml.example", "etc/ejabberd/ejabberd.yml"}]}]}]},
+ {test, [{erl_opts, [nowarn_export_all]}]}]}.
%% Local Variables:
%% mode: erlang
%% End:
diff --git a/rebar.config.script b/rebar.config.script
index a2e31ef4..21f35b50 100644
--- a/rebar.config.script
+++ b/rebar.config.script
@@ -339,6 +339,14 @@ fun(Deps, FDeps) ->
end, Deps)
end,
+ProcessRelx = fun(Relx, Deps) ->
+ {value, {release, NameVersion, DefaultApps}, RelxTail} = lists:keytake(release, 1, Relx),
+ DepApps = lists:map(fun({DepName, _, _}) -> DepName;
+ ({DepName, _}) -> DepName
+ end, Deps),
+ [{release, NameVersion, DefaultApps ++ DepApps} | RelxTail]
+ end,
+
GithubConfig = case {os:getenv("GITHUB_ACTIONS"), os:getenv("GITHUB_TOKEN")} of
{"true", Token} when is_list(Token) ->
CONFIG1 = [{coveralls_repo_token, Token},
@@ -374,6 +382,8 @@ Rules = [
ProcessErlOpt, []},
{[xref_queries], [xref_exclusions], true,
AppendList2(ProcssXrefExclusions), [], []},
+ {[relx], [deps], IsRebar3,
+ ProcessRelx, [], []},
{[deps], [floating_deps], true,
ProcessFloatingDeps, [], []},
{[deps], [gitonly_deps], IsRebar3,
diff --git a/rel/sys.config b/rel/sys.config
new file mode 100644
index 00000000..ff6f0f36
--- /dev/null
+++ b/rel/sys.config
@@ -0,0 +1,2 @@
+[{ejabberd, [{config, "etc/ejabberd/ejabberd.yml"},
+ {log_path, "var/log/ejabberd/ejabberd.log"}]}].
diff --git a/rel/vm.args b/rel/vm.args
new file mode 100644
index 00000000..29858b0d
--- /dev/null
+++ b/rel/vm.args
@@ -0,0 +1,32 @@
+## Name of the node
+-sname ejabberd@localhost
+
+## Cookie for distributed erlang
+#-setcookie ejabberd
+
+-mnesia dir \"var/lib/ejabberd\"
+
+## Heartbeat management; auto-restarts VM if it dies or becomes unresponsive
+## (Disabled by default..use with caution!)
+##-heart
+
+## Enable kernel poll and a few async threads
+##+K true
+##+A 5
+
+## Increase number of concurrent ports/sockets
+##-env ERL_MAX_PORTS 4096
+
+## Tweak GC to run more often
+##-env ERL_FULLSWEEP_AFTER 10
+
+# +B [c | d | i]
+# Option c makes Ctrl-C interrupt the current shell instead of invoking the emulator break
+# handler. Option d (same as specifying +B without an extra option) disables the break handler. # Option i makes the emulator ignore any break signal.
+# If option c is used with oldshell on Unix, Ctrl-C will restart the shell process rather than
+# interrupt it.
+# Disable the emulator break handler
+# it easy to accidentally type ctrl-c when trying
+# to reach for ctrl-d. ctrl-c on a live node can
+# have very undesirable results
+##+Bi
diff --git a/src/ejabberd.app.src.script b/src/ejabberd.app.src.script
index 8248d9c1..67a7a470 100644
--- a/src/ejabberd.app.src.script
+++ b/src/ejabberd.app.src.script
@@ -20,10 +20,14 @@ Vars = case file:consult(filename:join([filename:dirname(SCRIPT), "..", "vars.co
cache_tab,
eimp,
fast_tls,
+ fast_xml,
fast_yaml,
lager,
+ p1_acme,
p1_utils,
pkix,
+ stringprep,
+ yconf,
xmpp]},
{mod, {ejabberd_app, []}}]}.