25
1
mirror of https://github.com/processone/ejabberd.git synced 2024-12-26 17:38:45 +01:00
Commit Graph

9328 Commits

Author SHA1 Message Date
Badlop
f34c2b1714 Document new XEPs supported thanks to its implementation in the xmpp library 2024-01-22 17:29:09 +01:00
Badlop
78750bf753 Annotate version when the commands v1 are available 2024-01-22 17:29:07 +01:00
Badlop
65d585496c Document sql_flags option introduced in 00c7600 2024-01-22 17:29:06 +01:00
badlop
194d3b9e17
Merge pull request #4143 from badlop/elixir-all-in
Improve support for Elixir, Mix and Rebar3
2024-01-22 12:44:21 +01:00
Badlop
b4b85e569e Runtime: Clean Rebar tests and add Rebar2 to them 2024-01-17 14:44:09 +01:00
Badlop
daabfeb0e2 Makefile: Add install-rel and uninstall-rel 2024-01-17 14:44:09 +01:00
Badlop
c61b57f7ab Makefile: Uninstall also the man file 2024-01-17 14:44:09 +01:00
Badlop
7cae0920b8 Makefile: Use AWK and MKDIR_P 2024-01-17 14:44:09 +01:00
Badlop
920e4ba6b1 Makefile: Fix TAGS target 2024-01-17 14:44:09 +01:00
Badlop
16e58a1911 Makefile: Update PHONY targets 2024-01-17 14:44:09 +01:00
Badlop
ec7570f93e Makefile: Add sections, headers and Vim folding 2024-01-17 14:44:09 +01:00
Badlop
ae2993ecae Rebar: Use excl_archive_filters only when Erlang < 26
That option is required when Erlang < 26 to disable the archive feature.
The feature and the option were removed in Erlang 26, and the release
building process fails if the option is used.
https://www.erlang.org/patches/otp-26.0
2024-01-17 14:43:24 +01:00
Badlop
ee778ca8f9 COMPILE.md: For Elixir, recommend at least 1.13.4 with Erlang/OTP 23.0 2024-01-17 10:24:34 +01:00
Badlop
a2ff5fbfdb Add observer and runtime_tools in releases when --enable-tools
When --enable-tools, include observer and runtime_tools
in the OTP releases, as they are required by "ejabberdctl etop".

With this fix, "ejabberdctl etop" works correctly when:
* rebar3 + make rel
* mix + make dev
* mix + make rel
2024-01-17 10:24:34 +01:00
Badlop
eeb4be6e4b Makefile: Rename "make rel" to "make prod"
Rebar2 could create a release, so it made sense to call it "make rel".

Nowadays, Rebar3 and Mix support creating different types of releases:
production, development, ...
In this sense, our "make rel" target is more properly named "make prod"

For backwards compatibility, "make rel" redirects to "make prod"
2024-01-17 10:24:34 +01:00
Badlop
aad3306bdf Makefile: Support using --with-rebar=/path/to/mix 2024-01-17 10:24:34 +01:00
Badlop
35b727ac39 ejabberdctl: Detect problem running iex and show explanation 2024-01-17 10:24:34 +01:00
Badlop
abf07966be ejabberdctl: Detect problem running etop and show some help 2024-01-17 10:24:34 +01:00
Badlop
a1c81955d3 ejabberdctl: Document to stop live shell with control+g, following cd421f9 2024-01-17 10:24:34 +01:00
Badlop
ad7538f394 Runtime: Rebar3+Elixir: Add new job to test Rebar3 compiling Elixir 2024-01-17 10:24:34 +01:00
Badlop
c0a909296e Runtime: Mix: Enable ModPresenceDemo and Elixir dep 2024-01-17 10:24:34 +01:00
Badlop
7186cd09bf Runtime: Test also "make install" 2024-01-17 10:24:34 +01:00
Badlop
db8583b1c6 Runtime: Mix: Add step to view logs 2024-01-17 10:24:34 +01:00
Badlop
07be61585c Runtime: Mix: No need to specify --disable-elixir 2024-01-17 10:24:34 +01:00
Badlop
8bdd811a16 Runtime: Mix: Update Erlang and Elixir versions to test 2024-01-17 10:24:34 +01:00
Badlop
c69d88c45a Runtime: Rebars: Add log tests similar to the Mix job 2024-01-17 10:24:34 +01:00
Badlop
b18fa2ebc2 Runtime: Rebars: Use the rebar binaries included in the repository 2024-01-17 10:24:34 +01:00
Badlop
f838319455 Runtime: Rebars: Get old rebar binaries when testing old erlang versions 2024-01-17 10:24:34 +01:00
Badlop
0d852474be Use Mix or Rebar3 by default instead of Rebar2 to compile ejabberd
Use the program specified in option: --with-rebar=/path/to/bin
When none is specified, use the system mix
When Elixir not found, use the system rebar3
When Rebar3 not found, use the rebar3 binary included with ejabberd
2024-01-17 10:24:34 +01:00
Badlop
dd5a198222 Rebar3: Include Elixir files when making a release 2024-01-17 10:24:34 +01:00
Badlop
2d067f7498 Rebar3: Workaround to fix protocol consolidation 2024-01-17 10:24:34 +01:00
Badlop
a6c1e42c0a Rebar3: Add support to compile Elixir dependencies
As described in
https://rebar3.org/docs/configuration/plugins/#elixir-dependencies
2024-01-17 10:24:34 +01:00
Badlop
ff783d15e8 Rebar3: Compile explicitly our Elixir files when --enable-elixir 2024-01-17 10:24:34 +01:00
Badlop
e1f14aca9b Rebar3: Provide proper path to iex
We can't use iex variable, because rebar3/relx_overlay.erl already uses
all existing app names as variables.
2024-01-17 10:24:34 +01:00
Badlop
65ff45e202 Rebar/Rebar3: Remove elixir as a gitonly_deps, and add ejabberd_po
Adding ejabberd_po to gitonly_deps isn't strictly needed,
because we request a branch in the ejabberd-po git repository,
and rebar.config.script understands that this means ejabberd_po
should be downloaded from git, not hex.pm.
2024-01-17 10:24:34 +01:00
Badlop
f330267361 Rebar/Rebar3: Remove Elixir as a rebar dependency
Elixir is standalone since years ago. When Elixir support is required,
better simply install Elixir and use Mix as build tool.
Or install Elixir and use the experimental Rebar3 support to compile
Elixir files and dependencies.
2024-01-17 10:24:34 +01:00
Badlop
1de28fa566 Rebar/Rebar3: Update binaries to work with Erlang/OTP 23-26
They are compiled from their git repositories, main branches,
using erlang:23-slim docker image.

