MariaDB un-buildable on linux64: fails @ "error: ‘ERR_remove_state’ was not declared in this scope" when linking against OpenSSL 1.0.2e

Description

Building mariaDB 10.1.9 on linux/64,

lsb_release -rd
Description: openSUSE Leap 42.1 (x86_64)
Release: 42.1
gcc --version
gcc (SUSE Linux) 5.3.1 20151207 [gcc-5-branch revision 231355]

git log | head
commit 370a2cbe96e026fdb8966d8e58e7c93f75597cb8
Author: Nirbhay Choubey <nirbhay@mariadb.com>
Date: Fri Nov 20 19:49:16 2015 -0500

Fix syntax error in wsrep_sst_common.sh.

commit 2fc3dc393d396647a220b286780f31d244ac2c53
Merge: e52c753 1e156e1
Author: Sergei Golubchik <serg@mariadb.org>
Date: Fri Nov 20 09:31:13 2015 +0100

linking to local build of openssl 1.0.2e libs,

openssl version
OpenSSL 1.0.2e 3 Dec 2015
tree -L 1 /usr/local/ssl
/usr/local/ssl
├── bin
├── certs
├── include
├── lib64
├── man
├── misc
├── openssl.cnf
└── private

The build FAILs

echo $SSL_LDFLAGS
-L/usr/local/ssl/lib64 -Wl,-rpath,/usr/local/ssl/lib64 -lssl -lcrypto
cmake .. --debug-output \
...
-DWITH_SSL=/usr/local/ssl \
-DOPENSSL_ROOT_DIR=/usr/local/ssl \
-DOPENSSL_INCLUDE_DIR=/usr/local/ssl/include \
-DOPENSSL_LIBRARIES=/usr/local/ssl/lib64/libssl.so \
-DCRYPTO_LIBRARY=/usr/local/ssl/lib64/libcrypto.so \
...
make -j4 VERBOSE=1
...
[ 18%] Linking CXX executable my_safe_process
cd /usr/local/src/mariadb/bld/mysql-test/lib/My/SafeProcess && /usr/bin/cmake -E cmake_link_script CMakeFiles/my_safe_process.dir/link.txt --verbose=1
/usr/bin/g++-5 -fno-delete-null-pointer-checks -D_FORTIFY_SOURCE=2 -fmessage-length=0 -fstack-protector -march=x86-64 -mtune=nocona -I/usr/local/include -pie -fPIC -Wl,-z,relro,-z,now -fstack-protector --param=ssp-buffer-size=4 -DWITH_INNODB_DISALLOW_WRITES -fno-exceptions -fno-rtti -O3 -DNDEBUG -D_FORTIFY_SOURCE=2 -DDBUG_OFF -DMY_PTHREAD_FASTMUTEX=1 -L/usr/local/lib64 -Wl,-rpath,/usr/local/lib64 -lpcre -lpcrecpp CMakeFiles/my_safe_process.dir/safe_process.cc.o -o my_safe_process -lpthread
[ 18%] Linking C static library libwsrep.a
cd /usr/local/src/mariadb/bld/wsrep && /usr/bin/cmake -P CMakeFiles/wsrep.dir/cmake_clean_target.cmake
cd /usr/local/src/mariadb/bld/wsrep && /usr/bin/cmake -E cmake_link_script CMakeFiles/wsrep.dir/link.txt --verbose=1
/usr/bin/ar qc libwsrep.a CMakeFiles/wsrep.dir/wsrep_gtid.c.o CMakeFiles/wsrep.dir/wsrep_uuid.c.o CMakeFiles/wsrep.dir/wsrep_loader.c.o CMakeFiles/wsrep.dir/wsrep_dummy.c.o
/usr/bin/ranlib libwsrep.a
make[2]: Leaving directory '/usr/local/src/mariadb/bld'
[ 18%] Built target wsrep
/usr/local/src/mariadb/mysys_ssl/my_crypt.cc: In destructor ‘virtual MyCTX::~MyCTX()’:
/usr/local/src/mariadb/mysys_ssl/my_crypt.cc:37:70: error: ‘ERR_remove_state’ was not declared in this scope
virtual ~MyCTX() { EVP_CIPHER_CTX_cleanup(&ctx); ERR_remove_state(0); }
^
mysys_ssl/CMakeFiles/mysys_ssl.dir/build.make:158: recipe for target 'mysys_ssl/CMakeFiles/mysys_ssl.dir/my_crypt.cc.o' failed
make[2]: *** [mysys_ssl/CMakeFiles/mysys_ssl.dir/my_crypt.cc.o] Error 1
make[2]: Leaving directory '/usr/local/src/mariadb/bld'
CMakeFiles/Makefile2:4566: recipe for target 'mysys_ssl/CMakeFiles/mysys_ssl.dir/all' failed
make[1]: *** [mysys_ssl/CMakeFiles/mysys_ssl.dir/all] Error 2
make[2]: Leaving directory '/usr/local/src/mariadb/bld'
[ 18%] Built target my_safe_process
make[1]: Leaving directory '/usr/local/src/mariadb/bld'
Makefile:149: recipe for target 'all' failed
make: *** [all] Error 2

Per openSSL docs, ERR_remove_state() appears to be deprecated

https://www.openssl.org/docs/manmaster/crypto/ERR_remove_state.html

ERR_remove_state() was deprecated in OpenSSL 1.0.0 when ERR_remove_thread_state() was introduced and thread IDs were introduced to identify threads instead of 'unsigned long'.

Environment

MariaDB 10.1.9 on linux/64 + OpenSSL 1.0.2e

Assignee

Sergei Golubchik

Reporter

pgnd

Labels

Components

Fix versions

Affects versions

Priority

Critical
Configure