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
Badlop
416253496d
Mix: Add yecc compiler as suggested by Elixir 1.16 warning over p1_pgsql
2024-01-17 10:24:34 +01:00
Paweł Chmielowski
29ec5bff60
Add option to disable XEP-0474: SASL SCRAM Downgrade Protection support
...
Looks like clients using strophejs aren't able to authenticate when we
add data required by that spec to scram packets, so at least give a way
to disable this until clients will be fixed.
2024-01-16 12:03:35 +01:00