using openssl from ports with database/mysql56-server

Curtis Villamizar curtis at ipv6.occnc.com
Tue Sep 15 05:49:05 UTC 2015


Alex,

There are advantages to using openssl with mysql (such as newer crypto
algorithms which perform better relative to strength) rather than the
default yassl.

To do so I made a patch to the Makefile in mysql56-server and added a
patch file as files/patch-cmake_ssl.cmake to fix a bug in the file
cmake/ssl.cmake.

The Makefile changes allows four options, SSL_NONE, SSL_BUILTIN,
SSL_OPENSSL_BASE, and SSL_OPENSSL_PORT.  SSL_OPENSSL_BASE does not
work at the moment so maybe it could be left out for now or included
with a BROKEN statement added until it works.  SSL_OPENSSL_PORT works
fine.  The default is SSL_BUILTIN, which keeps things as they were,
using the builtin yassl instead of openssl.

btw- Maybe change the literal /usr/local to ${LOCALBASE} in the first
file.  The change to ssl.cmake should be passed upstream as a mysql
bug.  The bug is ssl.cmake always picks /usr/* rather than
/usr/local/* even if you specify -DWITH_SSL=/usr/local if openssl is
installed in both placed (FreeBSD base and ports both installed).

There are two files below separate with lines that start with "-----"
(at least 5 dashes) so this should email fine and split fine.  There
is one long line in the first patch file that might suffer a hostile
line break by some RFC822 pedantic mail agent.

Would you please as the maintainer of database/mysql56-server (or
someone) consider taking this change.  TIA.

Curtis


---------- patch for database/mysql56-server/Makefile ----------
--- Makefile.orig	2015-09-14 02:12:36.000000000 -0400
+++ Makefile	2015-09-14 23:26:30.361375000 -0400
@@ -14,6 +14,18 @@
 SLAVEDIRS=	databases/mysql56-client
 USES=		cmake shebangfix
 
+NO_OPTIONS_SORT=yes
+
+OPTIONS_SINGLE=			SSL_TYPE
+OPTIONS_SINGLE_SSL_TYPE=	SSL_NONE SSL_BUILTIN \
+				SSL_OPENSSL_BASE SSL_OPENSSL_PORT
+OPTIONS_DEFAULT=		SSL_BUILTIN
+
+SSL_NONE_DESC=			No SSL (not recommended)
+SSL_BUILTIN_DESC=		Built in SSL (uses yassl)
+SSL_OPENSSL_BASE_DESC=		OpenSSL from FreeBSD base
+SSL_OPENSSL_PORT_DESC=		OpenSSL from ports
+
 CMAKE_ARGS+=	-DINSTALL_DOCDIR="share/doc/mysql" \
 		-DINSTALL_DOCREADMEDIR="share/doc/mysql" \
 		-DINSTALL_INCLUDEDIR="include/mysql" \
@@ -34,6 +46,23 @@
 
 SHEBANG_FILES=	scripts/*.pl* scripts/*.sh
 
+.include <bsd.port.options.mk>
+
+# as of 5.6 the cmake default is "bundled"
+.if ${PORT_OPTIONS:MSSL_NONE}
+CMAKE_ARGS+=	-DWITH_SSL=none
+.endif
+.if ${PORT_OPTIONS:MSSL_OPENSSL_BASE}
+CMAKE_ARGS+=	-DWITH_SSL=/usr
+WITH_OPENSSL_BASE=	yes
+USE_OPENSSL=		yes
+.endif
+.if ${PORT_OPTIONS:MSSL_OPENSSL_PORT}
+CMAKE_ARGS+=	-DWITH_SSL=${LOCALBASE}
+WITH_OPENSSL_PORT=	yes
+USE_OPENSSL=		yes
+.endif
+
 .ifdef USE_MYSQL
 .error You have `USE_MYSQL' variable defined either in environment or in make(1) arguments. Please undefine and try again.
 .endif
----- database/mysql56-server/files/patch-cmake_ssl.cmake -----
--- cmake/ssl.cmake.orig	2015-07-14 17:34:24.000000000 -0400
+++ cmake/ssl.cmake	2015-09-15 01:17:07.433582000 -0400
@@ -123,15 +123,24 @@
     # First search in WITH_SSL_PATH.
     FIND_PATH(OPENSSL_ROOT_DIR
       NAMES include/openssl/ssl.h
-      NO_CMAKE_PATH
-      NO_CMAKE_ENVIRONMENT_PATH
       HINTS ${WITH_SSL_PATH}
+      NO_CMAKE_PATH NO_CMAKE_ENVIRONMENT_PATH
+      NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_SYSTEM_PATH
     )
     # Then search in standard places (if not found above).
     FIND_PATH(OPENSSL_ROOT_DIR
       NAMES include/openssl/ssl.h
     )
 
+    MESSAGE(STATUS "WITH_SSL_PATH = ${WITH_SSL_PATH}")
+    MESSAGE(STATUS "OPENSSL_ROOT_DIR = ${OPENSSL_ROOT_DIR}")
+
+    FIND_PATH(OPENSSL_INCLUDE_DIR
+      NAMES openssl/ssl.h
+      HINTS ${OPENSSL_ROOT_DIR}/include
+      NO_CMAKE_PATH NO_CMAKE_ENVIRONMENT_PATH
+      NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_SYSTEM_PATH
+    )
     FIND_PATH(OPENSSL_INCLUDE_DIR
       NAMES openssl/ssl.h
       HINTS ${OPENSSL_ROOT_DIR}/include
@@ -153,6 +162,18 @@
     ENDIF()
     FIND_LIBRARY(OPENSSL_LIBRARY
                  NAMES ssl ssleay32 ssleay32MD
+                 HINTS ${OPENSSL_ROOT_DIR}/lib
+		 NO_CMAKE_PATH NO_CMAKE_ENVIRONMENT_PATH
+      		 NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_SYSTEM_PATH
+		 )
+    FIND_LIBRARY(CRYPTO_LIBRARY
+                 NAMES crypto libeay32
+                 HINTS ${OPENSSL_ROOT_DIR}/lib
+      		 NO_CMAKE_PATH NO_CMAKE_ENVIRONMENT_PATH
+      		 NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_SYSTEM_PATH
+		 )
+    FIND_LIBRARY(OPENSSL_LIBRARY
+                 NAMES ssl ssleay32 ssleay32MD
                  HINTS ${OPENSSL_ROOT_DIR}/lib)
     FIND_LIBRARY(CRYPTO_LIBRARY
                  NAMES crypto libeay32
------------------------- END -------------------------


More information about the freebsd-ports mailing list