[packages/ejabberd] Up to 26.07 - ship bootstrap for mod_invites (no npm/curl at build time) - drop base64url/jiffy/unic
arekm
arekm at pld-linux.org
Fri Sep 11 11:36:33 CEST 2026
commit 104021d8188af33c021350fe6effefc074aeac8f
Author: Arkadiusz Miśkiewicz <arekm at maven.pl>
Date: Fri Sep 11 11:33:42 2026 +0200
Up to 26.07
- ship bootstrap for mod_invites (no npm/curl at build time)
- drop base64url/jiffy/unicode_util_compat: not needed
- eimp: dlopen versioned sonames
ejabberd-eimp-sonames.patch | 37 ++++++++++++++++
ejabberd.spec | 100 ++++++++++++++++++++++++--------------------
2 files changed, 92 insertions(+), 45 deletions(-)
---
diff --git a/ejabberd.spec b/ejabberd.spec
index 0684761..5a815c4 100644
--- a/ejabberd.spec
+++ b/ejabberd.spec
@@ -9,67 +9,64 @@
Summary: Fault-tolerant distributed Jabber/XMPP server
Summary(pl.UTF-8): Odporny na awarie rozproszony serwer Jabbera/XMPP
Name: ejabberd
-Version: 26.02
+Version: 26.07
Release: 1
License: GPL
Group: Applications/Communications
# Source0: https://www.process-one.net/downloads/downloads-action.php?file=/%%{version}/%%{name}-%%{version}.tar.gz
Source0: https://github.com/processone/ejabberd/archive/refs/tags/%{version}.tar.gz
-# Source0-md5: 351090f1d8769866cc49a16dc3702e4a
+# Source0-md5: 161ee1a1dcf8b2c00315c25d044592fd
Source1: %{name}.init
Source2: %{name}.sysconfig
Source3: %{name}.service
Source4: %{name}.logrotate
+# mod_invites landing page assets; without them the Makefile tries npm/curl at build time
+Source5: https://github.com/twbs/bootstrap/releases/download/v5.3.8/bootstrap-5.3.8-dist.zip
+# Source5-md5: 47618f513bb53f5ed4d36a2170d3c478
# Archives created with the ejabberd-pack_deps.sh script (in this repo)
-Source10: ejabberd-base64url-20190617.tar.gz
-# Source10-md5: 5a12fd2fb1f992c850aba5115aab3dd4
-Source11: ejabberd-cache_tab-20250711.tar.gz
-# Source11-md5: e30cc84a853d6428dcae901353d80c07
-Source12: ejabberd-eimp-20250711.tar.gz
-# Source12-md5: 0c5b1e205bb27411d3bb79cdcf5a8730
+Source11: ejabberd-cache_tab-20260325.tar.gz
+# Source11-md5: 265a026990607d476c9527321fa79691
+Source12: ejabberd-eimp-20260325.tar.gz
+# Source12-md5: e9a307470a0d8af44bd6be02437c00c3
Source13: ejabberd-erlydtl-20250813.tar.gz
# Source13-md5: e061df1be17c0e7d1827907f27318a8e
-Source14: ejabberd-ezlib-20250711.tar.gz
-# Source14-md5: 79a14e7cb3ead683fe51ee4b8ff03779
-Source15: ejabberd-fast_tls-20250820.tar.gz
-# Source15-md5: 70a92a254691800f8a5db37d9922558e
-Source16: ejabberd-fast_xml-20250711.tar.gz
-# Source16-md5: 23f0acad1dbe175aeda1f9d0b1ed6a73
-Source17: ejabberd-fast_yaml-20250711.tar.gz
-# Source17-md5: eb19d5ccfcb0774f4d715dde2dc86f49
-Source18: ejabberd-idna-20180830.tar.gz
-# Source18-md5: e34174d5c5e2e91611d3249c690f6d2d
-Source19: ejabberd-jiffy-20220223.tar.gz
-# Source19-md5: b98489245dadf5a36ac3408be21d835a
+Source14: ejabberd-ezlib-20260325.tar.gz
+# Source14-md5: 2e6e5eeeacb05876011ef7c8974e03a7
+Source15: ejabberd-fast_tls-20260325.tar.gz
+# Source15-md5: bde8886ecde87a5d4a847f3f8ee0eae4
+Source16: ejabberd-fast_xml-20260413.tar.gz
+# Source16-md5: 6f1e39b4ec3dcf7a88f833ad05de2451
+Source17: ejabberd-fast_yaml-20260325.tar.gz
+# Source17-md5: 98622932e63f398b523ab24dd1017010
+Source18: ejabberd-idna-20260121.tar.gz
+# Source18-md5: 76c837c5b67578cb4f7f7de086d4065b
Source20: ejabberd-jose-20251120.tar.gz
# Source20-md5: 280dafb5cec4aafe7760467e0938106b
-Source21: ejabberd-mqtree-20250711.tar.gz
-# Source21-md5: d1c8cbee0f63ef9e40b7dce3670a6208
-Source22: ejabberd-p1_acme-20260119.tar.gz
-# Source22-md5: 51281dfbfdb38f388b7c848db7b5d615
-Source23: ejabberd-p1_mysql-20260119.tar.gz
-# Source23-md5: dfe8a014cac8aeffb2209108bc8bc95e
+Source21: ejabberd-mqtree-20260325.tar.gz
+# Source21-md5: 15817259e0bb19d9762338e4308e4267
+Source22: ejabberd-p1_acme-20260325.tar.gz
+# Source22-md5: a1dae6f8ac9715a8cd5d2db73cd7a36a
+Source23: ejabberd-p1_mysql-20260216.tar.gz
+# Source23-md5: f5904ad9d69d45c42a2fd9f96ca6b476
Source24: ejabberd-p1_oauth2-20240123.tar.gz
# Source24-md5: 7c18266d7bd911e16948db91c28af651
-Source25: ejabberd-p1_pgsql-20260119.tar.gz
-# Source25-md5: 9f05668d729ba06a95493e8a568feb22
-Source26: ejabberd-p1_utils-20250711.tar.gz
-# Source26-md5: 6845ebdc2aedcbb6c2ed917f15890df7
+Source25: ejabberd-p1_pgsql-20260325.tar.gz
+# Source25-md5: da806d3bd0a9b8572e209e37befb099b
+Source26: ejabberd-p1_utils-20260325.tar.gz
+# Source26-md5: 30449ea7e5f816ebfdc80f9b2c61ec1c
Source27: ejabberd-pkix-20240627.tar.gz
# Source27-md5: d6b72b6881b79f91cd06c05f71384e14
Source28: ejabberd-sqlite3-20240627.tar.gz
# Source28-md5: 16e8a8f35ba615a3be79bf7b143a9ab7
-Source29: ejabberd-stringprep-20250711.tar.gz
-# Source29-md5: 86847d5e38e6fce3f702ca5e1951efe3
-Source30: ejabberd-stun-20250820.tar.gz
-# Source30-md5: a8da79142e4ac13d9d9590d93cc6bd26
-Source31: ejabberd-unicode_util_compat-20170729.tar.gz
-# Source31-md5: 1b348fdf38dba88ebed2f65125ad8590
-Source32: ejabberd-xmpp-20260119.tar.gz
-# Source32-md5: 1e7fc8ad5e5cc0923ac719e382127e3a
-Source33: ejabberd-yconf-20251023.tar.gz
-# Source33-md5: 76ac924f50ef7e20eb55f3c7ae8de119
+Source29: ejabberd-stringprep-20260325.tar.gz
+# Source29-md5: 97b6bc552ab7ae35b604a5325f5493aa
+Source30: ejabberd-stun-20260325.tar.gz
+# Source30-md5: ecb0d86a9562fdacae92d25bb6837245
+Source32: ejabberd-xmpp-20260730.tar.gz
+# Source32-md5: aac5f31852a8599fe455f4acb6a6751d
+Source33: ejabberd-yconf-20260325.tar.gz
+# Source33-md5: be48b71a7ff82595769d019621ce330d
Patch0: %{name}-paths.patch
Patch1: %{name}-config.patch
# Build from vendored deps and local rebar3 plugins without network access.
@@ -78,6 +75,7 @@ Patch2: rebar3-offline-build.patch
# https://github.com/paleg/ejabberd/compare/paleg:19.08...paleg:19.08-mod_logdb.patch
Patch3: %{name}-mod_logdb.patch
Patch4: system-elixir.patch
+Patch5: %{name}-eimp-sonames.patch
URL: https://www.ejabberd.im/
BuildRequires: autoconf
BuildRequires: automake
@@ -88,6 +86,11 @@ BuildRequires: erlang-rebar3-pc
BuildRequires: erlang-rebar3-provider-asn1
BuildRequires: erlang-rebar3-rebar-mix
BuildRequires: expat-devel >= 1.95
+# eimp autodetects these; keep them declared so image support does not depend on the build host
+BuildRequires: gd-devel
+BuildRequires: libjpeg-devel
+BuildRequires: libpng-devel
+BuildRequires: libwebp-devel
BuildRequires: openssl-devel
%if %{with pam}
BuildRequires: pam-devel
@@ -95,6 +98,7 @@ BuildRequires: pam-devel
BuildRequires: git-core
BuildRequires: rpmbuild(macros) >= 2.035
BuildRequires: sqlite3-devel
+BuildRequires: unzip
BuildRequires: yaml-devel
BuildRequires: zlib-devel
Requires(post): /usr/bin/perl
@@ -105,6 +109,11 @@ Requires(post,preun): /sbin/chkconfig
Requires(post,preun,postun): systemd-units >= 38
%{?erlang_requires}
Requires: expat >= 1.95
+# eimp dlopen()s these sonames (see Patch5), rpm cannot generate the deps
+Requires: gd >= 2.1.0
+Requires: libjpeg >= 8
+Requires: libpng >= 1.6
+Requires: libwebp >= 1.0
Requires: elixir
Requires: rc-scripts
Requires: systemd-units >= 38
@@ -130,7 +139,7 @@ Requires: %{name} = %{version}-%{release}
Server-side logging module.
%prep
-%setup -q -a 10 -a 11 -a 12 -a 13 -a 14 -a 15 -a 16 -a 17 -a 18 -a 19 -a 20 -a 21 -a 22 -a 23 -a 24 -a 25 -a 26 -a 27 -a 28 -a 29 -a 30 -a 31 -a 32 -a 33
+%setup -q -a 11 -a 12 -a 13 -a 14 -a 15 -a 16 -a 17 -a 18 -a 20 -a 21 -a 22 -a 23 -a 24 -a 25 -a 26 -a 27 -a 28 -a 29 -a 30 -a 32 -a 33
%patch -P0 -p1
%patch -P1 -p1
%patch -P2 -p1
@@ -138,6 +147,10 @@ Server-side logging module.
%patch -P3 -p1
%endif
%patch -P4 -p1
+%patch -P5 -p1
+
+unzip -q %{SOURCE5}
+mv bootstrap-5.3.8-dist priv/mod_invites/static/bootstrap
%{__sed} -i -e 's, at ELIXIRDIR@,%{_libdir}/elixir,' ejabberdctl.template rebar.config
rm -f mix.lock rebar.lock
@@ -160,9 +173,9 @@ unset GIT_DIR GIT_WORK_TREE
%{__aclocal} -I m4
%{__autoconf}
%configure \
- %{?with_pam --enable-pam} \
--enable-user=jabber \
%{__enable_disable new_sql_schema new-sql-schema} \
+ --enable-bootstrap \
--enable-elixir \
--enable-full-xml \
--enable-odbc \
@@ -375,7 +388,6 @@ fi
%exclude %{_libdir}/ejabberd-%{version}/ebin/mod_logdb*
%endif
%{_libdir}/ejabberd-%{version}
-%{_libdir}/base64url-*
%{_libdir}/cache_tab-*
%{_libdir}/erlydtl-*
%dir %{_libdir}/eimp-*
@@ -388,7 +400,6 @@ fi
%{_libdir}/fast_xml-*
%{_libdir}/fast_yaml-*
%{_libdir}/idna-*
-%{_libdir}/jiffy-*
%{_libdir}/jose-*
%dir %{_libdir}/mqtree-*
%{_libdir}/mqtree-*/ebin
@@ -412,7 +423,6 @@ fi
%attr(755,root,root) %{_libdir}/sqlite3-*/priv/sqlite3_drv.so
%{_libdir}/stringprep-*
%{_libdir}/stun-*
-%{_libdir}/unicode_util_compat-*
%{_libdir}/xmpp-*
%{_libdir}/yconf-*
%dir %attr(770,root,jabber) /var/lib/ejabberd
diff --git a/ejabberd-eimp-sonames.patch b/ejabberd-eimp-sonames.patch
new file mode 100644
index 0000000..34f0602
--- /dev/null
+++ b/ejabberd-eimp-sonames.patch
@@ -0,0 +1,37 @@
+# eimp dlopen()s unversioned library names, which exist only with -devel packages installed.
+--- a/deps/eimp/c_src/eimp.c
++++ b/deps/eimp/c_src/eimp.c
+@@ -516,7 +516,7 @@ int main(int argc, char *argv[])
+ {
+ void *handle;
+ #ifdef HAVE_JPEG
+- handle = dlopen("libjpeg.so", RTLD_LAZY);
++ handle = dlopen("libjpeg.so.8", RTLD_LAZY);
+ if (handle) {
+ ptr_jpeg_CreateDecompress = dlsym(handle, "jpeg_CreateDecompress");
+ ptr_jpeg_std_error = dlsym(handle, "jpeg_std_error");
+@@ -527,21 +527,21 @@ int main(int argc, char *argv[])
+ #endif
+
+ #ifdef HAVE_WEBP
+- handle = dlopen("libwebp.so", RTLD_LAZY);
++ handle = dlopen("libwebp.so.7", RTLD_LAZY);
+ if (handle) {
+ ptr_WebPGetInfo = dlsym(handle, "WebPGetInfo");
+ }
+ #endif
+
+ #ifdef HAVE_PNG
+- handle = dlopen("libpng.so", RTLD_LAZY);
++ handle = dlopen("libpng16.so.16", RTLD_LAZY);
+ if (handle) {
+ ptr_png_sig_cmp = dlsym(handle, "png_sig_cmp");
+ }
+ #endif
+
+ #ifdef HAVE_GD
+- handle = dlopen("libgd.so", RTLD_LAZY);
++ handle = dlopen("libgd.so.3", RTLD_LAZY);
+ if (handle) {
+ ptr_gdImageCreateFromWebpPtr = dlsym(handle, "gdImageCreateFromWebpPtr");
+ ptr_gdImageCreateFromPngPtr = dlsym(handle, "gdImageCreateFromPngPtr");
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/ejabberd.git/commitdiff/104021d8188af33c021350fe6effefc074aeac8f
More information about the pld-cvs-commit
mailing list