From 0fe2aea70969ea36bd4fe40997c261e5a3e974d2 Mon Sep 17 00:00:00 2001 From: Badlop Date: Fri, 25 Jun 2021 12:40:26 +0200 Subject: [PATCH] New "make dev" and "./ejabberdctl" (requires using rebar3) --- .gitignore | 1 + Makefile.in | 5 +++++ rebar.config | 10 ++++++++++ rebar.config.script | 6 +++++- rel/setup-dev.sh | 31 +++++++++++++++++++++++++++++++ 5 files changed, 52 insertions(+), 1 deletion(-) create mode 100755 rel/setup-dev.sh diff --git a/.gitignore b/.gitignore index cd173988c..3e0fe0d08 100644 --- a/.gitignore +++ b/.gitignore @@ -17,6 +17,7 @@ /ebin/ /ejabberd.init /ejabberd.service +/ejabberdctl /ejabberdctl.example /rel/ejabberd/ /src/eldap_filter_yecc.erl diff --git a/Makefile.in b/Makefile.in index 2f6490d8a..c5b12c27f 100644 --- a/Makefile.in +++ b/Makefile.in @@ -362,6 +362,11 @@ distclean: clean clean-rel rel: $(REBAR) $(REBARREL) +DEV_CONFIG = _build/dev/rel/ejabberd/etc/ejabberd/ejabberd.yml + +dev $(DEV_CONFIG): + REBAR_PROFILE=dev rebar3 release + TAGS: etags *.erl diff --git a/rebar.config b/rebar.config index a5eb1477f..f443a84f3 100644 --- a/rebar.config +++ b/rebar.config @@ -192,7 +192,17 @@ {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"}]}]}]}, + {dev, [{post_hooks, [{release, "rel/setup-dev.sh"}]}, + {relx, [{dev_mode, true}, + {debug_info, keep}, + {include_erts, true}, + {include_src, false}, + {overlay, [{copy, "ejabberdctl.cfg.example", "etc/ejabberd/ejabberdctl.cfg.example"}, + {copy, "ejabberd.yml.example", "etc/ejabberd/ejabberd.yml.example"}, + {copy, "test/ejabberd_SUITE_data/ca.pem", "etc/ejabberd/"}, + {copy, "test/ejabberd_SUITE_data/cert.pem", "etc/ejabberd/"}]}]}]}, {test, [{erl_opts, [nowarn_export_all]}]}]}. + %% Local Variables: %% mode: erlang %% End: diff --git a/rebar.config.script b/rebar.config.script index 21f35b50c..9e47b70e3 100644 --- a/rebar.config.script +++ b/rebar.config.script @@ -341,10 +341,14 @@ end, ProcessRelx = fun(Relx, Deps) -> {value, {release, NameVersion, DefaultApps}, RelxTail} = lists:keytake(release, 1, Relx), + ProfileApps = case os:getenv("REBAR_PROFILE") of + "dev" -> [observer, runtime_tools, wx, debugger]; + _ -> [] + end, DepApps = lists:map(fun({DepName, _, _}) -> DepName; ({DepName, _}) -> DepName end, Deps), - [{release, NameVersion, DefaultApps ++ DepApps} | RelxTail] + [{release, NameVersion, DefaultApps ++ ProfileApps ++ DepApps} | RelxTail] end, GithubConfig = case {os:getenv("GITHUB_ACTIONS"), os:getenv("GITHUB_TOKEN")} of diff --git a/rel/setup-dev.sh b/rel/setup-dev.sh new file mode 100755 index 000000000..664a2a68d --- /dev/null +++ b/rel/setup-dev.sh @@ -0,0 +1,31 @@ +echo -n "===> Preparing dev configuration files: " + +PWD=`pwd` +REL_DIR=$PWD/_build/dev/rel/ +CON_DIR=$REL_DIR/ejabberd/etc/ejabberd/ +BIN_DIR=$REL_DIR/ejabberd/bin/ +CTLPATH=$BIN_DIR/ejabberdctl + +[ ! -f "ejabberdctl" ] \ + && echo -n "ejabberdctl " \ + && ln -s $CTLPATH ejabberdctl \ + && (cd $BIN_DIR && sed -i "s|^SCRIPT_DIR=.*|SCRIPT_DIR=`pwd`|g" ejabberdctl) + +cd $CON_DIR + +[ ! -f "ejabberd.yml" ] \ + && echo -n "ejabberd.yml " \ + && mv ejabberd.yml.example ejabberd.yml \ + && sed -i "s|# certfiles:|certfiles:\n - $CON_DIR/cert.pem|g" ejabberd.yml \ + && sed -i "s|certfiles:|ca_file: $CON_DIR/ca.pem\ncertfiles:|g" ejabberd.yml \ + && sed -i 's|^acl:$|acl:\n admin: [user: admin]|g' ejabberd.yml \ + || rm ejabberd.yml.example + +[ ! -f "ejabberdctl.cfg" ] \ + && echo -n "ejabberdctl.cfg " \ + && mv ejabberdctl.cfg.example ejabberdctl.cfg \ + && sed -i "s|#' POLL|EJABBERD_BYPASS_WARNINGS=true\n\n#' POLL|g" ejabberdctl.cfg \ + || rm ejabberdctl.cfg.example + +echo "" +echo "===> Now you can start this ejabberd dev with: ./ejabberdctl live"