ports/165604: databases/mysql55-server cmake patches to properly use OpenSSL
RandomUser
rannumgen at globaleyes.net
Fri Mar 2 01:20:08 UTC 2012
>Number: 165604
>Category: ports
>Synopsis: databases/mysql55-server cmake patches to properly use OpenSSL
>Confidential: no
>Severity: non-critical
>Priority: high
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Fri Mar 02 01:20:08 UTC 2012
>Closed-Date:
>Last-Modified:
>Originator: RandomUser
>Release: 7.4-STABLE
>Organization:
>Environment:
7.4-STABLE FreeBSD 7.4-STABLE #2: Tue Dec 20 10:55:34 CST 2011
openssl-1.0.0_9 (userland)
openSSL 0.9.8q (base)
>Description:
Without several patches to MySQL cmake files/environment, none of the OpenSSL libraries are used (base or userland). Even with the "-DWITH_SSL" flag, the bundled "yassl" doesn't get used. Hence - MySQL55 does NOT get compiled with ANY SSL capability.
The cmake patches are not OS specific (had to use them in Solaris 10 as well).
NOTE: a new Makefile variable "WITH_USR_LOCAL" was used to distinguish between "base" OpenSSL and "userland" OpenSSL. There probably is a better method for achieving this distinction.
P.S. cmake patch was derived from an Internet post about MySQL + CMAKE + OpenSSL compile problems, but I have lost the reference.
Make output validation of cmake infernal process for finding (base) OpenSSL:
-- Found OpenSSL: /usr/lib/libssl.so;/usr/lib/libcrypto.so
-- OPENSSL_INCLUDE_DIR = /usr/include
-- OPENSSL_LIBRARIES = /usr/lib/libssl.so;/usr/lib/libcrypto.so
-- Looking for SHA512_DIGEST_LENGTH
-- Looking for SHA512_DIGEST_LENGTH - found
Results are similar for (userland) OpenSSL (with "/usr/local/...").
LDD vaLidation of OpenSSL inclusion:
ldd `which mysql`
/usr/local/bin/mysql:
libreadline.so.7 => /lib/libreadline.so.7 (0x282c6000)
libz.so.4 => /lib/libz.so.4 (0x282f8000)
libssl.so.7 => /usr/local/lib/libssl.so.7 (0x2830a000)
libcrypto.so.7 => /usr/local/lib/libcrypto.so.7 (0x28358000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x284bb000)
libm.so.5 => /lib/libm.so.5 (0x285af000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x285c5000)
libthr.so.3 => /lib/libthr.so.3 (0x285d0000)
libc.so.7 => /lib/libc.so.7 (0x285e5000)
libncurses.so.7 => /lib/libncurses.so.7 (0x286eb000)
ldd /usr/local/libexec/mysqld
/usr/local/libexec/mysqld:
libz.so.4 => /lib/libz.so.4 (0x287e0000)
libwrap.so.5 => /usr/lib/libwrap.so.5 (0x287f2000)
libcrypt.so.4 => /lib/libcrypt.so.4 (0x287f9000)
libssl.so.7 => /usr/local/lib/libssl.so.7 (0x28812000)
libcrypto.so.7 => /usr/local/lib/libcrypto.so.7 (0x28860000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x289c3000)
libm.so.5 => /lib/libm.so.5 (0x28ab7000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x28acd000)
libthr.so.3 => /lib/libthr.so.3 (0x28ad8000)
libc.so.7 => /lib/libc.so.7 (0x28aed000
>How-To-Repeat:
>Fix:
Makefile.diffs
================
--- Makefile.orig 2012-02-29 14:14:17.000000000 -0600
+++ Makefile 2012-02-29 14:41:14.000000000 -0600
@@ -48,7 +48,12 @@
.include <bsd.port.options.mk>
.if !defined(WITHOUT_OPENSSL)
-CMAKE_ARGS+= -DWITH_SSL=bundled
+CMAKE_ARGS+= -DWITH_SSL=system
+.if defined(WITH_USR_LOCAL_SSL)
+CMAKE_ARGS+= -DCMAKE_INCLUDE_PATH=/usr/local/include \
+ -DCMAKE_LIBRARY_PATH=/usr/local/lib
+MAKE_ENV+= PKG_CONFIG_PATH=/usr/local/libdata/pkgconfig
+.endif
.endif
.if defined(WITH_FASTMTX)
CMAKE_ARGS+= -DWITH_FAST_MUTEXES=1
======================
files/patch-cmake_ssl.cmake
======================
--- cmake/ssl.cmake.orig 2011-12-16 13:52:07.000000000 -0600
+++ cmake/ssl.cmake 2012-02-29 11:36:24.000000000 -0600
@@ -64,11 +64,14 @@
MYSQL_USE_BUNDLED_SSL()
ELSEIF(WITH_SSL STREQUAL "system" OR WITH_SSL STREQUAL "yes")
# Check for system library
- SET(OPENSSL_FIND_QUIETLY TRUE)
+# SET(OPENSSL_FIND_QUIETLY TRUE)
INCLUDE(FindOpenSSL)
+ MESSAGE(STATUS "OPENSSL_INCLUDE_DIR = ${OPENSSL_INCLUDE_DIR}")
+ MESSAGE(STATUS "OPENSSL_LIBRARIES = ${OPENSSL_LIBRARIES}")
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)
IF(OPENSSL_FOUND AND CRYPTO_LIBRARY AND HAVE_SHA512_DIGEST_LENGTH)
========================
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list