diff options
author | Mahdi Mokhtari <mmokhi@FreeBSD.org> | 2019-01-13 23:24:27 +0000 |
---|---|---|
committer | Mahdi Mokhtari <mmokhi@FreeBSD.org> | 2019-01-13 23:24:27 +0000 |
commit | 017db20ddf2c32ea444a09a2eeb61ee7853ec529 (patch) | |
tree | a003da78efb597badde0a6cc285a5ec4707bbb1f | |
parent | x11/polybar: fix build with DEFAULT_VERSIONS=python=3.x (diff) |
databases/mysql80-{client, server}: Update ports to latest version 8.0.13
This update fixes several issues including CVEs.
Bug-fixes:
- Return better error messages for OpenSSL errors
- Incorrect copying of an integer value by X Plugin caused an
error relating to misaligned memory access
Improvement:
- Important Change: X Protocol now provides a connection pooling option
Upstream notes: https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-13
While here, fix the build with GCC-based architectures too (ported from fix on MySQL57)
Sponsored by: The FreeBSD Foundation
Notes
Notes:
svn path=/head/; revision=490218
13 files changed, 135 insertions, 62 deletions
diff --git a/databases/mysql80-client/Makefile b/databases/mysql80-client/Makefile index 2d48a0d44d40..f666f66bf6f8 100644 --- a/databases/mysql80-client/Makefile +++ b/databases/mysql80-client/Makefile @@ -2,7 +2,7 @@ # $FreeBSD$ PORTNAME= mysql -PORTREVISION= 1 +PORTREVISION= 0 PKGNAMESUFFIX= 80-client COMMENT= Multithreaded SQL database (client) diff --git a/databases/mysql80-client/files/patch-client_CMakeLists.txt b/databases/mysql80-client/files/patch-client_CMakeLists.txt index 35bf110e5346..6a8f9eb39dad 100644 --- a/databases/mysql80-client/files/patch-client_CMakeLists.txt +++ b/databases/mysql80-client/files/patch-client_CMakeLists.txt @@ -9,20 +9,20 @@ MYSQL_ADD_EXECUTABLE(mysql_upgrade upgrade/program.cc @@ -57,11 +58,14 @@ ADD_COMPILE_FLAGS( - TARGET_LINK_LIBRARIES(mysql_upgrade mysqlclient client_base mysqlcheck_core) - ADD_DEPENDENCIES(mysql_upgrade GenFixPrivs GenSysSchema) + TARGET_LINK_LIBRARIES(mysql_upgrade mysqlclient client_base mysqlcheck_core) + ADD_DEPENDENCIES(mysql_upgrade GenFixPrivs GenSysSchema GenBootstrapPriv) ENDIF() +ENDIF() + SET(MYSQLTEST_SRC + mysqltest/mysqltest_expected_error.cc + ) + +IF(FALSE) - MYSQL_ADD_EXECUTABLE(mysqltest mysqltest.cc COMPONENT Test) - SET_SOURCE_FILES_PROPERTIES(mysqltest.cc PROPERTIES COMPILE_FLAGS "-DTHREADS") + MYSQL_ADD_EXECUTABLE(mysqltest mysqltest.cc ${MYSQLTEST_SRC} COMPONENT Test) TARGET_LINK_LIBRARIES(mysqltest mysqlclient regex) ADD_DEPENDENCIES(mysqltest GenError GenClientError) +ENDIF() - - ADD_CONVENIENCE_LIBRARY(mysqlcheck_core check/mysqlcheck_core.cc) - TARGET_LINK_LIBRARIES(mysqlcheck_core mysqlclient) @@ -113,8 +117,10 @@ TARGET_LINK_LIBRARIES(mysqlslap mysqlcli MYSQL_ADD_EXECUTABLE(mysql_config_editor mysql_config_editor.cc) TARGET_LINK_LIBRARIES(mysql_config_editor mysqlclient) diff --git a/databases/mysql80-client/files/patch-cmake_os_FreeBSD.cmake b/databases/mysql80-client/files/patch-cmake_os_FreeBSD.cmake new file mode 100644 index 000000000000..e2f70f193360 --- /dev/null +++ b/databases/mysql80-client/files/patch-cmake_os_FreeBSD.cmake @@ -0,0 +1,32 @@ +--- cmake/os/FreeBSD.cmake.orig 2018-10-04 05:48:22 UTC ++++ cmake/os/FreeBSD.cmake +@@ -30,12 +30,26 @@ IF(NOT FORCE_UNSUPPORTED_COMPILER) + IF(NOT HAVE_SUPPORTED_CLANG_VERSION) + MESSAGE(FATAL_ERROR "Clang 3.3 or newer is required!") + ENDIF() +- ELSE() +- MESSAGE(FATAL_ERROR "Unsupported compiler!") ++ CHECK_C_SOURCE_RUNS(" ++ int main() ++ { ++ return (__clang_major__ >= 4); ++ }" I386_ATOMIC_BUILTINS) ++ IF((CMAKE_SYSTEM_PROCESSOR MATCHES "i386") AND (NOT I386_ATOMIC_BUILTINS)) ++ SET(HAVE_GCC_ATOMIC_BUILTINS CACHE INTERNAL "") ++ ENDIF() ++ ELSEIF(CMAKE_COMPILER_IS_GNUCC) ++ EXECUTE_PROCESS(COMMAND ${CMAKE_C_COMPILER} -dumpversion ++ OUTPUT_VARIABLE GCC_VERSION) ++ IF(GCC_VERSION VERSION_LESS 4.4) ++ MESSAGE(FATAL_ERROR "GCC 4.4 or newer is required!") ++ ENDIF() + ENDIF() + ENDIF() + + # Should not be needed any more, but kept for easy resurrection if needed + # #Legacy option, maybe not needed anymore , taken as is from autotools build + # ADD_DEFINITIONS(-DNET_RETRY_COUNT=1000000) +- ++# For GCC maybe it's also good idea to use ++# ADD_DEFINITIONS(-D_GNU_SOURCE) ++ diff --git a/databases/mysql80-client/files/patch-scripts_CMakeLists.txt b/databases/mysql80-client/files/patch-scripts_CMakeLists.txt index 8deeef6509d1..e63cc1b920aa 100644 --- a/databases/mysql80-client/files/patch-scripts_CMakeLists.txt +++ b/databases/mysql80-client/files/patch-scripts_CMakeLists.txt @@ -1,6 +1,6 @@ ---- scripts/CMakeLists.txt.orig 2016-03-28 18:06:12 UTC +--- scripts/CMakeLists.txt.orig 2018-11-04 20:58:12 UTC +++ scripts/CMakeLists.txt -@@ -43,6 +43,7 @@ ELSE() +@@ -80,6 +80,7 @@ ELSE() MESSAGE(FATAL_ERROR "Cannot concatenate files") ENDIF() @@ -8,7 +8,7 @@ # Build mysql_fix_privilege_tables.c ADD_CUSTOM_COMMAND( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/mysql_fix_privilege_tables_sql.c -@@ -63,6 +64,7 @@ ADD_CUSTOM_TARGET(GenFixPrivs +@@ -100,6 +101,7 @@ ADD_CUSTOM_TARGET(GenFixPrivs DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/mysql_fix_privilege_tables_sql.c ${CMAKE_CURRENT_BINARY_DIR}/sql_commands_sys_schema.h ) @@ -16,23 +16,23 @@ # If we do not have performance schema compiled in then sys will not work, # so only create an empty sys database with an auto-generated file, -@@ -143,6 +145,7 @@ IF(NOT WITHOUT_SERVER) +@@ -204,6 +206,7 @@ IF(NOT WITHOUT_SERVER) ) ENDIF() +IF(FALSE) IF(UNIX) - FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/make_binary_distribution + FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/make_binary_distribution "cd ${CMAKE_BINARY_DIR} && '${CMAKE_CPACK_COMMAND}' -G TGZ --config CPackConfig.cmake\n" ) -@@ -150,6 +153,7 @@ IF(UNIX) +@@ -211,6 +214,7 @@ IF(UNIX) COMMAND chmod +x ${CMAKE_CURRENT_BINARY_DIR}/make_binary_distribution ) ENDIF() +ENDIF() - IF(NOT WITHOUT_SERVER) - INSTALL(FILES -@@ -347,6 +351,8 @@ MACRO(EXTRACT_LINK_LIBRARIES target var) + # TCMalloc hacks + IF(MALLOC_LIB) +@@ -372,6 +376,8 @@ MACRO(EXTRACT_LINK_LIBRARIES target var) GET_FILENAME_COMPONENT(lib "${lib}" NAME_WE) STRING(REGEX REPLACE "^lib" "" lib "${lib}") SET(${var} "${${var}}-l${lib} " ) @@ -41,7 +41,7 @@ ELSE() SET(${var} "${${var}}-l${lib} " ) ENDIF() -@@ -430,19 +436,7 @@ ELSE() +@@ -454,19 +460,7 @@ ELSE() # On Unix, most of the files end up in the bin directory SET(mysql_config_COMPONENT COMPONENT Development) diff --git a/databases/mysql80-server/Makefile b/databases/mysql80-server/Makefile index de3cd36c81ef..123ad9bb238c 100644 --- a/databases/mysql80-server/Makefile +++ b/databases/mysql80-server/Makefile @@ -2,8 +2,8 @@ # $FreeBSD$ PORTNAME?= mysql -PORTVERSION= 8.0.12 -PORTREVISION?= 3 +PORTVERSION= 8.0.13 +PORTREVISION?= 0 CATEGORIES= databases ipv6 MASTER_SITES= MYSQL/MySQL-8.0 PKGNAMESUFFIX?= 80-server @@ -17,8 +17,8 @@ LICENSE= GPLv2 WRKSRC= ${WRKDIR}/${PORTNAME}-${PORTVERSION}${DISTVERSIONSUFFIX} SLAVEDIRS= databases/mysql80-client -USES= bison:build cmake:noninja compiler:c++14-lang \ - compiler:c++14-lib cpe libedit localbase perl5 shebangfix ssl +USES= bison:build cmake:noninja compiler:c++14-lang cpe \ + libedit localbase perl5 shebangfix ssl USE_PERL5= run @@ -41,7 +41,7 @@ CMAKE_ARGS+= -DINSTALL_LAYOUT=FREEBSD \ -DINSTALL_DOCDIR="share/doc/mysql" \ -DINSTALL_DOCREADMEDIR="share/doc/mysql" \ -DINSTALL_INCLUDEDIR="include/mysql" \ - -DINSTALL_INFODIR="info" \ + -DINSTALL_INFODIR="${INFO_PATH}" \ -DINSTALL_LIBDIR="lib/mysql" \ -DINSTALL_MANDIR="man" \ -DINSTALL_MYSQLDATADIR="${MY_DBDIR}" \ @@ -63,6 +63,7 @@ CMAKE_ARGS+= -DINSTALL_LAYOUT=FREEBSD \ -DWITH_ICU=system \ -DWITH_RE2=system \ -DWITH_PROTOBUF=system \ + -DBUILD_BUNDLED_ZLIB=0 \ -DINSTALL_MYSQLTESTDIR=0 SHEBANG_FILES= scripts/*.pl* scripts/*.sh diff --git a/databases/mysql80-server/distinfo b/databases/mysql80-server/distinfo index 4d9301da569c..ec9ee7b66f78 100644 --- a/databases/mysql80-server/distinfo +++ b/databases/mysql80-server/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1534018331 -SHA256 (mysql-boost-8.0.12.tar.gz) = 99abae6660b53a462cff7c9fefb56d17f52823e9a964831aee1ae5633d9a2982 -SIZE (mysql-boost-8.0.12.tar.gz) = 83152486 +TIMESTAMP = 1541000462 +SHA256 (mysql-boost-8.0.13.tar.gz) = 61f97906050c2a0cc008be347f70c2c6612425c85342466f549088c570b35ff4 +SIZE (mysql-boost-8.0.13.tar.gz) = 106396721 diff --git a/databases/mysql80-server/files/patch-cmake_os_FreeBSD.cmake b/databases/mysql80-server/files/patch-cmake_os_FreeBSD.cmake new file mode 100644 index 000000000000..64b809e3bd45 --- /dev/null +++ b/databases/mysql80-server/files/patch-cmake_os_FreeBSD.cmake @@ -0,0 +1,31 @@ +--- cmake/os/FreeBSD.cmake.orig 2018-10-04 05:48:22 UTC ++++ cmake/os/FreeBSD.cmake +@@ -30,6 +30,20 @@ IF(NOT FORCE_UNSUPPORTED_COMPILER) + IF(NOT HAVE_SUPPORTED_CLANG_VERSION) + MESSAGE(FATAL_ERROR "Clang 3.3 or newer is required!") + ENDIF() ++ CHECK_C_SOURCE_RUNS(" ++ int main() ++ { ++ return (__clang_major__ >= 4); ++ }" I386_ATOMIC_BUILTINS) ++ IF((CMAKE_SYSTEM_PROCESSOR MATCHES "i386") AND (NOT I386_ATOMIC_BUILTINS)) ++ SET(HAVE_GCC_ATOMIC_BUILTINS CACHE INTERNAL "") ++ ENDIF() ++ ELSEIF(CMAKE_COMPILER_IS_GNUCC) ++ EXECUTE_PROCESS(COMMAND ${CMAKE_C_COMPILER} -dumpversion ++ OUTPUT_VARIABLE GCC_VERSION) ++ IF(GCC_VERSION VERSION_LESS 4.4) ++ MESSAGE(FATAL_ERROR "GCC 4.4 or newer is required!") ++ ENDIF() + ELSE() + MESSAGE(FATAL_ERROR "Unsupported compiler!") + ENDIF() +@@ -38,4 +52,6 @@ ENDIF() + # Should not be needed any more, but kept for easy resurrection if needed + # #Legacy option, maybe not needed anymore , taken as is from autotools build + # ADD_DEFINITIONS(-DNET_RETRY_COUNT=1000000) +- ++# For GCC maybe it's also good idea to use ++# ADD_DEFINITIONS(-D_GNU_SOURCE) ++ diff --git a/databases/mysql80-server/files/patch-libmysql_CMakeLists.txt b/databases/mysql80-server/files/patch-libmysql_CMakeLists.txt index 7cbc355f0fc2..c8512c4ef7a9 100644 --- a/databases/mysql80-server/files/patch-libmysql_CMakeLists.txt +++ b/databases/mysql80-server/files/patch-libmysql_CMakeLists.txt @@ -4,21 +4,21 @@ ADD_SUBDIRECTORY(authentication_ldap) # Merge several convenience libraries into one big mysqlclient --MERGE_CONVENIENCE_LIBRARIES(mysqlclient ${LIBS} COMPONENT Development) -+MERGE_CONVENIENCE_LIBRARIES(mysqlclient ${LIBS} COMPONENT Development SKIP_INSTALL) +-MERGE_CONVENIENCE_LIBRARIES(mysqlclient ${LIBS_TO_MERGE} COMPONENT Development) ++MERGE_CONVENIENCE_LIBRARIES(mysqlclient ${LIBS_TO_MERGE} COMPONENT Development SKIP_INSTALL) + TARGET_LINK_LIBRARIES(mysqlclient ${LIBS_TO_LINK}) - # Visual Studio users need debug static library for debug projects IF(MSVC) @@ -257,7 +257,8 @@ IF(NOT DISABLE_SHARED) # and link them together into shared library. - MERGE_LIBRARIES(libmysql SHARED ${LIBS} + MERGE_LIBRARIES_SHARED(libmysql ${LIBS_TO_MERGE} EXPORTS ${CLIENT_API_FUNCTIONS} ${CLIENT_API_FUNCTIONS_UNDOCUMENTED} - COMPONENT SharedLibraries) + COMPONENT SharedLibraries SKIP_INSTALL) + TARGET_LINK_LIBRARIES(libmysql ${LIBS_TO_LINK}) + +IF(FALSE) - IF(UNIX) - # libtool compatability - IF(CMAKE_SYSTEM_NAME MATCHES "FreeBSD" OR APPLE) + IF(WIN32) @@ -313,6 +314,7 @@ ENDIF() # to initialize api_calls[] array in api_test.c # diff --git a/databases/mysql80-server/files/patch-plugin_x_CMakeLists.txt b/databases/mysql80-server/files/patch-plugin_x_CMakeLists.txt index ef1ad0500b6f..cdff6bb5a339 100644 --- a/databases/mysql80-server/files/patch-plugin_x_CMakeLists.txt +++ b/databases/mysql80-server/files/patch-plugin_x_CMakeLists.txt @@ -1,6 +1,6 @@ --- plugin/x/CMakeLists.txt.orig 2018-04-08 06:44:49 UTC +++ plugin/x/CMakeLists.txt -@@ -82,12 +82,15 @@ INCLUDE_DIRECTORIES( +@@ -89,12 +89,15 @@ INCLUDE_DIRECTORIES( ${MYSQLX_GENERATE_DIR} ${MYSQLX_PROTOCOL_INCLUDE_DIR} ${MYSQLX_CLIENT_INCLUDE_DIR} @@ -9,7 +9,7 @@ INCLUDE_DIRECTORIES(SYSTEM ${PROTOBUF_INCLUDE_DIRS} - ${LIBEVENT_INCLUDE_DIR} + ${LIBEVENT_INCLUDE_DIRS} ${ICU_INCLUDE_DIRS} + ${SSL_INCLUDE_DIRS} + ${ZLIB_INCLUDE_DIR} diff --git a/databases/mysql80-server/files/patch-plugin_x_src_xpl__regex.cc b/databases/mysql80-server/files/patch-plugin_x_src_xpl__regex.cc deleted file mode 100644 index 151de1e46b72..000000000000 --- a/databases/mysql80-server/files/patch-plugin_x_src_xpl__regex.cc +++ /dev/null @@ -1,11 +0,0 @@ ---- plugin/x/src/xpl_regex.cc.orig 2018-08-11 18:13:47 UTC -+++ plugin/x/src/xpl_regex.cc -@@ -53,7 +53,7 @@ bool xpl::Regex::match(const char *value - * and parse the text patter each time that xpl::Regex::match - * is called. - */ -- UnicodeString value_as_utf8{icu::UnicodeString::fromUTF8(value)}; -+ icu::UnicodeString value_as_utf8{icu::UnicodeString::fromUTF8(value)}; - std::unique_ptr<icu::RegexMatcher> regexp{ - m_pattern->matcher(value_as_utf8, match_status)}; - diff --git a/databases/mysql80-server/files/patch-router_src_harness_CMakeLists.txt b/databases/mysql80-server/files/patch-router_src_harness_CMakeLists.txt new file mode 100644 index 000000000000..9762f0373faf --- /dev/null +++ b/databases/mysql80-server/files/patch-router_src_harness_CMakeLists.txt @@ -0,0 +1,11 @@ +--- router/src/harness/CMakeLists.txt.orig 2018-11-04 22:41:07 UTC ++++ router/src/harness/CMakeLists.txt +@@ -128,7 +128,7 @@ IF(WIN32) + COMPILE_FLAGS -DHARNESS_STATIC_DEFINE) + ENDIF() + IF(THREADS_HAVE_PTHREAD_ARG) +- target_compile_options(PUBLIC harness-archive "-pthread") ++ target_compile_options(harness-archive PUBLIC "-pthread") + ENDIF() + + # create harness library - dynamic version diff --git a/databases/mysql80-server/files/patch-sql_mysqld.cc b/databases/mysql80-server/files/patch-sql_mysqld.cc index 6f679b5d516c..82f269279457 100644 --- a/databases/mysql80-server/files/patch-sql_mysqld.cc +++ b/databases/mysql80-server/files/patch-sql_mysqld.cc @@ -1,15 +1,15 @@ ---- sql/mysqld.cc.orig 2018-04-08 06:44:49 UTC +--- sql/mysqld.cc.orig 2018-10-07 08:44:22 UTC +++ sql/mysqld.cc -@@ -4309,7 +4309,7 @@ static int warn_self_signed_ca() { - static void init_ssl() { - #ifdef HAVE_OPENSSL - #ifndef HAVE_WOLFSSL +@@ -4493,7 +4493,7 @@ static int warn_self_signed_ca() { + + static PSI_memory_key key_memory_openssl = PSI_NOT_INSTRUMENTED; + -#if OPENSSL_VERSION_NUMBER < 0x10100000L +#if defined(LIBRESSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER < 0x10100000L - CRYPTO_malloc_init(); - #else /* OPENSSL_VERSION_NUMBER < 0x10100000L */ - OPENSSL_malloc_init(); -@@ -4321,7 +4321,7 @@ static void init_ssl() { + #define FILE_LINE_ARGS + #else + #define FILE_LINE_ARGS , const char *, int +@@ -4530,7 +4530,7 @@ static void init_ssl() { static int init_ssl_communication() { #ifdef HAVE_OPENSSL @@ -18,7 +18,7 @@ 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) { -@@ -8647,7 +8647,7 @@ bool mysqld_get_one_option(int optid, +@@ -8919,7 +8919,7 @@ bool mysqld_get_one_option(int optid, One can disable SSL later by using --skip-ssl or --ssl=0. */ opt_use_ssl = true; diff --git a/databases/mysql80-server/pkg-plist b/databases/mysql80-server/pkg-plist index 1ac9a7725129..7b5ecbbd4eea 100644 --- a/databases/mysql80-server/pkg-plist +++ b/databases/mysql80-server/pkg-plist @@ -1,3 +1,5 @@ +LICENSE.router +README.router bin/ibd2sdi bin/innochecksum bin/my_print_defaults @@ -11,12 +13,24 @@ bin/mysql_upgrade bin/mysqld_multi bin/mysqld_safe bin/mysqldumpslow +bin/mysqlrouter +bin/mysqlrouter_plugin_info bin/mysqltest bin/mysqlxtest bin/perror bin/resolve_stack_dump bin/resolveip bin/zlib_decompress +lib/mysql/libmysqlharness.a +lib/mysql/libmysqlharness.so +lib/mysql/libmysqlharness.so.1 +lib/mysql/libmysqlrouter.so +lib/mysql/libmysqlrouter.so.1 +lib/mysql/mysqlrouter/keepalive.so +lib/mysql/mysqlrouter/metadata_cache.so +lib/mysql/mysqlrouter/mysql_protocol.so +lib/mysql/mysqlrouter/routing.so +lib/mysql/mysqlrouter/syslog.so lib/mysql/plugin/adt_null.so lib/mysql/plugin/auth.so lib/mysql/plugin/auth_test_plugin.so @@ -61,6 +75,7 @@ lib/mysql/plugin/connection_control.so lib/mysql/plugin/daemon_example.ini lib/mysql/plugin/group_replication.so %%NO_EXAMPLE%%lib/mysql/plugin/ha_example.so +lib/mysql/plugin/ha_mock.so lib/mysql/plugin/keyring_file.so lib/mysql/plugin/libdaemon_example.so lib/mysql/plugin/libtest_framework.so @@ -158,7 +173,6 @@ man/man8/mysqld.8.gz %%DATADIR%%/english/errmsg.sys %%DATADIR%%/errmsg-utf8.txt %%DATADIR%%/estonian/errmsg.sys -%%DATADIR%%/fill_help_tables.sql %%DATADIR%%/french/errmsg.sys %%DATADIR%%/german/errmsg.sys %%DATADIR%%/greek/errmsg.sys @@ -171,11 +185,6 @@ man/man8/mysqld.8.gz %%DATADIR%%/magic %%DATADIR%%/mysql-log-rotate %%DATADIR%%/mysql.server -%%DATADIR%%/mysql_sys_schema.sql -%%DATADIR%%/mysql_system_tables.sql -%%DATADIR%%/mysql_system_tables_data.sql -%%DATADIR%%/mysql_system_users.sql -%%DATADIR%%/mysql_test_data_timezone.sql %%DATADIR%%/mysqld_multi.server %%DATADIR%%/norwegian-ny/errmsg.sys %%DATADIR%%/norwegian/errmsg.sys |