erlang: fix compilation without deprecated OpenSSL APIs 13031/head
authorRosen Penev <rosenp@gmail.com>
Sun, 2 Aug 2020 22:06:05 +0000 (15:06 -0700)
committerRosen Penev <rosenp@gmail.com>
Wed, 5 Aug 2020 02:15:55 +0000 (19:15 -0700)
Signed-off-by: Rosen Penev <rosenp@gmail.com>
lang/erlang/Makefile
lang/erlang/patches/010-openssl-deprecated.patch [new file with mode: 0644]

index 079946c5569af0797c50f139da2f95c8de48fc60..c3876292a734d0b83c31b0ca70043b0db29a566c 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=erlang
 PKG_VERSION:=23.0
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE:=otp_src_$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:= http://www.erlang.org/download/
diff --git a/lang/erlang/patches/010-openssl-deprecated.patch b/lang/erlang/patches/010-openssl-deprecated.patch
new file mode 100644 (file)
index 0000000..91e76ab
--- /dev/null
@@ -0,0 +1,66 @@
+--- a/lib/crypto/c_src/crypto_callback.c
++++ b/lib/crypto/c_src/crypto_callback.c
+@@ -112,6 +112,7 @@ static ErlNifRWLock** lock_vec = NULL; /* Static locks used by openssl */
+ #include <openssl/crypto.h>
++#if OPENSSL_VERSION_NUMBER < PACKED_OPENSSL_VERSION_PLAIN(1,1,0)
+ static INLINE void locking(int mode, ErlNifRWLock* lock)
+ {
+     switch (mode) {
+@@ -132,7 +133,6 @@ static INLINE void locking(int mode, ErlNifRWLock* lock)
+     }
+ }
+-#if OPENSSL_VERSION_NUMBER < PACKED_OPENSSL_VERSION_PLAIN(1,1,0)
+ static void locking_function(int mode, int n, const char *file, int line)
+ {
+     locking(mode, lock_vec[n]);
+--- a/lib/crypto/c_src/engine.c
++++ b/lib/crypto/c_src/engine.c
+@@ -244,7 +244,7 @@ ERL_NIF_TERM engine_load_dynamic_nif(ErlNifEnv* env, int argc, const ERL_NIF_TER
+ #ifdef HAS_ENGINE_SUPPORT
+     ASSERT(argc == 0);
+-    ENGINE_load_dynamic();
++    ENGINE_load_builtin_engines();
+     return atom_ok;
+ #else
+     return atom_notsup;
+--- a/lib/crypto/c_src/info.c
++++ b/lib/crypto/c_src/info.c
+@@ -20,6 +20,11 @@
+ #include "info.h"
++#if OPENSSL_VERSION_NUMBER < PACKED_OPENSSL_VERSION_PLAIN(1,1,0)
++#define OPENSSL_VERSION       SSLEAY_VERSION
++#define OpenSSL_version       SSLeay_version
++#endif
++
+ #ifdef HAVE_DYNAMIC_CRYPTO_LIB
+ # if defined(DEBUG)
+@@ -77,7 +82,7 @@ ERL_NIF_TERM info_lib(ErlNifEnv *env, int argc, const ERL_NIF_TERM argv[])
+     ASSERT(argc == 0);
+     name_sz = strlen(libname);
+-    ver = SSLeay_version(SSLEAY_VERSION);
++    ver = OpenSSL_version(OPENSSL_VERSION);
+     ver_sz = strlen(ver);
+     ver_num = OPENSSL_VERSION_NUMBER;
+--- a/lib/crypto/c_src/otp_test_engine.c
++++ b/lib/crypto/c_src/otp_test_engine.c
+@@ -100,9 +100,11 @@ static int test_init(ENGINE *e) {
+         goto err;
+ #endif /* if defined(FAKE_RSA_IMPL) */
++#if OPENSSL_VERSION_NUMBER < PACKED_OPENSSL_VERSION_PLAIN(1,1,0)
+     /* Load all digest and cipher algorithms. Needed for password protected private keys */
+     OpenSSL_add_all_ciphers();
+     OpenSSL_add_all_digests();
++#endif
+     return 111;