git: 14eb5bacd14c - 2021Q4 - net-im/ejabberd: Fix for lang/erlang update to 24.x

From: Ashish SHUKLA <ashish_at_FreeBSD.org>
Date: Tue, 12 Oct 2021 12:26:31 UTC
The branch 2021Q4 has been updated by ashish:

URL: https://cgit.FreeBSD.org/ports/commit/?id=14eb5bacd14c8cb9a0b820802a881876e857f584

commit 14eb5bacd14c8cb9a0b820802a881876e857f584
Author:     Ashish SHUKLA <ashish@FreeBSD.org>
AuthorDate: 2021-10-12 12:18:08 +0000
Commit:     Ashish SHUKLA <ashish@FreeBSD.org>
CommitDate: 2021-10-12 12:24:56 +0000

    net-im/ejabberd: Fix for lang/erlang update to 24.x
    
    While here, also add the SQL files for other RDBMS supported
    by ejabberd
    
    PR:             259067
    Reported by:    Marko Cupańá <marko dot cupac at mimar dot rs>
    MFH:            2021Q4
    
    (cherry picked from commit 94973bbbe379378b11aa53d9a43e4cb807c4b466)
---
 net-im/ejabberd/Makefile                           |  2 +
 .../files/patch-deps_jose_src_jose__server.erl     | 46 ++++++++++++++++++++++
 net-im/ejabberd/pkg-plist                          |  6 +++
 3 files changed, 54 insertions(+)

diff --git a/net-im/ejabberd/Makefile b/net-im/ejabberd/Makefile
index 67e6d60f2baa..7038251c355d 100644
--- a/net-im/ejabberd/Makefile
+++ b/net-im/ejabberd/Makefile
@@ -1,5 +1,6 @@
 PORTNAME=	ejabberd
 PORTVERSION=	21.07
+PORTREVISION=	1
 CATEGORIES=	net-im
 
 MAINTAINER=	ashish@FreeBSD.org
@@ -194,5 +195,6 @@ post-install:
 		${STAGEDIR}${DATADIR}
 	@${CHMOD} +x ${STAGEDIR}${PREFIX}/${EJABBERD_LIBDIR}/${PORTNAME}-${PORTVERSION}/lib/eimp-${EIMP_VER}/priv/bin/eimp
 	@${STRIP_CMD} ${STAGEDIR}${PREFIX}/${EJABBERD_LIBDIR}/${PORTNAME}-${PORTVERSION}/lib/eimp-${EIMP_VER}/priv/bin/eimp
+	@cd ${WRKSRC}/sql && ${COPYTREE_SHARE} . ${STAGEDIR}${PREFIX}/${EJABBERD_LIBDIR}/${PORTNAME}-${PORTVERSION}/priv/sql
 
 .include <bsd.port.post.mk>
diff --git a/net-im/ejabberd/files/patch-deps_jose_src_jose__server.erl b/net-im/ejabberd/files/patch-deps_jose_src_jose__server.erl
new file mode 100644
index 000000000000..be50a38e7244
--- /dev/null
+++ b/net-im/ejabberd/files/patch-deps_jose_src_jose__server.erl
@@ -0,0 +1,46 @@
+Source: https://github.com/potatosalad/erlang-jose/commit/833f81666a0f9fc31e7a3c2403d72e168a4a3209.patch
+
+--- deps/jose/src/jose_server.erl.orig	2018-12-31 15:47:40 UTC
++++ deps/jose/src/jose_server.erl
+@@ -162,9 +162,7 @@ support_check() ->
+ 
+ %% @private
+ check_ec_key_mode(_Fallback, Entries) ->
+-	ECPEMEntry = {
+-		'ECPrivateKey',
+-		<<
++	PEMBin = <<
+ 			48,119,2,1,1,4,32,104,152,88,12,19,82,251,156,171,31,222,207,
+ 			0,76,115,88,210,229,36,106,137,192,81,153,154,254,226,38,247,
+ 			70,226,157,160,10,6,8,42,134,72,206,61,3,1,7,161,68,3,66,0,4,
+@@ -173,13 +171,23 @@ check_ec_key_mode(_Fallback, Entries) ->
+ 			36,225,0,90,21,186,235,132,152,229,13,189,196,121,64,84,64,
+ 			229,173,12,24,23,127,175,67,247,29,139,91
+ 		>>,
+-		not_encrypted
+-	},
+-	case public_key:pem_entry_decode(ECPEMEntry) of
+-		#'ECPrivateKey'{ privateKey = PrivateKey, publicKey = PublicKey } when is_list(PrivateKey) andalso is_tuple(PublicKey) ->
+-			[{ec_key_mode, list} | Entries];
+-		#'ECPrivateKey'{ privateKey = PrivateKey, publicKey = PublicKey } when is_binary(PrivateKey) andalso is_binary(PublicKey) ->
+-			[{ec_key_mode, binary} | Entries]
++	PEMEntry = {'ECPrivateKey', PEMBin, not_encrypted},
++	%% Erlang 24 changes 'ECPrivateKey' record in a way that makes record matching fail
++	%% when this module is compiled on Erlang 23 (or earlier) but runs on 24.
++	%% So we destructure tuples, as ugly as it may be.
++	%%
++	%% See erlang-jose#113 for details.
++	PrivateKey = case list_to_integer(erlang:system_info(otp_release)) >= 24 of
++		true ->
++			{'ECPrivateKey', _Version, PrivKey0, _Params, _PubKey0, _Attributes} = public_key:pem_entry_decode(PEMEntry),
++			PrivKey0;
++		false ->
++			{'ECPrivateKey', _Version, PrivKey0, _Params, _PubKey0} = public_key:pem_entry_decode(PEMEntry),
++			PrivKey0
++	end,
++	case is_binary(PrivateKey) of
++		true -> [{ec_key_mode, binary} | Entries];
++		_    -> [{ec_key_mode, list} | Entries]
+ 	end.
+ 
+ %% @private
diff --git a/net-im/ejabberd/pkg-plist b/net-im/ejabberd/pkg-plist
index 14f8d2388840..dcee360dc44b 100644
--- a/net-im/ejabberd/pkg-plist
+++ b/net-im/ejabberd/pkg-plist
@@ -866,6 +866,12 @@
 %%EJABBERD_LIBDIR%%/%%PORTNAME%%-%%PORTVERSION%%/priv/msgs/zh.msg
 %%EJABBERD_LIBDIR%%/%%PORTNAME%%-%%PORTVERSION%%/priv/sql/lite.sql
 %%EJABBERD_LIBDIR%%/%%PORTNAME%%-%%PORTVERSION%%/priv/sql/lite.new.sql
+%%EJABBERD_LIBDIR%%/%%PORTNAME%%-%%PORTVERSION%%/priv/sql/mssql.sql
+%%EJABBERD_LIBDIR%%/%%PORTNAME%%-%%PORTVERSION%%/priv/sql/mysql.new.sql
+%%EJABBERD_LIBDIR%%/%%PORTNAME%%-%%PORTVERSION%%/priv/sql/mysql.old-to-new.sql
+%%EJABBERD_LIBDIR%%/%%PORTNAME%%-%%PORTVERSION%%/priv/sql/mysql.sql
+%%EJABBERD_LIBDIR%%/%%PORTNAME%%-%%PORTVERSION%%/priv/sql/pg.new.sql
+%%EJABBERD_LIBDIR%%/%%PORTNAME%%-%%PORTVERSION%%/priv/sql/pg.sql
 sbin/%%PORTNAME%%ctl
 %%DATADIR%%/captcha.sh
 %%PORTDOCS%%%%DOCSDIR%%/COPYING