From 518c23ba49e0623d758c8420234b937bcde4276d Mon Sep 17 00:00:00 2001 From: Thomas Deutschmann Date: Mon, 20 Jan 2020 19:10:47 +0100 Subject: dev-db/mysql-connector-c: bump to v8.0.19 Closes: https://bugs.gentoo.org/697934 Package-Manager: Portage-2.3.84, Repoman-2.3.20 Signed-off-by: Thomas Deutschmann --- dev-db/mysql-connector-c/Manifest | 1 + ...onnector-c-8.0.19-do-not-install-comp_err.patch | 12 + .../files/mysql-connector-c-8.0.19-libressl.patch | 297 +++++++++++++++++++++ .../mysql-connector-c-8.0.19.ebuild | 111 ++++++++ 4 files changed, 421 insertions(+) create mode 100644 dev-db/mysql-connector-c/files/mysql-connector-c-8.0.19-do-not-install-comp_err.patch create mode 100644 dev-db/mysql-connector-c/files/mysql-connector-c-8.0.19-libressl.patch create mode 100644 dev-db/mysql-connector-c/mysql-connector-c-8.0.19.ebuild diff --git a/dev-db/mysql-connector-c/Manifest b/dev-db/mysql-connector-c/Manifest index c716740b2d3d..545daa75efdd 100644 --- a/dev-db/mysql-connector-c/Manifest +++ b/dev-db/mysql-connector-c/Manifest @@ -1,3 +1,4 @@ DIST mysql-boost-8.0.17.tar.gz 189322239 BLAKE2B f9f46e5fdc3e9869b203626bc09edfbcdbabcd68eba43f9c6a33b9a52cffb3a32f39704c6d22a66899aac16fa2efb271c5dc7af7522768b45542ac8dc615cd8a SHA512 a278ee263670cb1f79d67c4b87c4b88632569c3b20a4297a6e77d550155db20902f22992ea851cf59ea523bb97d5e08707e3457f71a678e9f1ac2fa4ca5b7a2d DIST mysql-boost-8.0.18.tar.gz 194953221 BLAKE2B e3622cccd8f60487a5e643e522e9cdc763d63ad2a5eda86a7a7db37f48a4e1288fea88ef7097c6c4b51bd5e8fd8ba26a5b8aea3501ae847180066e2d0aa2b5dc SHA512 180091ad3e74e2afa28ecb914850e6b4e8c92b8981f32b161f53381b92120d87dbd2c2fc073feb2543bb71702bac7368e9fb992821cfd3e3ca888019423b89f5 +DIST mysql-boost-8.0.19.tar.gz 264147972 BLAKE2B 61a5ccbef1a7a675c85e4e6bda8e5285bdb931e6ee14d4710bf13dfd9157d1095200db2886dc93ea7251d3d59245f35c0bef5ba88ba6aac209b1e080f3b07dc4 SHA512 5ffc03f005ab2585694902e926b6cb2b10059b2b030549eccd3949f9c3b2f02626d02529f940dec003f2d69683856fd1c720ff12f89dfbdc48befaf24a9c4d01 DIST mysql-connector-c-6.1.11-src.tar.gz 3489345 BLAKE2B 813512520ef660521221565a4466e81d902629d0ee731f746b68eed2b9129ea8361fcabe184537ec8ba91aed5a4b02dfb3450b36524c2e98f81fba148eee0cf1 SHA512 271395c888a93b833e0bbe1840b9987ecdb37d0f1cf89904207cc9aa99ed32e538aee8c9529ff39b6533947159776a8f5aa079da86ed51b1d26b086f4ffdd7c6 diff --git a/dev-db/mysql-connector-c/files/mysql-connector-c-8.0.19-do-not-install-comp_err.patch b/dev-db/mysql-connector-c/files/mysql-connector-c-8.0.19-do-not-install-comp_err.patch new file mode 100644 index 000000000000..94329eeeb3c7 --- /dev/null +++ b/dev-db/mysql-connector-c/files/mysql-connector-c-8.0.19-do-not-install-comp_err.patch @@ -0,0 +1,12 @@ +diff --git a/utilities/CMakeLists.txt b/utilities/CMakeLists.txt +index c855f8ab..0ebef451 100644 +--- a/utilities/CMakeLists.txt ++++ b/utilities/CMakeLists.txt +@@ -27,6 +27,7 @@ IF(NOT CMAKE_CROSSCOMPILING) + comp_err.cc + COMPONENT Server + LINK_LIBRARIES mysys ++ SKIP_INSTALL + ) + ENDIF() + diff --git a/dev-db/mysql-connector-c/files/mysql-connector-c-8.0.19-libressl.patch b/dev-db/mysql-connector-c/files/mysql-connector-c-8.0.19-libressl.patch new file mode 100644 index 000000000000..1fc949ae8564 --- /dev/null +++ b/dev-db/mysql-connector-c/files/mysql-connector-c-8.0.19-libressl.patch @@ -0,0 +1,297 @@ +--- a/cmake/ssl.cmake ++++ b/cmake/ssl.cmake +@@ -229,13 +229,14 @@ MACRO (MYSQL_CHECK_SSL) + OPENSSL_FIX_VERSION "${OPENSSL_VERSION_NUMBER}" + ) + ENDIF() +- IF("${OPENSSL_MAJOR_VERSION}.${OPENSSL_MINOR_VERSION}.${OPENSSL_FIX_VERSION}" VERSION_GREATER "1.1.0") ++ CHECK_SYMBOL_EXISTS(TLS1_3_VERSION "openssl/tls1.h" HAVE_TLS1_3_VERSION) ++ IF(HAVE_TLS1_3_VERSION) + ADD_DEFINITIONS(-DHAVE_TLSv13) + ENDIF() + 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) + FIND_PROGRAM(OPENSSL_EXECUTABLE openssl +--- a/mysys/my_md5.cc ++++ b/mysys/my_md5.cc +@@ -56,7 +56,9 @@ static void my_md5_hash(unsigned char *digest, unsigned const char *buf, + int compute_md5_hash(char *digest, const char *buf, int len) { + int retval = 0; + int fips_mode = 0; ++#ifndef LIBRESSL_VERSION_NUMBER + fips_mode = FIPS_mode(); ++#endif + /* If fips mode is ON/STRICT restricted method calls will result into abort, + * skipping call. */ + if (fips_mode == 0) { +--- a/plugin/group_replication/libmysqlgcs/src/bindings/xcom/xcom/xcom_ssl_transport.c ++++ b/plugin/group_replication/libmysqlgcs/src/bindings/xcom/xcom/xcom_ssl_transport.c +@@ -329,6 +329,7 @@ error: + return 1; + } + ++#ifndef LIBRESSL_VERSION_NUMBER + #define OPENSSL_ERROR_LENGTH 512 + static int configure_ssl_fips_mode(const uint fips_mode) { + int rc = -1; +@@ -352,6 +353,7 @@ static int configure_ssl_fips_mode(const uint fips_mode) { + EXIT: + return rc; + } ++#endif + + static int configure_ssl_ca(SSL_CTX *ssl_ctx, const char *ca_file, + const char *ca_path) { +@@ -555,10 +557,12 @@ int xcom_init_ssl(const char *server_key_file, const char *server_cert_file, + int verify_server = SSL_VERIFY_NONE; + int verify_client = SSL_VERIFY_NONE; + ++#ifndef LIBRESSL_VERSION_NUMBER + if (configure_ssl_fips_mode(ssl_fips_mode) != 1) { + G_ERROR("Error setting the ssl fips mode"); + goto error; + } ++#endif + + SSL_library_init(); + SSL_load_error_strings(); +@@ -622,7 +626,7 @@ error: + void xcom_cleanup_ssl() { + if (!xcom_use_ssl()) return; + +-#if OPENSSL_VERSION_NUMBER < 0x10100000L ++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) + ERR_remove_thread_state(0); + #endif /* OPENSSL_VERSION_NUMBER < 0x10100000L */ + } +--- a/plugin/x/client/xconnection_impl.cc ++++ b/plugin/x/client/xconnection_impl.cc +@@ -520,6 +520,7 @@ XError Connection_impl::get_ssl_error(const int error_id) { + return XError(CR_SSL_CONNECTION_ERROR, buffer); + } + ++#ifndef LIBRESSL_VERSION_NUMBER + /** + Set fips mode in openssl library, + When we set fips mode ON/STRICT, it will perform following operations: +@@ -559,6 +560,7 @@ int set_fips_mode(const uint32_t fips_mode, + EXIT: + return rc; + } ++#endif + + XError Connection_impl::activate_tls() { + if (nullptr == m_vio) return get_socket_error(SOCKET_ECONNRESET); +@@ -569,12 +571,14 @@ XError Connection_impl::activate_tls() { + if (!m_context->m_ssl_config.is_configured()) + return XError{CR_SSL_CONNECTION_ERROR, ER_TEXT_TLS_NOT_CONFIGURATED, true}; + ++#ifndef LIBRESSL_VERSION_NUMBER + char err_string[OPENSSL_ERROR_LENGTH] = {'\0'}; + if (set_fips_mode( + static_cast(m_context->m_ssl_config.m_ssl_fips_mode), + err_string) != 1) { + return XError{CR_SSL_CONNECTION_ERROR, err_string, true}; + } ++#endif + auto ssl_ctx_flags = process_tls_version( + details::null_when_empty(m_context->m_ssl_config.m_tls_version)); + +--- a/router/src/http/src/tls_client_context.cc ++++ b/router/src/http/src/tls_client_context.cc +@@ -54,7 +54,7 @@ void TlsClientContext::verify(TlsVerify verify) { + + void TlsClientContext::cipher_suites(const std::string &ciphers) { + // TLSv1.3 ciphers are controlled via SSL_CTX_set_ciphersuites() +-#if OPENSSL_VERSION_NUMBER >= ROUTER_OPENSSL_VERSION(1, 1, 1) ++#ifdef TLS1_3_VERSION + if (1 != SSL_CTX_set_ciphersuites(ssl_ctx_.get(), ciphers.c_str())) { + throw TlsError("set-cipher-suites"); + } +--- a/router/src/http/src/tls_context.cc ++++ b/router/src/http/src/tls_context.cc +@@ -91,7 +91,7 @@ static int o11x_version(TlsVersion version) { + return TLS1_1_VERSION; + case TlsVersion::TLS_1_2: + return TLS1_2_VERSION; +-#if OPENSSL_VERSION_NUMBER >= ROUTER_OPENSSL_VERSION(1, 1, 1) ++#ifdef TLS1_3_VERSION + case TlsVersion::TLS_1_3: + return TLS1_3_VERSION; + #endif +@@ -120,9 +120,11 @@ void TlsContext::version_range(TlsVersion min_version, TlsVersion max_version) { + switch (min_version) { + default: + // unknown, leave all disabled ++#ifdef TLS1_3_VERSION + // fallthrough + case TlsVersion::TLS_1_3: + opts |= SSL_OP_NO_TLSv1_2; ++#endif + // fallthrough + case TlsVersion::TLS_1_2: + opts |= SSL_OP_NO_TLSv1_1; +@@ -170,8 +172,10 @@ TlsVersion TlsContext::min_version() const { + return TlsVersion::TLS_1_1; + case TLS1_2_VERSION: + return TlsVersion::TLS_1_2; ++#ifdef TLS1_3_VERSION + case TLS1_3_VERSION: + return TlsVersion::TLS_1_3; ++#endif + case 0: + return TlsVersion::AUTO; + default: +@@ -230,7 +234,8 @@ TlsContext::InfoCallback TlsContext::info_callback() const { + } + + int TlsContext::security_level() const { +-#if OPENSSL_VERSION_NUMBER >= ROUTER_OPENSSL_VERSION(1, 1, 0) ++#if OPENSSL_VERSION_NUMBER >= ROUTER_OPENSSL_VERSION(1, 1, 0) && \ ++ !defined(LIBRESSL_VERSION_NUMBER) + return SSL_CTX_get_security_level(ssl_ctx_.get()); + #else + return 0; +--- a/router/src/http/src/tls_server_context.cc ++++ b/router/src/http/src/tls_server_context.cc +@@ -166,7 +166,8 @@ void TlsServerContext::init_tmp_dh(const std::string &dh_params) { + } + + } else { +-#if OPENSSL_VERSION_NUMBER >= ROUTER_OPENSSL_VERSION(1, 1, 0) ++#if OPENSSL_VERSION_NUMBER >= ROUTER_OPENSSL_VERSION(1, 1, 0) && \ ++ !defined(LIBRESSL_VERSION_NUMBER) + dh2048.reset(DH_get_2048_256()); + #else + /* +--- a/sql-common/client.cc ++++ b/sql-common/client.cc +@@ -7730,7 +7730,7 @@ int STDCALL mysql_options(MYSQL *mysql, enum mysql_option option, + #endif + break; + case MYSQL_OPT_SSL_FIPS_MODE: { +-#if defined(HAVE_OPENSSL) ++#if defined(HAVE_OPENSSL) && !defined(LIBRESSL_VERSION_NUMBER) + char ssl_err_string[OPENSSL_ERROR_LENGTH] = {'\0'}; + ENSURE_EXTENSIONS_PRESENT(&mysql->options); + mysql->options.extension->ssl_fips_mode = *static_cast(arg); +--- a/sql/mysqld.cc ++++ b/sql/mysqld.cc +@@ -4818,7 +4818,7 @@ static int init_thread_environment() { + + static PSI_memory_key key_memory_openssl = PSI_NOT_INSTRUMENTED; + +-#if OPENSSL_VERSION_NUMBER < 0x10100000L ++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) + #define FILE_LINE_ARGS + #else + #define FILE_LINE_ARGS , const char *, int +@@ -4854,12 +4854,14 @@ static void init_ssl() { + } + + static int init_ssl_communication() { ++#ifndef LIBRESSL_VERSION_NUMBER + char ssl_err_string[OPENSSL_ERROR_LENGTH] = {'\0'}; + int ret_fips_mode = set_fips_mode(opt_ssl_fips_mode, ssl_err_string); + if (ret_fips_mode != 1) { + LogErr(ERROR_LEVEL, ER_SSL_FIPS_MODE_ERROR, ssl_err_string); + return 1; + } ++#endif + if (SslAcceptorContext::singleton_init(opt_use_ssl)) return 1; + + #if OPENSSL_VERSION_NUMBER < 0x10100000L +--- a/sql/sys_vars.cc ++++ b/sql/sys_vars.cc +@@ -4417,6 +4417,7 @@ static Sys_var_ulong Sys_max_execution_time( + HINT_UPDATEABLE SESSION_VAR(max_execution_time), CMD_LINE(REQUIRED_ARG), + VALID_RANGE(0, ULONG_MAX), DEFAULT(0), BLOCK_SIZE(1)); + ++#ifndef LIBRESSL_VERSION_NUMBER + static bool update_fips_mode(sys_var *, THD *, enum_var_type) { + char ssl_err_string[OPENSSL_ERROR_LENGTH] = {'\0'}; + if (set_fips_mode(opt_ssl_fips_mode, ssl_err_string) != 1) { +@@ -4427,15 +4428,30 @@ static bool update_fips_mode(sys_var *, THD *, enum_var_type) { + return false; + } + } ++#endif + ++#if defined(LIBRESSL_VERSION_NUMBER) ++static const char *ssl_fips_mode_names[] = {"OFF", 0}; ++#else + static const char *ssl_fips_mode_names[] = {"OFF", "ON", "STRICT", 0}; ++#endif + static Sys_var_enum Sys_ssl_fips_mode( + "ssl_fips_mode", + "SSL FIPS mode (applies only for OpenSSL); " ++#ifndef LIBRESSL_VERSION_NUMBER + "permitted values are: OFF, ON, STRICT", ++#else ++ "permitted values are: OFF", ++#endif + GLOBAL_VAR(opt_ssl_fips_mode), CMD_LINE(REQUIRED_ARG, OPT_SSL_FIPS_MODE), + ssl_fips_mode_names, DEFAULT(0), NO_MUTEX_GUARD, NOT_IN_BINLOG, +- ON_CHECK(NULL), ON_UPDATE(update_fips_mode), NULL); ++ ON_CHECK(NULL), ++#ifndef LIBRESSL_VERSION_NUMBER ++ ON_UPDATE(update_fips_mode), ++#else ++ ON_UPDATE(NULL), ++#endif ++ NULL); + + #if defined(HAVE_OPENSSL) + static Sys_var_bool Sys_auto_generate_certs( +--- a/vio/viossl.cc ++++ b/vio/viossl.cc +@@ -45,7 +45,7 @@ + BIO_set_callback_ex was added in openSSL 1.1.1 + For older openSSL, use the deprecated BIO_set_callback. + */ +-#if OPENSSL_VERSION_NUMBER >= 0x10101000L ++#if OPENSSL_VERSION_NUMBER >= 0x10101000L && !defined(LIBRESSL_VERSION_NUMBER) + #define HAVE_BIO_SET_CALLBACK_EX + #endif + +@@ -637,7 +637,7 @@ static int ssl_do(struct st_VioSSLFd *ptr, Vio *vio, long timeout, + #if !defined(DBUG_OFF) + { + STACK_OF(SSL_COMP) *ssl_comp_methods = NULL; +- ssl_comp_methods = SSL_COMP_get_compression_methods(); ++ ssl_comp_methods = (STACK_OF(SSL_COMP) *)SSL_COMP_get_compression_methods(); + n = sk_SSL_COMP_num(ssl_comp_methods); + DBUG_PRINT("info", ("Available compression methods:\n")); + if (n == 0) +@@ -645,7 +645,7 @@ static int ssl_do(struct st_VioSSLFd *ptr, Vio *vio, long timeout, + else + for (j = 0; j < n; j++) { + SSL_COMP *c = sk_SSL_COMP_value(ssl_comp_methods, j); +-#if OPENSSL_VERSION_NUMBER < 0x10100000L ++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) + DBUG_PRINT("info", (" %d: %s\n", c->id, c->name)); + #else /* OPENSSL_VERSION_NUMBER < 0x10100000L */ + DBUG_PRINT("info", +--- a/vio/viosslfactories.cc ++++ b/vio/viosslfactories.cc +@@ -420,6 +420,7 @@ void ssl_start() { + } + } + ++#ifndef LIBRESSL_VERSION_NUMBER + /** + Set fips mode in openssl library, + When we set fips mode ON/STRICT, it will perform following operations: +@@ -473,6 +474,7 @@ EXIT: + @returns openssl current fips mode + */ + uint get_fips_mode() { return FIPS_mode(); } ++#endif + + long process_tls_version(const char *tls_version) { + const char *separator = ","; diff --git a/dev-db/mysql-connector-c/mysql-connector-c-8.0.19.ebuild b/dev-db/mysql-connector-c/mysql-connector-c-8.0.19.ebuild new file mode 100644 index 000000000000..4064f2093f98 --- /dev/null +++ b/dev-db/mysql-connector-c/mysql-connector-c-8.0.19.ebuild @@ -0,0 +1,111 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +inherit cmake-multilib + +# wrap the config script +MULTILIB_CHOST_TOOLS=( /usr/bin/mysql_config ) + +DESCRIPTION="C client library for MariaDB/MySQL" +HOMEPAGE="https://dev.mysql.com/downloads/" +LICENSE="GPL-2" + +SRC_URI="https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-boost-${PV}.tar.gz" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86" + +SLOT="0/21" +IUSE="ldap libressl static-libs" + +RDEPEND=" + >=app-arch/lz4-0_p131:= + sys-libs/zlib:=[${MULTILIB_USEDEP}] + ldap? ( dev-libs/cyrus-sasl:=[${MULTILIB_USEDEP}] ) + libressl? ( dev-libs/libressl:0=[${MULTILIB_USEDEP}] ) + !libressl? ( dev-libs/openssl:0=[${MULTILIB_USEDEP}] ) + " +DEPEND="${RDEPEND}" + +# Avoid file collisions, #692580 +RDEPEND+=" ! client/CMakeLists.txt || die + + # Forcefully disable auth plugin + if ! use ldap ; then + sed -i -e '/MYSQL_CHECK_SASL/d' CMakeLists.txt || die + echo > libmysql/authentication_ldap/CMakeLists.txt || die + fi + + cmake-utils_src_prepare +} + +multilib_src_configure() { + local mycmakeargs=( + -DINSTALL_LAYOUT=RPM + -DINSTALL_LIBDIR=$(get_libdir) + -DWITH_DEFAULT_COMPILER_OPTIONS=OFF + -DWITH_DEFAULT_FEATURE_SET=OFF + -DENABLED_LOCAL_INFILE=ON + -DMYSQL_UNIX_ADDR="${EPREFIX}/run/mysqld/mysqld.sock" + -DWITH_ZLIB=system + -DWITH_SSL=system + -DWITH_NUMA=OFF + -DLIBMYSQL_OS_OUTPUT_NAME=mysqlclient + -DSHARED_LIB_PATCH_VERSION="0" + -DCMAKE_POSITION_INDEPENDENT_CODE=ON + -DWITHOUT_SERVER=ON + ) + cmake-utils_src_configure +} + +multilib_src_install() { + cmake-utils_src_install +} + +multilib_src_install_all() { + doman \ + man/my_print_defaults.1 \ + man/perror.1 \ + man/zlib_decompress.1 + + if ! use static-libs ; then + find "${ED}" -name "*.a" -delete || die + fi +} -- cgit v1.2.3-65-gdbad