Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 30 Jan 2017 07:17:44 -0600
From:      John Marino <freebsd.contact@marino.st>
To:        Bernard Spil <brnrd@FreeBSD.org>, marino@freebsd.org, mokhi64@gmail.com
Cc:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   Re: svn commit: r432458 - in head/databases: mysql56-client mysql56-client/files mysql56-server mysql56-server/files
Message-ID:  <54a4e7df-7435-aadd-d896-5a90e97a62ce@marino.st>
In-Reply-To: <c75116e74c3f55198224dcb3f1bcdfa2@FreeBSD.org>
References:  <201701251907.v0PJ78fZ061674@repo.freebsd.org> <796ba016-0c35-f368-5115-3a8a1ec4cfec@marino.st> <c75116e74c3f55198224dcb3f1bcdfa2@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On 1/30/2017 03:07, Bernard Spil wrote:
> 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.
>

Yes, I know it's a error in MySQL.
We fixed it locally in dports via a post-stage hack.

It remains broken but undetected on FreeBSD.  Even if SSL_DEFAULT is set 
on FreeBSD, those port will like to the base openssl libraries by mistake.

(FYI, even if vendor has an issue doesn't excuse not fixing downstream 
issues caused by commits.  In other words, ideally saying "it's MySQL's" 
fault shouldn't be the end of it.).

John




---
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?54a4e7df-7435-aadd-d896-5a90e97a62ce>