maria-developers team mailing list archive
-
maria-developers team
-
Mailing list archive
-
Message #05873
building MariaDB 10/trunk with external SSL generates errors/warnings. Docs are inconsistent. What's the right procedure?
hi,
building
cd /usr/local/src/mariadb
bzr log | head -n 5
------------------------------------------------------------
revno: 3766 [merge]
committer: Alexander Barkov <bar@xxxxxxxxxxx>
branch nick: maria-10.0.ms
timestamp: Wed 2013-07-10 18:46:33 +0400
reading ./BUILD/SETUP.sh
...
120 # SSL library to use.--with-ssl will select our bundled
yaSSL
# implementation of SSL. To use OpenSSL you will need to
specify
# the location of OpenSSL headers and libs on your
system.
# Ex --with-ssl=/usr
<================================= OK, do this
SSL_LIBRARY=--with-ssl
...
configuring @ `cmake`
cd /usr/local/src/mariadb
rm -rf bld
mkdir bld
cd bld
cmake .. \
-DWITH_SSL=/usr/local/ssl \
-DOPENSSL_INCLUDE_DIR=/usr/local/ssl/include \
-DOPENSSL_SSL_LIBRARY=/usr/local/ssl/lib64/libssl.so \
-DOPENSSL_CRYPTO_LIBRARY=/usr/local/ssl/lib64/libcrypto.so
fails, returning,
...
CMake Error at cmake/ssl.cmake:90 (MESSAGE):
Wrong option for WITH_SSL. Valid values are : yes, no,
bundled
Call Stack (most recent call first):
CMakeLists.txt:260 (MYSQL_CHECK_SSL)
...
-- Configuring incomplete, errors occurred!
vi ../CmakeLists.txt
...
# Add bundled or system zlib.
MYSQL_CHECK_ZLIB_WITH_COMPRESS()
# Optionally add bundled yassl/taocrypt or system
openssl.
260 MYSQL_CHECK_SSL()
# Add readline or libedit.
MYSQL_CHECK_READLINE()
checking
vi cmake/ssl.cmake
...
# MYSQL_CHECK_SSL
#
# Provides the following configure options:
# WITH_SSL=[yes|no|bundled]
MACRO (MYSQL_CHECK_SSL)
IF(NOT WITH_SSL)
IF(WIN32)
CHANGE_SSL_SETTINGS("bundled")
ELSE()
CHANGE_SSL_SETTINGS("no")
ENDIF()
ENDIF()
IF(WITH_SSL STREQUAL "bundled")
MYSQL_USE_BUNDLED_SSL()
ELSEIF(WITH_SSL STREQUAL "system" OR WITH_SSL STREQUAL
"yes")
# Check for system library
SET(OPENSSL_FIND_QUIETLY TRUE)
INCLUDE(FindOpenSSL)
FIND_LIBRARY(CRYPTO_LIBRARY crypto)
MARK_AS_ADVANCED(CRYPTO_LIBRARY)
INCLUDE(CheckSymbolExists)
SET(CMAKE_REQUIRED_INCLUDES ${OPENSSL_INCLUDE_DIR})
CHECK_SYMBOL_EXISTS(SHA512_DIGEST_LENGTH
"openssl/sha.h"
HAVE_SHA512_DIGEST_LENGTH)
SET(CMAKE_REQUIRED_INCLUDES)
IF(OPENSSL_FOUND AND CRYPTO_LIBRARY AND
HAVE_SHA512_DIGEST_LENGTH)
SET(SSL_SOURCES "")
SET(SSL_LIBRARIES ${OPENSSL_LIBRARIES}
${CRYPTO_LIBRARY})
SET(SSL_INCLUDE_DIRS ${OPENSSL_INCLUDE_DIR})
SET(SSL_INTERNAL_INCLUDE_DIRS "")
SET(SSL_DEFINES "-DHAVE_OPENSSL")
CHANGE_SSL_SETTINGS("system")
ELSE()
IF(WITH_SSL STREQUAL "system")
MESSAGE(SEND_ERROR "Cannot find appropriate
system libraries for SSL. Use WITH_SSL=bundled
to enable SSL su
ENDIF()
MYSQL_USE_BUNDLED_SSL()
ENDIF()
ELSEIF(NOT WITH_SSL STREQUAL "no")
MESSAGE(SEND_ERROR "Wrong option for WITH_SSL. Valid
values are : yes, no, bundled")
ENDIF()
ENDMACRO()
there's no accommodation for "--with-ssl=/path/to/ssl/install".
If I instead
cmake .. \
-DWITH_SSL=yes \
-DOPENSSL_INCLUDE_DIR=/usr/local/ssl/include \
-DOPENSSL_SSL_LIBRARY=/usr/local/ssl/lib64/libssl.so \
-DOPENSSL_CRYPTO_LIBRARY=/usr/local/ssl/lib64/libcrypto.so
it returns,
...
-- Running cmake version 2.8.11.1
-- MariaDB 10.0.3
-- Packaging as: mariadb-10.0.3-Linux-x86_64
-- Found OpenSSL:
/usr/local/ssl/lib64/libssl.so;/usr/local/ssl/lib64/libcrypto.so
(found version "1.0.1e")
...
-- Configuring done
then a bunch of these messages:
...
CMake Warning at cmake/plugin.cmake:184 (ADD_LIBRARY):
Cannot generate a safe runtime search path for target feedback
because
files in some directories may conflict with libraries in
implicit
directories:
runtime library [libcrypto.so.1.0.0] in /usr/lib64 may be
hidden by files in:
/usr/local/ssl/lib64
Some of these libraries may not be found correctly.
Call Stack (most recent call first):
plugin/feedback/CMakeLists.txt:20 (MYSQL_ADD_PLUGIN)
CMake Warning at cmake/libutils.cmake:259 (ADD_LIBRARY):
Cannot generate a safe runtime search path for target libmysql
because
files in some directories may conflict with libraries in
implicit
directories:
runtime library [libcrypto.so.1.0.0] in /usr/lib64 may be
hidden by files in:
/usr/local/ssl/lib64
Some of these libraries may not be found correctly.
Call Stack (most recent call first):
libmysql/CMakeLists.txt:374 (MERGE_LIBRARIES)
CMake Warning at client/CMakeLists.txt:78 (ADD_EXECUTABLE):
Cannot generate a safe runtime search path for target
async_example because
files in some directories may conflict with libraries in
implicit
directories:
runtime library [libcrypto.so.1.0.0] in /usr/lib64 may be
hidden by files in:
/usr/local/ssl/lib64
Some of these libraries may not be found correctly.
...
What's the right method to find/use external SSL libs/headers in a
MariaDB build without errors or warnings?
--darx
Follow ups