To compile ejabberd using rebar/rebar3 and Erlang 22.3 or older,
you can download the old binaries from ejabberd 21.12, available at:
  https://github.com/processone/ejabberd/raw/21.12/rebar
  https://github.com/processone/ejabberd/raw/21.12/rebar3
2024-01-17 10:24:34 +01:00
Badlop
b08001183e ext_mod: Support Elixir modules with several defimpl, like Decimal 2024-01-17 10:24:34 +01:00
Badlop
0121adec03 ext_mod: Compile *.ex files also in source subfolders 2024-01-17 10:24:34 +01:00
Badlop
4daeb41f0e Elixir: Fix compiling ejabberd as a dependency (4128) 2024-01-17 10:24:34 +01:00
Badlop
b2df22469b Elixir: Fix ejabberdctl start/live when installed
The problem appeared when:
  ./configure --with-rebar=mix
  make install
  ejabberdctl live

=INFO REPORT==== 19-Dec-2023::21:28:36.006306 ===
    application: ssl
    exited: stopped
    type: temporary
...
2024-01-17 10:24:34 +01:00
Badlop
1bf80e861d Elixir: Fix: FORMATTER ERROR: bad return value (4087)
This is required since Elixir 1.15 when starting ejabberd with:
  ./configure --with-rebar=mix
  make relive
  make relive && ejabberdctl iexlive
  make install && ejabberdctl iexlive

Reference:
  https://elixir-lang.org/blog/2023/06/19/elixir-v1-15-0-released/
  https://hexdocs.pm/logger/Logger.Formatter.html#module-formatting
2024-01-17 10:24:34 +01:00
Badlop
5bb2beb179 Elixir: Fix: Couldn't find file Elixir.Hex.API
Fix for error when starting ejabberd with Elixir 1.15:
  [critical] Couldn't find file Elixir.Hex.API needed for Erlang application 'hex'.
2024-01-17 10:24:34 +01:00
Badlop
852a540cb0 Elixir: Fix Elixir 1.17-dev warnings about single-quoted charlists 2024-01-17 10:24:34 +01:00
Badlop
8b38aebbc7 Mix: Enable stun by default when vars.config not found
configure.ac by default enables stun and zlib, in fact ejabberd.yml
has ejabberd_stun enabled by default, so for coherence mix.exs should
enable stun too when vars.config is not found.
2024-01-17 10:24:34 +01:00
Badlop
fa3c25ab66 Mix: New option vars_config_path to set path to vars.config (4128)
Useful when setting ejabberd as dependency in another Elixir project,
and you want to enable or disable some ejabberd dependencies, see
https://www.process-one.net/blog/how-to-use-ejabberd-as-an-elixir-application-dependency/
2024-01-17 10:24:34 +01:00
Badlop
30df1dbe3f Mix: Set the nodename when using the ejabberd script generated by Elixir
Also use start instead of console in Elixir script
2024-01-17 10:24:34 +01:00
Badlop
6d61e3590d Mix: Print shell commands output to the console when "make dev" 2024-01-17 10:24:34 +01:00
Badlop
e71650e6ab Mix: Fix ejabberdctl iexlive problem locating iex in an OTP release
The problem appeared when:
  ./configure --with-rebar=mix
  make dev
  _build/dev/rel/ejabberd/bin/ejabberdctl iexlive
2024-01-17 10:24:34 +01:00
Badlop
d81b3805e3 Mix: Elixir 1.14 requires mix, and Elixir 1.16 warns about duplicate 2024-01-17 10:24:34 +01:00