Date: Thu, 1 Mar 2012 18:55:01 -0600 From: "RandomUser" <rannumgen@globaleyes.net> To: "FreeBSD gnats submit" <FreeBSD-gnats-submit@FreeBSD.org> Cc: rannumgen@globaleyes.net Subject: ports/165604: databases/mysql55-server cmake patches to properly use OpenSSL Message-ID: <1330649701.11562@freebsd1.localnet> Resent-Message-ID: <201203020120.q221K8Hb007494@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>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:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1330649701.11562>