Work around for 'version `OPENSSL_1.0.0' not found'
When linking against the prebuilt libcrypto.so.1.0.0 and libssl.so.1.0.0 there is a problem running the viewer in gdb (on debian) because gdb links with libpython2.7.so which needs a newer openssl on my system (OPENSSL_1.0.1). The patch allows to work around this problem by defining -DUSE_SYSTEM_OPENSSL:BOOL=ON when configuring, which then causes the viewer to be compiled against the system libs. (If you already installed the prebuilt, you have to manually remove them with script/install.py --uninstall openSSL). The prebuilt libcurl expects a function SSLv2_client_method however, which is not present in my openssl system libs. A stub was added which is possible because the function in question isn't used anyway.
This commit is contained in:
@@ -4,9 +4,9 @@ include(Prebuilt)
|
||||
set(OpenSSL_FIND_QUIETLY ON)
|
||||
set(OpenSSL_FIND_REQUIRED ON)
|
||||
|
||||
if (STANDALONE)
|
||||
if (STANDALONE OR USE_SYSTEM_OPENSSL)
|
||||
include(FindOpenSSL)
|
||||
else (STANDALONE)
|
||||
else (STANDALONE OR USE_SYSTEM_OPENSSL)
|
||||
use_prebuilt_binary(openSSL)
|
||||
if (WINDOWS)
|
||||
set(OPENSSL_LIBRARIES ssleay32 libeay32)
|
||||
@@ -14,7 +14,7 @@ else (STANDALONE)
|
||||
set(OPENSSL_LIBRARIES ssl)
|
||||
endif (WINDOWS)
|
||||
set(OPENSSL_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include)
|
||||
endif (STANDALONE)
|
||||
endif (STANDALONE OR USE_SYSTEM_OPENSSL)
|
||||
|
||||
if (LINUX OR DARWIN)
|
||||
set(CRYPTO_LIBRARIES crypto)
|
||||
|
||||
@@ -1014,6 +1014,8 @@ CURLcode CurlEasyRequest::curlCtxCallback(CURL* curl, void* sslctx, void* parm)
|
||||
options |= SSL_OP_NO_TLSv1_1;
|
||||
}
|
||||
#else
|
||||
// This is expected when you compile against the headers of a version < 1.0.1 and then link at runtime with version >= 1.0.1.
|
||||
// Don't do that.
|
||||
llassert_always(!need_renegotiation_hack);
|
||||
#endif
|
||||
SSL_CTX_set_options(ctx, options);
|
||||
@@ -1417,3 +1419,16 @@ CurlMultiHandle::~CurlMultiHandle()
|
||||
}
|
||||
|
||||
} // namespace AICurlPrivate
|
||||
|
||||
extern "C" {
|
||||
|
||||
// Keep linker happy.
|
||||
SSL_METHOD *SSLv2_client_method(void)
|
||||
{
|
||||
// Never used.
|
||||
llassert_always(false);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user