svn commit: r432458 - in head/databases: mysql56-client mysql56-client/files mysql56-server mysql56-server/files

Bernard Spil brnrd at FreeBSD.org
Mon Jan 30 09:13:47 UTC 2017


On 2017-01-29 20:50, John Marino wrote:
> On 1/25/2017 13:07, Bernard Spil wrote:
>> Author: brnrd
>> Date: Wed Jan 25 19:07:08 2017
>> New Revision: 432458
>> URL: https://svnweb.freebsd.org/changeset/ports/432458
>> 
>> Log:
>>   databases/mysql56-server: Fix OpenSSL linking
>> 
>>     - Force dynamic linking with OpenSSL
>> 
>>   MFH:		2017Q1
>> 
>> Added:
>>   head/databases/mysql56-client/files/patch-cmake_ssl.cmake   
>> (contents, props changed)
>>   head/databases/mysql56-server/files/patch-cmake_ssl.cmake   
>> (contents, props changed)
>> Modified:
>>   head/databases/mysql56-client/Makefile
>>   head/databases/mysql56-server/Makefile
>> 
>> Modified: head/databases/mysql56-client/Makefile
>> ==============================================================================
>> --- head/databases/mysql56-client/Makefile	Wed Jan 25 18:59:23 
>> 2017	(r432457)
>> +++ head/databases/mysql56-client/Makefile	Wed Jan 25 19:07:08 
>> 2017	(r432458)
>> @@ -2,7 +2,7 @@
>>  # $FreeBSD$
>> 
>>  PORTNAME=	mysql
>> -PORTREVISION?=	0
>> +PORTREVISION?=	1
>>  PKGNAMESUFFIX=	56-client
>> 
>>  COMMENT=	Multithreaded SQL database (client)
>> 
>> Added: head/databases/mysql56-client/files/patch-cmake_ssl.cmake
>> ==============================================================================
>> --- /dev/null	00:00:00 1970	(empty, because file is newly added)
>> +++ head/databases/mysql56-client/files/patch-cmake_ssl.cmake	Wed Jan 
>> 25 19:07:08 2017	(r432458)
>> @@ -0,0 +1,11 @@
>> +--- cmake/ssl.cmake.orig	2016-11-28 13:36:22 UTC
>> ++++ cmake/ssl.cmake
>> +@@ -176,7 +176,7 @@ MACRO (MYSQL_CHECK_SSL)
>> +     IF(OPENSSL_INCLUDE_DIR AND
>> +        OPENSSL_LIBRARY   AND
>> +        CRYPTO_LIBRARY      AND
>> +-       OPENSSL_MAJOR_VERSION STREQUAL "1"
>> ++       OPENSSL_MAJOR_VERSION VERSION_GREATER_EQUAL "1"
>> +       )
>> +       SET(OPENSSL_FOUND TRUE)
>> +     ELSE()
>> 
>> Modified: head/databases/mysql56-server/Makefile
>> ==============================================================================
>> --- head/databases/mysql56-server/Makefile	Wed Jan 25 18:59:23 
>> 2017	(r432457)
>> +++ head/databases/mysql56-server/Makefile	Wed Jan 25 19:07:08 
>> 2017	(r432458)
>> @@ -3,7 +3,7 @@
>> 
>>  PORTNAME?=	mysql
>>  PORTVERSION=	5.6.35
>> -PORTREVISION?=	2
>> +PORTREVISION?=	3
>>  CATEGORIES=	databases ipv6
>>  MASTER_SITES=	MYSQL/MySQL-5.6
>>  PKGNAMESUFFIX?=	56-server
>> @@ -54,6 +54,9 @@ CMAKE_ARGS+=	-DINSTALL_LAYOUT=FREEBSD \
>>  		-DWITH_LIBEVENT=system \
>>  		-DWITH_LZ4=system \
>>  		-DWITH_ZLIB=system \
>> +		-DWITH_SSL=${OPENSSLBASE} \
>> +		-DCRYPTO_LIBRARY=${OPENSSLLIB}/libcrypto.so \
>> +		-DOPENSSL_LIBRARY=${OPENSSLLIB}/libssl.so \
>>  		-DINSTALL_MYSQLTESTDIR=0
>> 
>>  SHEBANG_FILES=	scripts/*.pl* scripts/*.sh
>> @@ -129,12 +132,6 @@ PERFSCHM_SUB_LIST_OFF+=	PERFSCHEMRC="--s
>> 
>>  .include <bsd.port.pre.mk>
>> 
>> -.if ${SSL_DEFAULT} == base
>> -CMAKE_ARGS+=		-DWITH_SSL=system
>> -.else
>> -CMAKE_ARGS+=		-DWITH_SSL=${OPENSSLBASE}
>> -.endif
>> -
>>  post-patch:
>>  	@${REINPLACE_CMD} 's/*.1/${MMAN1}/' ${WRKSRC}/man/CMakeLists.txt
>> 
>> 
>> Added: head/databases/mysql56-server/files/patch-cmake_ssl.cmake
>> ==============================================================================
>> --- /dev/null	00:00:00 1970	(empty, because file is newly added)
>> +++ head/databases/mysql56-server/files/patch-cmake_ssl.cmake	Wed Jan 
>> 25 19:07:08 2017	(r432458)
>> @@ -0,0 +1,11 @@
>> +--- cmake/ssl.cmake.orig	2016-11-28 13:36:22 UTC
>> ++++ cmake/ssl.cmake
>> +@@ -176,7 +176,7 @@ MACRO (MYSQL_CHECK_SSL)
>> +     IF(OPENSSL_INCLUDE_DIR AND
>> +        OPENSSL_LIBRARY   AND
>> +        CRYPTO_LIBRARY      AND
>> +-       OPENSSL_MAJOR_VERSION STREQUAL "1"
>> ++       OPENSSL_MAJOR_VERSION VERSION_GREATER_EQUAL "1"
>> +       )
>> +       SET(OPENSSL_FOUND TRUE)
>> +     ELSE()
>> 
> 
> Interestingly, this actually broke several ports for us:
> benchmarks	sysbench
> databases	apq-mysql
> databases	mysql-connector-c++
> mail	qmail-mysql
> security	pam-mysql
> 
> typical message:
> /usr/libexec/binutils227/elf/ld.gold: error: cannot find -lssl
> /usr/libexec/binutils227/elf/ld.gold: error: cannot find -lcrypto
> 
> I think mysql_config is to blame:
> 
> checking for mysql_config... /usr/local/bin/mysql_config
> checking MySQL C flags... -I/usr/local/include/mysql  -isystem
> /usr/local/include -fno-strict-aliasing  -g -fno-omit-frame-pointer
> -fno-strict-aliasing
> checking MySQL linker flags... -L/usr/local/lib/mysql  -lmysqlclient_r
> -pthread -lz -lm -lexecinfo -lssl -lcrypto
> 
> It's not adding -L/usr/local/lib for ports' openssl ports.
> 
> John
> 
Hi John,

That's actually an error in MySQL... We are passing it the OpenSSL root 
and the shared libs.
MySQL (and MariaDB) builds favour static linking, so I guess they've not 
even thought of adding it to the pkgconfig.

For MariaDB 10.1 it does add /usr/local/lib (mind you, on my system it 
will link ssl and crypto from base)
$ mysql_config --cflags
-I/usr/local/include/mysql -I/usr/local/include/mysql/..
$ mysql_config --libs
-L/usr/local/lib/mysql  -lmysqlclient -pthread -lz -lm -lexecinfo -lssl 
-lcrypto -L/usr/local/lib
$ mysql_config --libs_r
-L/usr/local/lib/mysql  -lmysqlclient -pthread -lz -lm -lexecinfo -lssl 
-lcrypto -L/usr/local/lib

Cheers,

Bernard.



More information about the svn-ports-all mailing list