diff --git a/databases/mysqlwsrep80-server/Makefile b/databases/mysqlwsrep80-server/Makefile new file mode 100644 index 0000000..51ae843 --- /dev/null +++ b/databases/mysqlwsrep80-server/Makefile @@ -0,0 +1,208 @@ +# Created by: Mahdi Mokhtari +# $FreeBSD: head/databases/mysql80-server/Makefile 553940 2020-11-03 00:56:26Z jbeich $ + +PORTNAME?= mysqlwsrep +PORTVERSION= 8.0.21 +DISTVERSIONPREFIX?= wsrep_ +DISTVERSIONSUFFIX?= -26.4 +PORTREVISION?= 1 +CATEGORIES= databases +MASTER_SITES= https://releases.galeracluster.com/mysql-wsrep-8.0/source/ +PKGNAMESUFFIX?= 80-server +DISTNAME= mysql-wsrep-${PORTVERSION}${DISTVERSIONSUFFIX} + +MAINTAINER= joneum@FreeBSD.org +COMMENT?= Multithreaded SQL database (server) + +LICENSE= GPLv2 + +WRKSRC= ${WRKDIR}/mysql-wsrep-${PORTVERSION}${DISTVERSIONSUFFIX} + +SLAVEDIRS= databases/mysql80-client +USES= bison:build cmake:noninja compiler:c++14-lang cpe \ + groff:run libedit localbase ncurses perl5 pkgconfig shebangfix ssl + +USE_CXXSTD= c++14 +USE_PERL5= run + +MY_DBDIR= /var/db/mysql +MY_SECDIR= /var/db/mysql_secure +MY_TMPDIR= /var/db/mysql_tmpdir + +LIB_DEPENDS+= libcurl.so:ftp/curl \ + libevent.so:devel/libevent \ + libicutu.so:devel/icu \ + liblz4.so:archivers/liblz4 \ + libzstd.so:archivers/zstd \ + libprotobuf.so:devel/protobuf \ + ${LIB_DEPENDS_${ARCH}} +LIB_DEPENDS_aarch64= libunwind.so:devel/libunwind +LIB_DEPENDS_amd64= libunwind.so:devel/libunwind +LIB_DEPENDS_i386= libunwind.so:devel/libunwind +LIB_DEPENDS_powerpc64= libunwind.so:devel/libunwind +LIB_DEPENDS_powerpc64le= libunwind.so:devel/libunwind + +BUILD_DEPENDS= liblz4>0:archivers/liblz4 \ + ${BUILD_DEPENDS_${ARCH}} +BUILD_DEPENDS_aarch64= libunwind>0:devel/libunwind +BUILD_DEPENDS_amd64= libunwind>0:devel/libunwind +BUILD_DEPENDS_i386= libunwind>0:devel/libunwind +BUILD_DEPENDS_powerpc64= libunwind>0:devel/libunwind +BUILD_DEPENDS_powerpc64le= libunwind>0:devel/libunwind + +CMAKE_BUILD_TYPE= Release +CFLAGS+= -fPIC + +CMAKE_ARGS+= -DINSTALL_LAYOUT=FREEBSD \ + -DINSTALL_LDCONFIGDIR="${LOCALBASE}/libdata/ldconfig" \ + -DINSTALL_PKGCONFIGDIR="${LOCALBASE}/libdata/pkgconfig" \ + -DINSTALL_DOCDIR="share/doc/mysql" \ + -DINSTALL_DOCREADMEDIR="share/doc/mysql" \ + -DINSTALL_INCLUDEDIR="include/mysql" \ + -DINSTALL_INFODIR="${INFO_PATH}" \ + -DINSTALL_LIBDIR="lib/mysql" \ + -DINSTALL_MANDIR="man" \ + -DINSTALL_MYSQLDATADIR="${MY_DBDIR}" \ + -DINSTALL_MYSQLKEYRINGDIR="etc/mysql/keyring" \ + -DINSTALL_MYSQLSHAREDIR="share/mysql" \ + -DINSTALL_MYSQLTESTDIR="" \ + -DINSTALL_PLUGINDIR="lib/mysql/plugin" \ + -DINSTALL_SBINDIR="libexec" \ + -DINSTALL_SCRIPTDIR="bin" \ + -DINSTALL_SECURE_FILE_PRIVDIR="${MY_SECDIR}" \ + -DINSTALL_SHAREDIR="share" \ + -DINSTALL_SUPPORTFILESDIR="share/mysql" \ + -DMYSQL_KEYRINGDIR="${ETCDIR}/keyring" \ + -DWITH_BOOST="${WRKSRC}/boost" \ + -DWITH_SYSTEM_LIBS=1 \ + -DWITH_EDITLINE=system \ + -DWITH_LIBEVENT=system \ + -DWITH_LZ4=system \ + -DWITH_ICU=system \ + -DWITH_CURL=system \ + -DWITH_ZLIB=system \ + -DWITH_ZSTD=system \ + -DWITH_PROTOBUF=system \ + -DWITH_SSL=${OPENSSLBASE} \ + -DBUILD_BUNDLED_ZLIB=0 \ + -DBUILD_BUNDLED_LZ4=0 + +# The Mroonga, RocksDB, and TokuDB storage engines are disabled. +# Mroonga is only buildable on little endian archs. +# RocksDB is only buildable on little endian archs and requires POSIX timers. +# TokuDB is only buildable on 64-bit little endian archs. +CMAKE_ARGS+= -DWITHOUT_MROONGA_STORAGE_ENGINE=1 \ + -DWITHOUT_ROCKSDB_STORAGE_ENGINE=1 \ + -DWITHOUT_TOKUDB_STORAGE_ENGINE=1 + +SHEBANG_FILES= scripts/*.pl* scripts/*.sh + +.ifdef USE_MYSQL +IGNORE= You have `USE_MYSQL' variable defined either in environment or in make(1) arguments. Please undefine and try again. +.endif + +SUB_LIST= MY_DBDIR=${MY_DBDIR} \ + MY_SECDIR=${MY_SECDIR} \ + MY_TMPDIR=${MY_TMPDIR} + +PLIST_SUB= MY_DBDIR=${MY_DBDIR} \ + MY_SECDIR=${MY_SECDIR} \ + MY_TMPDIR=${MY_TMPDIR} \ + MYSQL80_LIBVER=${MYSQL80_LIBVER} + +# MySQL-Server part +.if !defined(CLIENT_ONLY) +USES+= mysql:80 + +CONFLICTS_INSTALL= mysql8[1-9]-server-* \ + mysql[0-79][0-9]-server-* \ + mysqlwsrep* \ + mariadb[0-9][0-9]-server-* \ + percona[0-9][0-9]-server-* + +USE_RC_SUBR= mysql-server + +SUB_FILES= my.cnf.sample pkg-message + +USERS= mysql +GROUPS= mysql + +USE_LDCONFIG+= ${PREFIX}/lib/mysql/plugin + +MMAN1= ibd2sdi.1 innochecksum.1 my_print_defaults.1 myisam_ftdump.1 myisamchk.1 \ + myisamlog.1 myisampack.1 mysql_secure_installation.1 mysql_ssl_rsa_setup.1 \ + mysql_tzinfo_to_sql.1 mysql_upgrade.1 mysql.server.1 mysqldumpslow.1 mysqld_multi.1 \ + mysqld_safe.1 mysqlrouter_passwd.1 mysqlrouter_plugin_info.1 mysqlrouter.1 +MMAN8= mysqld.8 + +CMAKE_ARGS+= -DWITH_EMBEDDED_SERVER="ON" +CMAKE_ARGS+= -DWITHOUT_CLIENTLIBS="ON" + +OPTIONS_GROUP= STORAGE +OPTIONS_GROUP_STORAGE= ARCHIVE BLACKHOLE EXAMPLE FEDERATED INNOBASE PARTITION PERFSCHEMA +OPTIONS_SUB= YES +STORAGE_DESC= Permissible "Storage Engines" (to compile statically into the server) +ARCHIVE_DESC= Compile "Archive Storage" statically in server +BLACKHOLE_DESC= Compile "Blackhole Storage" statically in server +EXAMPLE_DESC= Compile "Example Storage" statically in server +FEDERATED_DESC= Compile "Federated Storage" statically in server +INNOBASE_DESC= Compile "InnoDB Storage" statically in server +PARTITION_DESC= Compile "Partitioning support Storage" statically in server +PERFSCHEMA_DESC= Compile "Performance Schema Storage" statically in server + +ARCHIVE_CMAKE_ON= -DWITH_ARCHIVE_STORAGE_ENGINE=1 +BLACKHOLE_CMAKE_ON= -DWITH_BLACKHOLE_STORAGE_ENGINE=1 +EXAMPLE_CMAKE_ON= -DWITH_EXAMPLE_STORAGE_ENGINE=1 +FEDERATED_CMAKE_ON= -DWITH_FEDERATED_STORAGE_ENGINE=1 +INNOBASE_CMAKE_ON= -DWITH_INNOBASE_STORAGE_ENGINE=1 +PARTITION_CMAKE_ON= -DWITH_PARTITION_STORAGE_ENGINE=1 +PERFSCHEMA_CMAKE_ON= -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 + +OPTIONS_GROUP+= FEATURES +OPTIONS_GROUP_FEATURES= PERFSCHM +FEATURES_DESC= Default features knobs +PERFSCHM_DESC= Enable "Performance Schema" by default (High RAM usage) +OPTIONS_DEFAULT+= PERFSCHM + +PERFSCHM_SUB_LIST+= PERFSCHEMRC="" +PERFSCHM_SUB_LIST_OFF+= PERFSCHEMRC="--skip-performance-schema" +FEDERATED_SUB_LIST+= FEDER="--federated" +FEDERATED_SUB_LIST_OFF+= FEDER="" +.endif + +.include + +# Since 8.0.20 release innodb engine uses new memory alligned allocator +# which is broken on i386 due to different size of types and caused a +# 'static_assert(alignof(T) <= alignof(std::max_align_t))' error +.if ${ARCH} == i386 +CMAKE_ARGS+= -DDISABLE_PSI_MEMORY=1 +.endif + +.if ${OPSYS} == FreeBSD && ${OSVERSION} >= 1200057 +SUB_LIST+= LEGACY_LIMITS="@comment " MODERN_LIMITS="" +.else +SUB_LIST+= LEGACY_LIMITS="" MODERN_LIMITS="@comment " +.endif + +.include + +.if ${CHOSEN_COMPILER_TYPE} == clang && ${OPSYS} == FreeBSD && ${OSVERSION} >= 1300109 +BUILD_DEPENDS+= clang${LLVM_DEFAULT}:devel/llvm${LLVM_DEFAULT} +CC= ${LOCALBASE}/bin/clang${LLVM_DEFAULT} +CXX= ${LOCALBASE}/bin/clang++${LLVM_DEFAULT} +.endif + +post-extract: + @${RM} -rv ${WRKSRC}/sql/sql_hints.yy.cc ${WRKSRC}/sql/sql_hints.yy.h + +.if !defined(CLIENT_ONLY) +post-install: + ${MKDIR} ${STAGEDIR}${ETCDIR} + ${INSTALL_DATA} ${WRKDIR}/my.cnf.sample ${STAGEDIR}${ETCDIR}/my.cnf.sample + ${MKDIR} ${STAGEDIR}${ETCDIR}/keyring + ${MKDIR} ${STAGEDIR}${MY_SECDIR} + ${MKDIR} ${STAGEDIR}${MY_TMPDIR} +.endif + +.include diff --git a/databases/mysqlwsrep80-server/distinfo b/databases/mysqlwsrep80-server/distinfo new file mode 100644 index 0000000..d9f8892 --- /dev/null +++ b/databases/mysqlwsrep80-server/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1608572785 +SHA256 (mysql-wsrep-8.0.21-26.4.tar.gz) = e367b0545dc30aa119a22628e0c3a3f7a469399148800621968dea066c1b33e2 +SIZE (mysql-wsrep-8.0.21-26.4.tar.gz) = 285710964 diff --git a/databases/mysqlwsrep80-server/files/extra-patch-config.h.cmake b/databases/mysqlwsrep80-server/files/extra-patch-config.h.cmake new file mode 100644 index 0000000..3ac1add --- /dev/null +++ b/databases/mysqlwsrep80-server/files/extra-patch-config.h.cmake @@ -0,0 +1,12 @@ +--- config.h.cmake.orig 2014-12-05 16:24:02 UTC ++++ config.h.cmake +@@ -151,7 +151,8 @@ + #cmakedefine HAVE_FESETROUND 1 + #cmakedefine HAVE_FINITE 1 + #cmakedefine HAVE_FP_EXCEPT 1 +-#cmakedefine HAVE_FPSETMASK 1 ++#cmakedefine HAVE_FPSETMASK 0 ++#cmakedefine HAVE_FEDISABLEEXCEPT 1 + #cmakedefine HAVE_FSEEKO 1 + #cmakedefine HAVE_FSYNC 1 + #cmakedefine HAVE_FTIME 1 diff --git a/databases/mysqlwsrep80-server/files/my.cnf.sample.in b/databases/mysqlwsrep80-server/files/my.cnf.sample.in new file mode 100644 index 0000000..9d7abdd --- /dev/null +++ b/databases/mysqlwsrep80-server/files/my.cnf.sample.in @@ -0,0 +1,62 @@ +# $FreeBSD: head/databases/mysql80-server/files/my.cnf.sample.in 469734 2018-05-12 15:35:25Z mmokhi $ + +[client] +port = 3306 +socket = /tmp/mysql.sock + +[mysql] +prompt = \u@\h [\d]>\_ +no_auto_rehash + +[mysqld] +user = mysql +port = 3306 +socket = /tmp/mysql.sock +bind-address = 127.0.0.1 +basedir = %%PREFIX%% +datadir = %%MY_DBDIR%% +tmpdir = %%MY_TMPDIR%% +slave-load-tmpdir = %%MY_TMPDIR%% +secure-file-priv = %%MY_SECDIR%% +log-bin = mysql-bin +log-output = TABLE +master-info-repository = TABLE +relay-log-info-repository = TABLE +relay-log-recovery = 1 +slow-query-log = 1 +server-id = 1 +sync_binlog = 1 +sync_relay_log = 1 +binlog_cache_size = 16M +expire_logs_days = 30 +default_password_lifetime = 0 +enforce-gtid-consistency = 1 +gtid-mode = ON +safe-user-create = 1 +lower_case_table_names = 1 +explicit-defaults-for-timestamp = 1 +myisam-recover-options = BACKUP,FORCE +open_files_limit = 32768 +table_open_cache = 16384 +table_definition_cache = 8192 +net_retry_count = 16384 +key_buffer_size = 256M +max_allowed_packet = 64M +long_query_time = 0.5 +innodb_buffer_pool_size = 1G +innodb_data_home_dir = %%MY_DBDIR%% +innodb_log_group_home_dir = %%MY_DBDIR%% +innodb_data_file_path = ibdata1:128M:autoextend +innodb_temp_data_file_path = ibtmp1:128M:autoextend +innodb_flush_method = O_DIRECT +innodb_log_file_size = 256M +innodb_log_buffer_size = 16M +innodb_write_io_threads = 8 +innodb_read_io_threads = 8 +innodb_autoinc_lock_mode = 2 +skip-symbolic-links + +[mysqldump] +max_allowed_packet = 256M +quote_names +quick diff --git a/databases/mysqlwsrep80-server/files/mysql-server.in b/databases/mysqlwsrep80-server/files/mysql-server.in new file mode 100644 index 0000000..0ea44f3 --- /dev/null +++ b/databases/mysqlwsrep80-server/files/mysql-server.in @@ -0,0 +1,91 @@ +#!/bin/sh +# +# $FreeBSD: head/databases/mysql80-server/files/mysql-server.in 466508 2018-04-04 21:01:28Z mmokhi $ +# + +# PROVIDE: mysql +# REQUIRE: LOGIN +# KEYWORD: shutdown + +# +# Add the following line to /etc/rc.conf to enable mysql: +# mysql_enable (bool): Set to "NO" by default. +# Set it to "YES" to enable MySQL. +%%LEGACY_LIMITS%%# mysql_limits (bool): Set to "NO" by default. +%%LEGACY_LIMITS%%# Set it to yes to run `limits -e -U mysql` +%%LEGACY_LIMITS%%# just before mysql starts. +# mysql_dbdir (str): Default to "%%MY_DBDIR%%" +# Base database directory. +# mysql_confdir (str): Default to "%%ETCDIR%%" +# Base configuration directory. +# mysql_optfile (str): Server-specific option file. +# Set it in the rc.conf or default behaviour of +# `mysqld_safe` itself, will be picking +# ${mysql_confdir}/my.cnf if it exists. +# mysql_pidfile (str): Custum PID file path and name. +# Default to "${mysql_dbdir}/${hostname}.pid". +# mysql_args (str): Custom additional arguments to be passed +# to mysqld_safe (default empty). +# + +. /etc/rc.subr + +name="mysql" +rcvar=mysql_enable + +load_rc_config $name + +: ${mysql_enable="NO"} +%%LEGACY_LIMITS%%: ${mysql_limits="NO"} +: ${mysql_dbdir="%%MY_DBDIR%%"} +: ${mysql_confdir="%%ETCDIR%%"} +if [ -f "${mysql_confdir}/my.cnf" ]; then +: ${mysql_optfile="${mysql_confdir}/my.cnf"} +elif [ -f "${mysql_dbdir}/my.cnf" ]; then +: ${mysql_optfile="${mysql_dbdir}/my.cnf"} +fi +if [ ! -z "${mysql_optfile}" ]; then +mysql_extra="--defaults-extra-file=${mysql_optfile}" +fi + +mysql_user="mysql" +%%LEGACY_LIMITS%%mysql_limits_args="-e -U ${mysql_user}" +: ${hostname:=`/bin/hostname`} +pidfile=${mysql_pidfile:-"${mysql_dbdir}/${hostname}.pid"} +command="/usr/sbin/daemon" +command_args="-c -f %%PREFIX%%/bin/mysqld_safe ${mysql_extra} --basedir=%%PREFIX%% --datadir=${mysql_dbdir} --pid-file=${pidfile} --user=${mysql_user} ${mysql_args} %%FEDER%% %%PERFSCHEMRC%%" +procname="%%PREFIX%%/libexec/mysqld" +start_precmd="${name}_prestart" +start_postcmd="${name}_poststart" +mysqld_init="${procname}" +mysqld_init_args="${mysql_extra} --initialize-insecure --basedir=%%PREFIX%% --datadir=${mysql_dbdir} --user=${mysql_user}" + +mysql_create_auth_tables() +{ + eval $mysqld_init $mysqld_init_args >/dev/null 2>/dev/null +} + +mysql_prestart() +{ + if [ ! -d "${mysql_dbdir}/mysql/." ]; then + mysql_create_auth_tables || return 1 + fi +%%LEGACY_LIMITS%% if checkyesno mysql_limits; then +%%LEGACY_LIMITS%% eval `/usr/bin/limits ${mysql_limits_args}` 2>/dev/null +%%LEGACY_LIMITS%% else +%%LEGACY_LIMITS%% return 0 +%%LEGACY_LIMITS%% fi +%%MODERN_LIMITS%% return 0 +} + +mysql_poststart() +{ + local timeout=15 + while [ ! -f "${pidfile}" -a ${timeout} -gt 0 ]; do + timeout=$(( timeout - 1 )) + sleep 1 + done + return 0 +} + +run_rc_command "$1" diff --git a/databases/mysqlwsrep80-server/files/patch-CMakeLists.txt b/databases/mysqlwsrep80-server/files/patch-CMakeLists.txt new file mode 100644 index 0000000..1838577 --- /dev/null +++ b/databases/mysqlwsrep80-server/files/patch-CMakeLists.txt @@ -0,0 +1,76 @@ +--- CMakeLists.txt.orig 2020-09-23 12:37:48 UTC ++++ CMakeLists.txt +@@ -1417,10 +1417,10 @@ IF(WITH_AUTHENTICATION_LDAP) + ENDIF() + ENDIF() + +-# Add system/bundled editline. +-MYSQL_CHECK_EDITLINE() + # Add libevent +-MYSQL_CHECK_LIBEVENT() ++IF(NOT WITHOUT_SERVER) ++ MYSQL_CHECK_LIBEVENT() ++ENDIF() + # Add lz4 library + MYSQL_CHECK_LZ4() + # Add icu library +@@ -1520,7 +1520,9 @@ IF(WITH_UNIT_TESTS) + INCLUDE(googletest) + ENDIF() + +-ADD_SUBDIRECTORY(include) ++IF(NOT WITHOUT_CLIENTLIBS) ++ ADD_SUBDIRECTORY(include) ++ENDIF(NOT WITHOUT_CLIENTLIBS) + ADD_SUBDIRECTORY(strings) + ADD_SUBDIRECTORY(vio) + ADD_SUBDIRECTORY(mysys) +@@ -1562,12 +1564,17 @@ IF(WITH_UNIT_TESTS) + ADD_SUBDIRECTORY(unittest/mytap/t) + ENDIF() + +-ADD_SUBDIRECTORY(client) ++IF(NOT WITHOUT_TOOLS) ++ # Add system/bundled editline ++ MYSQL_CHECK_EDITLINE() ++ ADD_SUBDIRECTORY(client) ++ENDIF(NOT WITHOUT_TOOLS) ++ + ADD_SUBDIRECTORY(utilities) +-ADD_SUBDIRECTORY(share) + ADD_SUBDIRECTORY(libservices) + + IF(NOT WITHOUT_SERVER) ++ ADD_SUBDIRECTORY(share) + ADD_SUBDIRECTORY(testclients) + ADD_SUBDIRECTORY(sql) + ENDIF() +@@ -1590,11 +1597,11 @@ ENDIF() + # scripts/mysql_config depends on client and server targets loaded above. + # It is referenced by some of the directories below, so we insert it here. + ADD_SUBDIRECTORY(scripts) ++ADD_SUBDIRECTORY(support-files) + + IF(NOT WITHOUT_SERVER) + ADD_SUBDIRECTORY(mysql-test) + ADD_SUBDIRECTORY(mysql-test/lib/My/SafeProcess) +- ADD_SUBDIRECTORY(support-files) + IF(WITH_INTERNAL) + ADD_SUBDIRECTORY(internal) + ENDIF() +@@ -1703,6 +1710,7 @@ IF(PACK_SEPARATE_COMPONENTS) + SET(CPACK_COMPONENTS_GROUPING IGNORE) + ENDIF() + ++IF(FALSE) + IF(UNIX) + INSTALL(FILES + Docs/mysql.info +@@ -1737,6 +1745,7 @@ IF(NOT INSTALL_LAYOUT MATCHES "RPM") + PATTERN "sp-imp-spec.txt" EXCLUDE + PATTERN "README.build" EXCLUDE + ) ++ENDIF() + ENDIF() + + # Now that we're done with all ADD_SUBDIRECTORY and thus all feature tests, diff --git a/databases/mysqlwsrep80-server/files/patch-client_CMakeLists.txt b/databases/mysqlwsrep80-server/files/patch-client_CMakeLists.txt new file mode 100644 index 0000000..f713093 --- /dev/null +++ b/databases/mysqlwsrep80-server/files/patch-client_CMakeLists.txt @@ -0,0 +1,76 @@ +--- client/CMakeLists.txt.orig 2019-09-20 08:30:51 UTC ++++ client/CMakeLists.txt +@@ -23,8 +23,11 @@ + ## Subdirectory with common client code. + ADD_SUBDIRECTORY(base) + ## Subdirectory for mysqlpump code. ++IF(WITHOUT_SERVER) + ADD_SUBDIRECTORY(dump) ++ENDIF() + ++IF(NOT WITHOUT_CLIENTLIBS) + MYSQL_ADD_EXECUTABLE(mysql + ${CMAKE_SOURCE_DIR}/sql-common/net_ns.cc + completion_hash.cc +@@ -33,6 +36,7 @@ MYSQL_ADD_EXECUTABLE(mysql + readline.cc + LINK_LIBRARIES mysqlclient client_base ${EDITLINE_LIBRARY} + ) ++ENDIF() + + IF(NOT WITHOUT_SERVER) + MYSQL_ADD_EXECUTABLE(mysql_upgrade +@@ -48,6 +52,7 @@ IF(SOLARIS_SPARC AND CMAKE_BUILD_TYPE_UPPER STREQUAL " + ) + ENDIF() + ++IF(NOT WITHOUT_SERVER) + MYSQL_ADD_EXECUTABLE(mysqltest + mysqltest.cc + mysqltest/error_names.cc +@@ -63,6 +68,9 @@ MYSQL_ADD_EXECUTABLE(mysqltest + ENABLE_EXPORTS + LINK_LIBRARIES mysqlclient + ) ++ENDIF() ++ ++IF(WITHOUT_SERVER) + MYSQL_ADD_EXECUTABLE(mysqlcheck + check/mysqlcheck.cc + check/mysqlcheck_core.cc +@@ -80,6 +88,7 @@ MYSQL_ADD_EXECUTABLE(mysqlshow + mysqlshow.cc + LINK_LIBRARIES mysqlclient + ) ++ + MYSQL_ADD_EXECUTABLE(mysqlbinlog + mysqlbinlog.cc + ${CMAKE_SOURCE_DIR}/sql/json_binary.cc +@@ -104,7 +113,9 @@ MYSQL_ADD_EXECUTABLE(mysqlbinlog + + TARGET_COMPILE_DEFINITIONS(mysqlbinlog PRIVATE DISABLE_PSI_MUTEX) + TARGET_INCLUDE_DIRECTORIES(mysqlbinlog PRIVATE ${CMAKE_SOURCE_DIR}/sql) ++ENDIF() + ++IF(WITHOUT_SERVER) + MYSQL_ADD_EXECUTABLE(mysqladmin + mysqladmin.cc + LINK_LIBRARIES mysqlclient +@@ -117,6 +128,9 @@ MYSQL_ADD_EXECUTABLE(mysql_config_editor + mysql_config_editor.cc + LINK_LIBRARIES mysqlclient + ) ++ENDIF() ++ ++IF(NOT WITHOUT_SERVER) + MYSQL_ADD_EXECUTABLE(mysql_secure_installation + mysql_secure_installation.cc + LINK_LIBRARIES mysqlclient +@@ -127,6 +141,7 @@ MYSQL_ADD_EXECUTABLE(mysql_ssl_rsa_setup + path.cc + LINK_LIBRARIES mysys + ) ++ENDIF() + + # "WIN32" also covers 64 bit. "echo" is used in some files below "mysql-test/". + IF(WIN32) diff --git a/databases/mysqlwsrep80-server/files/patch-cmake_install_layout.cmake b/databases/mysqlwsrep80-server/files/patch-cmake_install_layout.cmake new file mode 100644 index 0000000..927729d --- /dev/null +++ b/databases/mysqlwsrep80-server/files/patch-cmake_install_layout.cmake @@ -0,0 +1,95 @@ +--- cmake/install_layout.cmake.orig 2019-12-09 19:53:17 UTC ++++ cmake/install_layout.cmake +@@ -41,6 +41,10 @@ + # Build with prefix=/usr/local/mysql, create tarball with install prefix="." + # and relative links. + # ++# FREEBSD ++# Build with prefix=/usr/local, create tarball with install prefix="." ++# and relative links. ++# + # To force a directory layout, use -DINSTALL_LAYOUT=. + # + # The default is STANDALONE. +@@ -80,7 +84,7 @@ IF(NOT INSTALL_LAYOUT) + ENDIF() + + SET(INSTALL_LAYOUT "${DEFAULT_INSTALL_LAYOUT}" +- CACHE STRING "Installation directory layout. Options are: TARGZ (as in tar.gz installer), STANDALONE, RPM, DEB, SVR4" ++ CACHE STRING "Installation directory layout. Options are: TARGZ (as in tar.gz installer), STANDALONE, FREEBSD, RPM, DEB, SVR4" + ) + + IF(UNIX) +@@ -98,7 +102,7 @@ IF(UNIX) + CACHE PATH "install prefix" FORCE) + ENDIF() + SET(VALID_INSTALL_LAYOUTS +- "RPM" "DEB" "SVR4" "TARGZ" "STANDALONE") ++ "RPM" "DEB" "SVR4" "TARGZ" "FREEBSD" "STANDALONE") + LIST(FIND VALID_INSTALL_LAYOUTS "${INSTALL_LAYOUT}" ind) + IF(ind EQUAL -1) + MESSAGE(FATAL_ERROR "Invalid INSTALL_LAYOUT parameter:${INSTALL_LAYOUT}." +@@ -167,6 +171,32 @@ SET(INSTALL_MYSQLKEYRINGDIR_STANDALONE "keyring") + SET(INSTALL_SECURE_FILE_PRIVDIR_STANDALONE ${secure_file_priv_path}) + + # ++# FREEBSD layout ++# ++SET(INSTALL_BINDIR_FREEBSD "bin") ++SET(INSTALL_SBINDIR_FREEBSD "bin") ++# ++SET(INSTALL_LIBDIR_FREEBSD "lib") ++SET(INSTALL_PRIV_LIBDIR_FREEBSD "lib/private") ++SET(INSTALL_PLUGINDIR_FREEBSD "lib/plugin") ++# ++SET(INSTALL_INCLUDEDIR_FREEBSD "include") ++# ++SET(INSTALL_DOCDIR_FREEBSD "docs") ++SET(INSTALL_DOCREADMEDIR_FREEBSD ".") ++SET(INSTALL_MANDIR_FREEBSD "man") ++SET(INSTALL_INFODIR_FREEBSD "docs") ++# ++SET(INSTALL_SHAREDIR_FREEBSD "share") ++SET(INSTALL_MYSQLSHAREDIR_FREEBSD "share") ++SET(INSTALL_MYSQLTESTDIR_FREEBSD "mysql-test") ++SET(INSTALL_SUPPORTFILESDIR_FREEBSD "support-files") ++# ++SET(INSTALL_MYSQLDATADIR_FREEBSD "data") ++SET(INSTALL_MYSQLKEYRINGDIR_FREEBSD "keyring") ++SET(INSTALL_SECURE_FILE_PRIVDIR_FREEBSD ${secure_file_priv_path}) ++ ++# + # TARGZ layout + # + SET(INSTALL_BINDIR_TARGZ "bin") +@@ -361,7 +391,7 @@ ENDIF() + SET(ROUTER_INSTALL_LAYOUT "${DEFAULT_ROUTER_INSTALL_LAYOUT}" + CACHE + STRING +- "Installation directory layout. Options are: STANDALONE RPM DEB SVR4 TARGZ") ++ "Installation directory layout. Options are: STANDALONE FREEBSD RPM DEB SVR4 TARGZ") + + # If we are shared STANDALONE with the the server, we shouldn't write + # into the server's data/ as that would create a "schemadir" in +@@ -405,6 +435,21 @@ FOREACH(var + ) + SET(ROUTER_INSTALL_${var}DIR_TARGZ ${ROUTER_INSTALL_${var}DIR_STANDALONE}) + ENDFOREACH() ++ ++# ++# FreeBSD layout ++# ++SET(ROUTER_INSTALL_CONFIGDIR_FREEBSD "/usr/local/etc/mysqlrouter") ++SET(ROUTER_INSTALL_DATADIR_FREEBSD "/var/db/mysqlrouter") ++SET(ROUTER_INSTALL_LOGDIR_FREEBSD "/var/log/mysqlrouter") ++SET(ROUTER_INSTALL_RUNTIMEDIR_FREEBSD "/var/run/mysqlrouter") ++ ++SET(ROUTER_INSTALL_BINDIR_FREEBSD "bin") ++SET(ROUTER_INSTALL_LIBDIR_FREEBSD "lib/mysql") ++SET(ROUTER_INSTALL_PLUGINDIR_FREEBSD "lib/mysql/mysqlrouter") ++SET(ROUTER_INSTALL_LOGROTATEDIR_FREEBSD "etc/logrotate.d") ++SET(ROUTER_INSTALL_LOGROTATEFILE_FREEBSD "mysqlrouter") ++SET(ROUTER_INSTALL_DOCDIR_FREEBSD "share/mysqlrouter/docs") + + FOREACH(var + LOGROTATE diff --git a/databases/mysqlwsrep80-server/files/patch-cmake_os_DragonFly.cmake b/databases/mysqlwsrep80-server/files/patch-cmake_os_DragonFly.cmake new file mode 100644 index 0000000..83c154e --- /dev/null +++ b/databases/mysqlwsrep80-server/files/patch-cmake_os_DragonFly.cmake @@ -0,0 +1,27 @@ +--- cmake/os/DragonFly.cmake.orig 2016-04-14 10:16:17 UTC ++++ cmake/os/DragonFly.cmake +@@ -0,0 +1,24 @@ ++INCLUDE(CheckCSourceRuns) ++ ++# We require at least GCC 4.4 or Clang 3.3. ++IF(NOT FORCE_UNSUPPORTED_COMPILER) ++ IF(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() ++ ELSEIF(CMAKE_C_COMPILER_ID MATCHES "Clang") ++ CHECK_C_SOURCE_RUNS(" ++ int main() ++ { ++ return (__clang_major__ < 3) || ++ (__clang_major__ == 3 && __clang_minor__ < 3); ++ }" HAVE_SUPPORTED_CLANG_VERSION) ++ IF(NOT HAVE_SUPPORTED_CLANG_VERSION) ++ MESSAGE(FATAL_ERROR "Clang 3.3 or newer is required!") ++ ENDIF() ++ ELSE() ++ MESSAGE(FATAL_ERROR "Unsupported compiler!") ++ ENDIF() ++ENDIF() diff --git a/databases/mysqlwsrep80-server/files/patch-cmake_os_FreeBSD.cmake b/databases/mysqlwsrep80-server/files/patch-cmake_os_FreeBSD.cmake new file mode 100644 index 0000000..2f6f488 --- /dev/null +++ b/databases/mysqlwsrep80-server/files/patch-cmake_os_FreeBSD.cmake @@ -0,0 +1,25 @@ +--- cmake/os/FreeBSD.cmake.orig 2019-09-20 08:30:51 UTC ++++ cmake/os/FreeBSD.cmake +@@ -45,8 +45,20 @@ IF(NOT FORCE_UNSUPPORTED_COMPILER) + MESSAGE(FATAL_ERROR + "GCC 5.3 or newer is required (-dumpversion says ${GCC_VERSION})") + 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() + diff --git a/databases/mysqlwsrep80-server/files/patch-cmake_plugin.cmake b/databases/mysqlwsrep80-server/files/patch-cmake_plugin.cmake new file mode 100644 index 0000000..ecd2598 --- /dev/null +++ b/databases/mysqlwsrep80-server/files/patch-cmake_plugin.cmake @@ -0,0 +1,27 @@ +--- cmake/plugin.cmake.orig 2019-09-20 08:30:51 UTC ++++ cmake/plugin.cmake +@@ -230,15 +230,15 @@ MACRO(MYSQL_ADD_PLUGIN plugin_arg) + + # For testing purposes, we need + # <...>/lib/plugin/debug/authentication_ldap_sasl_client.so +- IF(ARG_CLIENT_ONLY) +- INSTALL_DEBUG_TARGET(${target} +- DESTINATION ${INSTALL_PLUGINDIR}/debug +- COMPONENT Test) +- ELSE() +- INSTALL_DEBUG_TARGET(${target} +- DESTINATION ${INSTALL_PLUGINDIR}/debug +- COMPONENT ${INSTALL_COMPONENT}) +- ENDIF() ++# IF(ARG_CLIENT_ONLY) ++# INSTALL_DEBUG_TARGET(${target} ++# DESTINATION ${INSTALL_PLUGINDIR}/debug ++# COMPONENT Test) ++# ELSE() ++# INSTALL_DEBUG_TARGET(${target} ++# DESTINATION ${INSTALL_PLUGINDIR}/debug ++# COMPONENT ${INSTALL_COMPONENT}) ++# ENDIF() + ENDIF() + ELSE() + IF(WITHOUT_${plugin}) diff --git a/databases/mysqlwsrep80-server/files/patch-cmake_ssl.cmake b/databases/mysqlwsrep80-server/files/patch-cmake_ssl.cmake new file mode 100644 index 0000000..e35e3f0 --- /dev/null +++ b/databases/mysqlwsrep80-server/files/patch-cmake_ssl.cmake @@ -0,0 +1,28 @@ +--- cmake/ssl.cmake.orig 2019-09-20 08:30:51 UTC ++++ cmake/ssl.cmake +@@ -199,7 +199,7 @@ MACRO (MYSQL_CHECK_SSL) + # Encoded as MNNFFPPS: major minor fix patch status + FILE(STRINGS "${OPENSSL_INCLUDE_DIR}/openssl/opensslv.h" + OPENSSL_VERSION_NUMBER +- REGEX "^#[ ]*define[\t ]+OPENSSL_VERSION_NUMBER[\t ]+0x[0-9].*" ++ REGEX "^#[\t ]*define[\t ]+OPENSSL_VERSION_NUMBER[\t ]+0x[0-9].*" + ) + STRING(REGEX REPLACE + "^.*OPENSSL_VERSION_NUMBER[\t ]+0x([0-9]).*$" "\\1" +@@ -214,13 +214,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 diff --git a/databases/mysqlwsrep80-server/files/patch-icu68 b/databases/mysqlwsrep80-server/files/patch-icu68 new file mode 100644 index 0000000..89f0f9b --- /dev/null +++ b/databases/mysqlwsrep80-server/files/patch-icu68 @@ -0,0 +1,17 @@ +Regressed by https://github.com/unicode-org/icu/commit/c3fe7e09d844 + +sql/mysqld.cc:6915:30: error: use of undeclared identifier 'TRUE' + my_getopt_skip_unknown = TRUE; + ^ + +--- sql/mysqld.cc.orig 2020-06-16 16:31:03 UTC ++++ sql/mysqld.cc +@@ -6910,7 +6912,7 @@ int mysqld_main(int argc, char **argv) + if (opt_keyring_migration_source || opt_keyring_migration_destination || + migrate_connect_options) { + Migrate_keyring mk; +- my_getopt_skip_unknown = TRUE; ++ my_getopt_skip_unknown = true; + if (mk.init(remaining_argc, remaining_argv, opt_keyring_migration_source, + opt_keyring_migration_destination, opt_keyring_migration_user, + opt_keyring_migration_host, opt_keyring_migration_password, diff --git a/databases/mysqlwsrep80-server/files/patch-include_CMakeLists.txt b/databases/mysqlwsrep80-server/files/patch-include_CMakeLists.txt new file mode 100644 index 0000000..11fed60 --- /dev/null +++ b/databases/mysqlwsrep80-server/files/patch-include_CMakeLists.txt @@ -0,0 +1,176 @@ +--- include/CMakeLists.txt.orig 2019-12-09 19:53:17 UTC ++++ include/CMakeLists.txt +@@ -37,10 +37,173 @@ SET(HEADERS + ${CMAKE_CURRENT_BINARY_DIR}/mysql_version.h + ${CMAKE_CURRENT_BINARY_DIR}/mysqld_error.h + field_types.h ++ base64.h ++ big_endian.h ++ c_string_less.h ++ crypt_genhash_impl.h ++ decimal.h ++ depth_first_search.h ++ dur_prop.h ++ errmsg.h ++ ft_global.h ++ guard.h ++ heap.h ++ integer_digits.h ++ keycache.h ++ lex_string.h ++ lf.h ++ little_endian.h ++ m_ctype.h ++ m_string.h ++ map_helpers.h ++ mf_wcomp.h ++ mutex_lock.h ++ my_aes.h ++ my_alloc.h ++ my_atomic.h ++ my_base.h ++ my_bit.h ++ my_bitmap.h ++ my_byteorder.h ++ my_check_opt.h ++ my_command.h ++ my_compare.h ++ my_compiler.h ++ my_dbug.h ++ my_default.h ++ my_dir.h ++ my_double2ulonglong.h ++ my_getopt.h ++ my_hash_combine.h ++ my_icp.h ++ my_inttypes.h ++ my_io.h ++ my_list.h ++ my_loglevel.h ++ my_macros.h ++ my_md5.h ++ my_md5_size.h ++ my_murmur3.h ++ my_pointer_arithmetic.h ++ my_psi_config.h ++ my_rapidjson_size_t.h ++ my_rdtsc.h ++ my_rnd.h ++ my_sharedlib.h ++ my_shm_defaults.h ++ my_sqlcommand.h ++ my_stacktrace.h ++ my_sys.h ++ my_systime.h ++ my_table_map.h ++ my_thread.h ++ my_thread_local.h ++ my_thread_os_id.h ++ my_time.h ++ my_timer.h ++ my_tree.h ++ my_uctype.h ++ my_user.h ++ my_xml.h ++ myisam.h ++ myisammrg.h ++ myisampack.h ++ mysql.h ++ mysql.h.pp ++ mysql_com.h ++ mysql_com_server.h ++ mysql_time.h ++ mysql_version.h.in ++ mysys_err.h ++ nullable.h ++ password.h ++ pfs_cond_provider.h ++ pfs_error_provider.h ++ pfs_file_provider.h ++ pfs_idle_provider.h ++ pfs_memory_provider.h ++ pfs_metadata_provider.h ++ pfs_mutex_provider.h ++ pfs_rwlock_provider.h ++ pfs_socket_provider.h ++ pfs_stage_provider.h ++ pfs_statement_provider.h ++ pfs_table_provider.h ++ pfs_thread_provider.h ++ pfs_transaction_provider.h ++ prealloced_array.h ++ print_version.h ++ priority_queue.h ++ rwlock_scoped_lock.h ++ scope_guard.h ++ service_versions.h ++ sha1.h ++ sha2.h ++ sql_chars.h ++ sql_common.h ++ sql_string.h ++ sslopt-case.h ++ sslopt-longopts.h ++ sslopt-vars.h ++ tables_contained_in.h ++ template_utils.h ++ thr_cond.h ++ thr_lock.h ++ thr_mutex.h ++ thr_rwlock.h ++ typelib.h ++ varlen_sort.h ++ violite.h ++ welcome_copyright_notice.h + ) + SET(HEADERS_MYSQL_DIR + mysql/client_plugin.h + mysql/plugin_auth_common.h ++ mysql/udf_registration_types.h ++ mysql/client_authentication.h ++ mysql/client_plugin.h.pp ++ mysql/com_data.h ++ mysql/group_replication_priv.h ++ mysql/innodb_priv.h ++ mysql/mysql_lex_string.h ++ mysql/plugin.h ++ mysql/plugin_audit.h ++ mysql/plugin_audit.h.pp ++ mysql/plugin_auth.h ++ mysql/plugin_auth.h.pp ++ mysql/plugin_auth_common.h ++ mysql/plugin_ftparser.h ++ mysql/plugin_ftparser.h.pp ++ mysql/plugin_group_replication.h ++ mysql/plugin_keyring.h ++ mysql/plugin_keyring.h.pp ++ mysql/plugin_query_rewrite.h ++ mysql/plugin_trace.h ++ mysql/plugin_validate_password.h ++ mysql/service_command.h ++ mysql/service_locking.h ++ mysql/service_my_plugin_log.h ++ mysql/service_mysql_alloc.h ++ mysql/service_mysql_keyring.h ++ mysql/service_mysql_password_policy.h ++ mysql/service_mysql_string.h ++ mysql/service_parser.h ++ mysql/service_plugin_registry.h ++ mysql/service_rpl_transaction_ctx.h ++ mysql/service_rpl_transaction_write_set.h ++ mysql/service_rules_table.h ++ mysql/service_security_context.h ++ mysql/service_srv_session.h ++ mysql/service_srv_session_info.h ++ mysql/service_ssl_wrapper.h ++ mysql/service_thd_alloc.h ++ mysql/service_thd_engine_lock.h ++ mysql/service_thd_wait.h ++ mysql/service_thread_scheduler.h ++ mysql/services.h ++ mysql/services.h.pp ++ mysql/thread_pool_priv.h ++ mysql/thread_type.h + mysql/udf_registration_types.h + ) + diff --git a/databases/mysqlwsrep80-server/files/patch-include_my__compare.h b/databases/mysqlwsrep80-server/files/patch-include_my__compare.h new file mode 100644 index 0000000..83e2c6f --- /dev/null +++ b/databases/mysqlwsrep80-server/files/patch-include_my__compare.h @@ -0,0 +1,11 @@ +--- include/my_compare.h.orig 2019-09-20 08:30:51 UTC ++++ include/my_compare.h +@@ -49,7 +49,7 @@ + But beware the dependency of MI_MAX_POSSIBLE_KEY_BUFF and HA_MAX_KEY_LENGTH. + */ + +-#define HA_MAX_KEY_LENGTH 1000 /* Max length in bytes */ ++#define HA_MAX_KEY_LENGTH 4000 /* Max length in bytes */ + #define HA_MAX_KEY_SEG 16 /* Max segments for key */ + + #define HA_MAX_POSSIBLE_KEY_BUFF (HA_MAX_KEY_LENGTH + 24 + 6 + 6) diff --git a/databases/mysqlwsrep80-server/files/patch-include_my__stacktrace.h b/databases/mysqlwsrep80-server/files/patch-include_my__stacktrace.h new file mode 100644 index 0000000..372aec2 --- /dev/null +++ b/databases/mysqlwsrep80-server/files/patch-include_my__stacktrace.h @@ -0,0 +1,11 @@ +--- include/my_stacktrace.h.orig 2020-01-23 19:43:07.769584000 +0100 ++++ include/my_stacktrace.h 2020-01-23 19:43:48.684042000 +0100 +@@ -43,7 +43,7 @@ + HAVE_BACKTRACE - Linux, FreeBSD, OSX, Solaris + _WIN32 - Windows + */ +-#if defined(HAVE_BACKTRACE) || defined(_WIN32) ++#if (defined(HAVE_BACKTRACE) || defined(_WIN32)) && (defined(__aarch64__) || defined(__amd64__) || defined(__i386__)) + #define HAVE_STACKTRACE 1 + void my_init_stacktrace(); + void my_print_stacktrace(uchar *stack_bottom, ulong thread_stack); diff --git a/databases/mysqlwsrep80-server/files/patch-include_my__thread__os__id.h b/databases/mysqlwsrep80-server/files/patch-include_my__thread__os__id.h new file mode 100644 index 0000000..56af9be --- /dev/null +++ b/databases/mysqlwsrep80-server/files/patch-include_my__thread__os__id.h @@ -0,0 +1,15 @@ +--- include/my_thread_os_id.h.orig 2019-09-20 08:30:51 UTC ++++ include/my_thread_os_id.h +@@ -84,8 +84,12 @@ static inline my_thread_os_id_t my_thread_os_id() { + return pthread_getthreadid_np(); + #else + #ifdef HAVE_INTEGER_PTHREAD_SELF ++# ifdef __DragonFly__ ++ return syscall(SYS_lwp_gettid); ++# else + /* Unknown platform, fallback. */ + return pthread_self(); ++# endif + #else + /* Feature not available. */ + return 0; diff --git a/databases/mysqlwsrep80-server/files/patch-include_myisam.h b/databases/mysqlwsrep80-server/files/patch-include_myisam.h new file mode 100644 index 0000000..b8f3ec7 --- /dev/null +++ b/databases/mysqlwsrep80-server/files/patch-include_myisam.h @@ -0,0 +1,11 @@ +--- include/myisam.h.orig 2019-09-20 08:30:51 UTC ++++ include/myisam.h +@@ -59,7 +59,7 @@ + The following defines can be increased if necessary. + But beware the dependency of MI_MAX_POSSIBLE_KEY_BUFF and MI_MAX_KEY_LENGTH. + */ +-#define MI_MAX_KEY_LENGTH 1000 /* Max length in bytes */ ++#define MI_MAX_KEY_LENGTH 4000 /* Max length in bytes */ + #define MI_MAX_KEY_SEG 16 /* Max segments for key */ + + #define MI_MAX_KEY_BUFF (MI_MAX_KEY_LENGTH + MI_MAX_KEY_SEG * 6 + 8 + 8) diff --git a/databases/mysqlwsrep80-server/files/patch-include_violite.h b/databases/mysqlwsrep80-server/files/patch-include_violite.h new file mode 100644 index 0000000..78d606a --- /dev/null +++ b/databases/mysqlwsrep80-server/files/patch-include_violite.h @@ -0,0 +1,14 @@ +--- include/violite.h.orig 2019-09-20 08:30:51 UTC ++++ include/violite.h +@@ -269,9 +269,11 @@ struct st_VioSSLFd *new_VioSSLConnectorFd( + + long process_tls_version(const char *tls_version); + ++#ifndef LIBRESSL_VERSION_NUMBER + int set_fips_mode(const uint fips_mode, char *err_string); + + uint get_fips_mode(); ++#endif + + struct st_VioSSLFd *new_VioSSLAcceptorFd( + const char *key_file, const char *cert_file, const char *ca_file, diff --git a/databases/mysqlwsrep80-server/files/patch-libmysql_CMakeLists.txt b/databases/mysqlwsrep80-server/files/patch-libmysql_CMakeLists.txt new file mode 100644 index 0000000..d9cd7cd --- /dev/null +++ b/databases/mysqlwsrep80-server/files/patch-libmysql_CMakeLists.txt @@ -0,0 +1,69 @@ +--- libmysql/CMakeLists.txt.orig 2019-09-20 08:30:51 UTC ++++ libmysql/CMakeLists.txt +@@ -192,6 +192,11 @@ IF (WIN32 AND OPENSSL_APPLINK_C) + ) + ENDIF() + ++INCLUDE(${MYSQL_CMAKE_SCRIPT_DIR}/compile_flags.cmake) ++IF (CMAKE_SYSTEM_NAME STREQUAL "FreeBSD") ++ ADD_COMPILE_FLAGS(${CLIENT_SOURCES} COMPILE_FLAGS "-fPIC") ++ENDIF() ++ + # + # Include protocol tracing infrastructure and the test + # trace plugin if enabled by build options. +@@ -242,11 +247,18 @@ IF(WIN32) + LIST(APPEND LIBS_TO_MERGE auth_win_client) + ENDIF() + +-# LDAP authentication SASL client plugin +-ADD_SUBDIRECTORY(authentication_ldap) ++IF(WITHOUT_CLIENTLIBS) ++ # Merge several convenience libraries into one big mysqlclient ++ MERGE_CONVENIENCE_LIBRARIES(mysqlclient ${LIBS_TO_MERGE} COMPONENT Development SKIP_INSTALL) ++ELSE(WITHOUT_CLIENTLIBS) ++ # LDAP authentication SASL client plugin ++ MESSAGE(STATUS "Creating LDAP authentication SASL client library.") ++ ADD_SUBDIRECTORY(authentication_ldap) + +-# Merge several convenience libraries into one big mysqlclient +-MERGE_CONVENIENCE_LIBRARIES(mysqlclient ${LIBS_TO_MERGE} COMPONENT Development) ++ # Merge several convenience libraries into one big mysqlclient ++ MERGE_CONVENIENCE_LIBRARIES(mysqlclient ${LIBS_TO_MERGE} COMPONENT Development) ++ENDIF(WITHOUT_CLIENTLIBS) ++ + TARGET_LINK_LIBRARIES(mysqlclient PRIVATE ${LIBS_TO_LINK}) + + # Visual Studio users need debug static library for debug projects +@@ -281,12 +291,22 @@ ENDIF() + + # Merge several convenience libraries into one big mysqlclient + # and link them together into shared library. ++IF(WITHOUT_CLIENTLIBS) + MERGE_LIBRARIES_SHARED(libmysql ${LIBS_TO_MERGE} + EXPORTS + ${CLIENT_API_FUNCTIONS} + ${CLIENT_API_FUNCTIONS_UNDOCUMENTED} + ${CLIENT_API_NONBLOCKING_FUNCTIONS} ++ COMPONENT SharedLibraries ++ SKIP_INSTALL ) ++ELSE(WITHOUT_CLIENTLIBS) ++MERGE_LIBRARIES_SHARED(libmysql ${LIBS_TO_MERGE} ++ EXPORTS ++ ${CLIENT_API_FUNCTIONS} ++ ${CLIENT_API_FUNCTIONS_UNDOCUMENTED} ++ ${CLIENT_API_NONBLOCKING_FUNCTIONS} + COMPONENT SharedLibraries) ++ENDIF(WITHOUT_CLIENTLIBS) + TARGET_LINK_LIBRARIES(libmysql PRIVATE ${LIBS_TO_LINK}) + + IF(WIN32) +@@ -300,7 +320,7 @@ ENDIF() + + IF(UNIX) + # libtool compatability +- IF(FREEBSD OR APPLE) ++ IF(FREEBSD OR APPLE OR CMAKE_SYSTEM_NAME MATCHES "FreeBSD|DragonFly") + SET(OS_SHARED_LIB_VERSION "${SHARED_LIB_MAJOR_VERSION}") + ELSE() + SET(OS_SHARED_LIB_VERSION diff --git a/databases/mysqlwsrep80-server/files/patch-libservices_CMakeLists.txt b/databases/mysqlwsrep80-server/files/patch-libservices_CMakeLists.txt new file mode 100644 index 0000000..1fa50bd --- /dev/null +++ b/databases/mysqlwsrep80-server/files/patch-libservices_CMakeLists.txt @@ -0,0 +1,12 @@ +--- libservices/CMakeLists.txt.orig 2019-09-20 08:30:51 UTC ++++ libservices/CMakeLists.txt +@@ -45,7 +45,9 @@ SET(MYSQLSERVICES_SOURCES + plugin_registry_service.c) + + ADD_LIBRARY(mysqlservices STATIC ${MYSQLSERVICES_SOURCES}) ++IF(FALSE) + IF(INSTALL_STATIC_LIBRARIES) + INSTALL(TARGETS mysqlservices + DESTINATION ${INSTALL_LIBDIR} COMPONENT Development) ++ENDIF() + ENDIF() diff --git a/databases/mysqlwsrep80-server/files/patch-man_CMakeLists.txt b/databases/mysqlwsrep80-server/files/patch-man_CMakeLists.txt new file mode 100644 index 0000000..d624bab --- /dev/null +++ b/databases/mysqlwsrep80-server/files/patch-man_CMakeLists.txt @@ -0,0 +1,71 @@ +--- man/CMakeLists.txt.orig 2020-10-20 11:47:42.675974000 +0200 ++++ man/CMakeLists.txt 2020-10-20 13:53:03.993879000 +0200 +@@ -23,21 +23,10 @@ + # Copy man pages + SET(MAN1 + comp_err.1 +- ibd2sdi.1 +- innochecksum.1 + lz4_decompress.1 +- my_print_defaults.1 +- myisam_ftdump.1 +- myisamchk.1 +- myisamlog.1 +- myisampack.1 + mysql.1 + mysql_config.1 + mysql_config_editor.1 +- mysql_secure_installation.1 +- mysql_ssl_rsa_setup.1 +- mysql_tzinfo_to_sql.1 +- mysql_upgrade.1 + mysqladmin.1 + mysqlbinlog.1 + mysqlcheck.1 +@@ -52,13 +41,23 @@ SET(MAN1 + zlib_decompress.1 + ) + +-IF(NOT WITH_SYSTEMD) +- LIST(APPEND MAN1 +- mysql.server.1 +- mysqld_multi.1 +- mysqld_safe.1 ++SET(MAN1_TOOLS ++ ibd2sdi.1 ++ innochecksum.1 ++ my_print_defaults.1 ++ myisam_ftdump.1 ++ myisamchk.1 ++ myisamlog.1 ++ myisampack.1 ++ mysql.server.1 ++ mysql_secure_installation.1 ++ mysql_ssl_rsa_setup.1 ++ mysql_tzinfo_to_sql.1 ++ mysql_upgrade.1 ++ mysqldumpslow.1 ++ mysqld_multi.1 ++ mysqld_safe.1 + ) +-ENDIF() + + SET(MAN1_NDB + ndb-common-options.1 +@@ -105,8 +104,14 @@ SET(MAN8_NDB + ndbmtd.8 + ) + +-INSTALL(FILES ${MAN1} DESTINATION ${INSTALL_MANDIR}/man1 COMPONENT ManPages) +-INSTALL(FILES ${MAN8} DESTINATION ${INSTALL_MANDIR}/man8 COMPONENT ManPages) ++IF(NOT WITHOUT_CLIENTLIBS) ++ INSTALL(FILES ${MAN1} DESTINATION ${INSTALL_MANDIR}/man1 COMPONENT ManPages) ++ENDIF() ++ ++IF(NOT WITHOUT_SERVER) ++ INSTALL(FILES ${MAN1_TOOLS} DESTINATION ${INSTALL_MANDIR}/man1 COMPONENT ManPages) ++ INSTALL(FILES ${MAN8} DESTINATION ${INSTALL_MANDIR}/man8 COMPONENT ManPages) ++ENDIF() + + IF(WITH_ROUTER) + INSTALL(FILES ${MAN1_ROUTER} diff --git a/databases/mysqlwsrep80-server/files/patch-mysys_my__default.cc b/databases/mysqlwsrep80-server/files/patch-mysys_my__default.cc new file mode 100644 index 0000000..ffc76b7 --- /dev/null +++ b/databases/mysqlwsrep80-server/files/patch-mysys_my__default.cc @@ -0,0 +1,62 @@ +--- mysys/my_default.cc.orig 2019-09-20 08:30:51 UTC ++++ mysys/my_default.cc +@@ -203,7 +203,7 @@ bool no_defaults = false; + + /* Which directories are searched for options (and in which order) */ + +-#define MAX_DEFAULT_DIRS 6 ++#define MAX_DEFAULT_DIRS 7 + #define DEFAULT_DIRS_SIZE (MAX_DEFAULT_DIRS + 1) /* Terminate with NULL */ + static const char **default_directories = NULL; + +@@ -909,6 +909,14 @@ static int search_default_file_with_ext(Process_option + return 1; /* Ignore wrong files */ + } + ++ if (strstr(name, "/etc") == name) ++ { ++ fprintf(stderr, ++ "error: Config file %s in invalid location, please move to or merge with /usr/local%s\n", ++ name,name); ++ goto err; ++ } ++ + while (mysql_file_getline(buff, sizeof(buff) - 1, fp, is_login_file)) { + line++; + /* Ignore comment and empty lines */ +@@ -1228,7 +1236,8 @@ void my_print_default_files(const char *conf_file) { + end[(strlen(end) - 1)] = ' '; + else + strxmov(end, conf_file, *ext, " ", NullS); +- fputs(name, stdout); ++ if (strstr(name, "/etc") != name) ++ fputs(name, stdout); + } + } + } +@@ -1565,14 +1574,9 @@ static const char **init_default_directories(MEM_ROOT + + #else + +- errors += add_directory(alloc, "/etc/", dirs); +- errors += add_directory(alloc, "/etc/mysql/", dirs); ++ errors += add_directory(alloc, "/usr/local/etc/", dirs); ++ errors += add_directory(alloc, "/usr/local/etc/mysql/", dirs); + +-#if defined(DEFAULT_SYSCONFDIR) +- if (DEFAULT_SYSCONFDIR[0]) +- errors += add_directory(alloc, DEFAULT_SYSCONFDIR, dirs); +-#endif /* DEFAULT_SYSCONFDIR */ +- + #endif + + if ((env = getenv("MYSQL_HOME"))) errors += add_directory(alloc, env, dirs); +@@ -1635,7 +1639,7 @@ int check_file_permissions(const char *file_name, bool + #if !defined(_WIN32) + MY_STAT stat_info; + +- if (!my_stat(file_name, &stat_info, MYF(0))) return 1; ++ if (!my_stat(file_name, &stat_info, MYF(0))) return 0; + /* + Ignore .mylogin.cnf file if not exclusively readable/writable + by current user. diff --git a/databases/mysqlwsrep80-server/files/patch-mysys_my__md5.cc b/databases/mysqlwsrep80-server/files/patch-mysys_my__md5.cc new file mode 100644 index 0000000..56986ec --- /dev/null +++ b/databases/mysqlwsrep80-server/files/patch-mysys_my__md5.cc @@ -0,0 +1,12 @@ +--- mysys/my_md5.cc.orig 2019-09-20 08:30:51 UTC ++++ mysys/my_md5.cc +@@ -56,7 +56,9 @@ static void my_md5_hash(unsigned char *digest, unsigne + 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 /* LIBRESSL_VERSION_NUMBER */ + /* If fips mode is ON/STRICT restricted method calls will result into abort, + * skipping call. */ + if (fips_mode == 0) { diff --git a/databases/mysqlwsrep80-server/files/patch-plugin_group__replication_libmysqlgcs_src_bindings_xcom_xcom_xcom__ssl__transport.c b/databases/mysqlwsrep80-server/files/patch-plugin_group__replication_libmysqlgcs_src_bindings_xcom_xcom_xcom__ssl__transport.c new file mode 100644 index 0000000..6663059 --- /dev/null +++ b/databases/mysqlwsrep80-server/files/patch-plugin_group__replication_libmysqlgcs_src_bindings_xcom_xcom_xcom__ssl__transport.c @@ -0,0 +1,31 @@ +--- plugin/group_replication/libmysqlgcs/src/bindings/xcom/xcom/xcom_ssl_transport.cc.orig 2019-09-20 08:30:51 UTC ++++ plugin/group_replication/libmysqlgcs/src/bindings/xcom/xcom/xcom_ssl_transport.cc +@@ -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_mod + 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 c + 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(); diff --git a/databases/mysqlwsrep80-server/files/patch-plugin_password__validation_validate__password.cc b/databases/mysqlwsrep80-server/files/patch-plugin_password__validation_validate__password.cc new file mode 100644 index 0000000..4f13139 --- /dev/null +++ b/databases/mysqlwsrep80-server/files/patch-plugin_password__validation_validate__password.cc @@ -0,0 +1,11 @@ +--- plugin/password_validation/validate_password.cc.orig 2019-09-20 08:30:51 UTC ++++ plugin/password_validation/validate_password.cc +@@ -25,6 +25,8 @@ + #include + #include + #include ++/* solve clash between libc++ bitset::test() and test macro from my_global.h */ ++#undef test + #include + #include + #include diff --git a/databases/mysqlwsrep80-server/files/patch-plugin_x_CMakeLists.txt b/databases/mysqlwsrep80-server/files/patch-plugin_x_CMakeLists.txt new file mode 100644 index 0000000..e3ee6f4 --- /dev/null +++ b/databases/mysqlwsrep80-server/files/patch-plugin_x_CMakeLists.txt @@ -0,0 +1,11 @@ +--- plugin/x/CMakeLists.txt.orig 2019-09-20 08:30:51 UTC ++++ plugin/x/CMakeLists.txt +@@ -77,6 +77,8 @@ INCLUDE_DIRECTORIES( + ${MYSQLX_GENERATE_DIR} + ${MYSQLX_PROTOCOL_INCLUDE_DIR} + ${MYSQLX_CLIENT_INCLUDE_DIR} ++ ${OPENSSL_INCLUDE_DIR} ++ ${BOOST_INCLUDE_DIR} + ) + + MY_INCLUDE_SYSTEM_DIRECTORIES(PROTOBUF) diff --git a/databases/mysqlwsrep80-server/files/patch-plugin_x_client_authentication_sha256__scramble__generator.cc b/databases/mysqlwsrep80-server/files/patch-plugin_x_client_authentication_sha256__scramble__generator.cc new file mode 100644 index 0000000..0e89421 --- /dev/null +++ b/databases/mysqlwsrep80-server/files/patch-plugin_x_client_authentication_sha256__scramble__generator.cc @@ -0,0 +1,11 @@ +--- plugin/x/client/authentication/sha256_scramble_generator.cc.orig 2019-09-20 08:30:51 UTC ++++ plugin/x/client/authentication/sha256_scramble_generator.cc +@@ -97,7 +97,7 @@ bool SHA256_digest::retrieve_digest(unsigned char *dig + return true; + } + m_ok = EVP_DigestFinal_ex(md_context, m_digest, nullptr); +-#if OPENSSL_VERSION_NUMBER < 0x10100000L ++#if defined(LIBRESSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER < 0x10100000L + EVP_MD_CTX_cleanup(md_context); + #else /* OPENSSL_VERSION_NUMBER < 0x10100000L */ + EVP_MD_CTX_reset(md_context); diff --git a/databases/mysqlwsrep80-server/files/patch-plugin_x_client_xconnection__impl.cc b/databases/mysqlwsrep80-server/files/patch-plugin_x_client_xconnection__impl.cc new file mode 100644 index 0000000..df8f2bf --- /dev/null +++ b/databases/mysqlwsrep80-server/files/patch-plugin_x_client_xconnection__impl.cc @@ -0,0 +1,33 @@ +--- plugin/x/client/xconnection_impl.cc.orig 2019-09-20 08:30:51 UTC ++++ plugin/x/client/xconnection_impl.cc +@@ -520,6 +520,7 @@ XError Connection_impl::get_ssl_error(const int error_ + 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)); + diff --git a/databases/mysqlwsrep80-server/files/patch-plugin_x_configure.cmake b/databases/mysqlwsrep80-server/files/patch-plugin_x_configure.cmake new file mode 100644 index 0000000..3d56059 --- /dev/null +++ b/databases/mysqlwsrep80-server/files/patch-plugin_x_configure.cmake @@ -0,0 +1,15 @@ +--- plugin/x/configure.cmake.orig 2019-09-20 08:30:51 UTC ++++ plugin/x/configure.cmake +@@ -45,6 +45,7 @@ CONFIGURE_FILE(${MYSQLX_PROJECT_DIR}/src/config/mysqlx + CONFIGURE_FILE(${MYSQLX_PROJECT_DIR}/src/config/mysqlx_version.h.in + ${MYSQLX_GENERATE_DIR}/mysqlx_version.h ) + ++IF(FALSE) + INSTALL(FILES ${MYSQLX_GENERATE_DIR}/mysqlx_error.h + DESTINATION ${INSTALL_INCLUDEDIR} + COMPONENT Development) +@@ -56,3 +57,4 @@ INSTALL(FILES ${MYSQLX_GENERATE_DIR}/mysqlx_ername.h + INSTALL(FILES ${MYSQLX_GENERATE_DIR}/mysqlx_version.h + DESTINATION ${INSTALL_INCLUDEDIR} + COMPONENT Development) ++ENDIF() diff --git a/databases/mysqlwsrep80-server/files/patch-router_src_harness_include_mysql_harness_net__ts_internet.h b/databases/mysqlwsrep80-server/files/patch-router_src_harness_include_mysql_harness_net__ts_internet.h new file mode 100644 index 0000000..015c683 --- /dev/null +++ b/databases/mysqlwsrep80-server/files/patch-router_src_harness_include_mysql_harness_net__ts_internet.h @@ -0,0 +1,10 @@ +--- router/src/harness/include/mysql/harness/net_ts/internet.h.orig 2020-11-09 00:30:01 UTC ++++ router/src/harness/include/mysql/harness/net_ts/internet.h +@@ -43,6 +43,7 @@ + #include // inet_ntop + #include // getaddrinfo + #include // in_addr_t ++#include // u_int32_t + #include // in6_addr_t + #include // TCP_NODELAY + #include // ioctl diff --git a/databases/mysqlwsrep80-server/files/patch-router_src_harness_include_mysql_harness_net_ts_impl_kqueue_io_service.h b/databases/mysqlwsrep80-server/files/patch-router_src_harness_include_mysql_harness_net_ts_impl_kqueue_io_service.h new file mode 100644 index 0000000..8274f7e --- /dev/null +++ b/databases/mysqlwsrep80-server/files/patch-router_src_harness_include_mysql_harness_net_ts_impl_kqueue_io_service.h @@ -0,0 +1,13 @@ +--- router/src/harness/include/mysql/harness/net_ts/impl/kqueue_io_service.h.orig 2020-09-23 12:37:48 UTC ++++ router/src/harness/include/mysql/harness/net_ts/impl/kqueue_io_service.h +@@ -190,8 +190,8 @@ + auto secs = std::chrono::duration_cast(timeout); + timeout -= secs; + +- ts = {secs.count(), +- std::chrono::duration_cast(timeout) ++ ts = {(time_t)secs.count(), ++ (time_t)std::chrono::duration_cast(timeout) + .count()}; + + p_ts = &ts; diff --git a/databases/mysqlwsrep80-server/files/patch-router_src_harness_src_CMakeLists.txt b/databases/mysqlwsrep80-server/files/patch-router_src_harness_src_CMakeLists.txt new file mode 100644 index 0000000..f6cf7d3 --- /dev/null +++ b/databases/mysqlwsrep80-server/files/patch-router_src_harness_src_CMakeLists.txt @@ -0,0 +1,16 @@ +--- router/src/harness/src/CMakeLists.txt.orig 2019-12-09 19:53:17 UTC ++++ router/src/harness/src/CMakeLists.txt +@@ -205,7 +205,6 @@ IF(NOT WIN32) + INSTALL(TARGETS harness-library + LIBRARY + DESTINATION ${ROUTER_INSTALL_LIBDIR} COMPONENT Router +- NAMELINK_SKIP + ) + ELSE() + INSTALL(TARGETS harness-library +@@ -240,5 +239,4 @@ INSTALL(TARGETS harness_stdx + RUNTIME DESTINATION ${ROUTER_INSTALL_BINDIR} COMPONENT Router + ARCHIVE DESTINATION ${ROUTER_INSTALL_LIBDIR} COMPONENT Router + LIBRARY DESTINATION ${ROUTER_INSTALL_LIBDIR} COMPONENT Router +- NAMELINK_SKIP + ) diff --git a/databases/mysqlwsrep80-server/files/patch-router_src_http_src_CMakeLists.txt b/databases/mysqlwsrep80-server/files/patch-router_src_http_src_CMakeLists.txt new file mode 100644 index 0000000..cea2271 --- /dev/null +++ b/databases/mysqlwsrep80-server/files/patch-router_src_http_src_CMakeLists.txt @@ -0,0 +1,26 @@ +--- router/src/http/src/CMakeLists.txt.orig 2019-12-09 19:53:17 UTC ++++ router/src/http/src/CMakeLists.txt +@@ -62,7 +62,6 @@ INSTALL(TARGETS http_common + RUNTIME DESTINATION ${ROUTER_INSTALL_BINDIR} COMPONENT Router + ARCHIVE DESTINATION ${ROUTER_INSTALL_LIBDIR} COMPONENT Router + LIBRARY DESTINATION ${ROUTER_INSTALL_LIBDIR} COMPONENT Router +- NAMELINK_SKIP + ) + + ## split library code from the plugin to use them _passwd and tests +@@ -88,7 +87,6 @@ INSTALL(TARGETS http_auth_backend_lib + RUNTIME DESTINATION ${ROUTER_INSTALL_BINDIR} COMPONENT Router + ARCHIVE DESTINATION ${ROUTER_INSTALL_LIBDIR} COMPONENT Router + LIBRARY DESTINATION ${ROUTER_INSTALL_LIBDIR} COMPONENT Router +- NAMELINK_SKIP + ) + TARGET_INCLUDE_DIRECTORIES(http_auth_backend_lib PUBLIC + ${CMAKE_CURRENT_SOURCE_DIR} +@@ -141,7 +139,6 @@ INSTALL(TARGETS http_auth_realm_lib + RUNTIME DESTINATION ${ROUTER_INSTALL_BINDIR} COMPONENT Router + ARCHIVE DESTINATION ${ROUTER_INSTALL_LIBDIR} COMPONENT Router + LIBRARY DESTINATION ${ROUTER_INSTALL_LIBDIR} COMPONENT Router +- NAMELINK_SKIP + ) + ## the rpath for the bundled openssl + ADD_INSTALL_RPATH_FOR_OPENSSL(http_auth_realm_lib) diff --git a/databases/mysqlwsrep80-server/files/patch-router_src_http_src_tls__client__context.cc b/databases/mysqlwsrep80-server/files/patch-router_src_http_src_tls__client__context.cc new file mode 100644 index 0000000..9ce5967 --- /dev/null +++ b/databases/mysqlwsrep80-server/files/patch-router_src_http_src_tls__client__context.cc @@ -0,0 +1,11 @@ +--- router/src/http/src/tls_client_context.cc.orig 2019-09-20 08:30:51 UTC ++++ 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"); + } diff --git a/databases/mysqlwsrep80-server/files/patch-router_src_http_src_tls__context.cc b/databases/mysqlwsrep80-server/files/patch-router_src_http_src_tls__context.cc new file mode 100644 index 0000000..57b1cc0 --- /dev/null +++ b/databases/mysqlwsrep80-server/files/patch-router_src_http_src_tls__context.cc @@ -0,0 +1,44 @@ +--- router/src/http/src/tls_context.cc.orig 2019-09-20 08:30:51 UTC ++++ router/src/http/src/tls_context.cc +@@ -91,7 +91,7 @@ static constexpr 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 +@@ -121,9 +121,11 @@ void TlsContext::version_range(TlsVersion min_version, + default: + // unknown, leave all disabled + // fallthrough ++#ifdef TLS1_3_VERSION + case TlsVersion::TLS_1_3: + opts |= SSL_OP_NO_TLSv1_2; + // fallthrough ++#endif + case TlsVersion::TLS_1_2: + opts |= SSL_OP_NO_TLSv1_1; + // fallthrough +@@ -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() c + } + + 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; diff --git a/databases/mysqlwsrep80-server/files/patch-router_src_http_src_tls__server__context.cc b/databases/mysqlwsrep80-server/files/patch-router_src_http_src_tls__server__context.cc new file mode 100644 index 0000000..8fcf93f --- /dev/null +++ b/databases/mysqlwsrep80-server/files/patch-router_src_http_src_tls__server__context.cc @@ -0,0 +1,12 @@ +--- router/src/http/src/tls_server_context.cc.orig 2019-09-20 08:30:51 UTC ++++ router/src/http/src/tls_server_context.cc +@@ -166,7 +166,8 @@ void TlsServerContext::init_tmp_dh(const std::string & + } + + } 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 + /* diff --git a/databases/mysqlwsrep80-server/files/patch-router_src_io_src_CMakeLists.txt b/databases/mysqlwsrep80-server/files/patch-router_src_io_src_CMakeLists.txt new file mode 100644 index 0000000..474f473 --- /dev/null +++ b/databases/mysqlwsrep80-server/files/patch-router_src_io_src_CMakeLists.txt @@ -0,0 +1,10 @@ +--- router/src/io/src/CMakeLists.txt.orig 2020-09-23 12:37:48 UTC ++++ router/src/io/src/CMakeLists.txt +@@ -47,7 +47,6 @@ INSTALL(TARGETS io_component + RUNTIME DESTINATION ${ROUTER_INSTALL_BINDIR} COMPONENT Router + ARCHIVE DESTINATION ${ROUTER_INSTALL_LIBDIR} COMPONENT Router + LIBRARY DESTINATION ${ROUTER_INSTALL_LIBDIR} COMPONENT Router +- NAMELINK_SKIP + ) + + GENERATE_EXPORT_HEADER(io_component diff --git a/databases/mysqlwsrep80-server/files/patch-router_src_router_src_CMakeLists.txt b/databases/mysqlwsrep80-server/files/patch-router_src_router_src_CMakeLists.txt new file mode 100644 index 0000000..cee2af2 --- /dev/null +++ b/databases/mysqlwsrep80-server/files/patch-router_src_router_src_CMakeLists.txt @@ -0,0 +1,10 @@ +--- router/src/router/src/CMakeLists.txt.orig 2019-12-09 19:53:17 UTC ++++ router/src/router/src/CMakeLists.txt +@@ -119,7 +119,6 @@ INSTALL(TARGETS router_lib + RUNTIME DESTINATION ${ROUTER_INSTALL_BINDIR} COMPONENT Router + ARCHIVE DESTINATION ${ROUTER_INSTALL_LIBDIR} COMPONENT Router + LIBRARY DESTINATION ${ROUTER_INSTALL_LIBDIR} COMPONENT Router +- NAMELINK_SKIP + ) + + MYSQL_ADD_EXECUTABLE(mysqlrouter_keyring diff --git a/databases/mysqlwsrep80-server/files/patch-scripts_CMakeLists.txt b/databases/mysqlwsrep80-server/files/patch-scripts_CMakeLists.txt new file mode 100644 index 0000000..19e5391 --- /dev/null +++ b/databases/mysqlwsrep80-server/files/patch-scripts_CMakeLists.txt @@ -0,0 +1,61 @@ +--- scripts/CMakeLists.txt.orig 2019-09-20 08:30:51 UTC ++++ scripts/CMakeLists.txt +@@ -330,7 +330,7 @@ MACRO(EXTRACT_LINK_LIBRARIES target var) + LIST(REMOVE_DUPLICATES ${target}_LIB_DEPENDS) + FOREACH(lib ${${target}_LIB_DEPENDS}) + # Filter out "general", it is not a library, just CMake hint +- IF(NOT lib STREQUAL "general" AND NOT ${var} MATCHES "-l${lib} ") ++ IF(NOT lib STREQUAL "general" AND NOT ${var} MATCHES "-l${lib} " AND NOT lib STREQUAL "imported_openssl" AND NOT lib STREQUAL "imported_crypto") + IF (lib MATCHES "^\\-l") + SET(${var} "${${var}} ${lib} ") + ELSEIF (lib MATCHES "^\\-L") +@@ -340,6 +340,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} " ) ++ ELSEIF(lib STREQUAL "-pthread") ++ SET(${var} "${${var}}-pthread " ) + ELSE() + SET(${var} "${${var}}-l${lib} " ) + ENDIF() +@@ -414,7 +416,7 @@ ELSE() + ${CMAKE_CURRENT_BINARY_DIR}/${PKGCONFIG_FILE} + ESCAPE_QUOTES @ONLY) + +- IF(INSTALL_PKGCONFIGDIR) ++ IF(INSTALL_PKGCONFIGDIR AND NOT WITHOUT_CLIENTLIBS) + MESSAGE(STATUS "INSTALL ${PKGCONFIG_FILE} ${INSTALL_PKGCONFIGDIR}") + INSTALL(FILES + ${CMAKE_CURRENT_BINARY_DIR}/${PKGCONFIG_FILE} +@@ -427,23 +429,28 @@ ELSE() + # mysqld_safe used in mtr even for systemd platforms + IF(WITH_SYSTEMD) + SET(BIN_SCRIPTS +- mysql_config + mysqldumpslow + mysqld_safe + ) + ELSE() + SET(BIN_SCRIPTS +- mysql_config + mysqldumpslow + mysqld_multi + mysqld_safe + ) + ENDIF() + ++ IF(NOT WITHOUT_CLIENTLIBS) ++ SET(BIN_SCRIPTS ++ ${BIN_SCRIPTS} ++ mysql_config ++ ) ++ ENDIF(NOT WITHOUT_CLIENTLIBS) ++ + FOREACH(file ${BIN_SCRIPTS}) + IF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${file}.sh) + CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${file}.sh +- ${CMAKE_CURRENT_BINARY_DIR}/${file} ESCAPE_QUOTES @ONLY ++ ${CMAKE_CURRENT_BINARY_DIR}/${file} @ONLY + ) + ELSEIF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${file}.pl.in) + CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${file}.pl.in diff --git a/databases/mysqlwsrep80-server/files/patch-sql-common_client.cc b/databases/mysqlwsrep80-server/files/patch-sql-common_client.cc new file mode 100644 index 0000000..acf9035 --- /dev/null +++ b/databases/mysqlwsrep80-server/files/patch-sql-common_client.cc @@ -0,0 +1,18 @@ +--- sql-common/client.cc.orig 2020-03-26 13:31:45 UTC ++++ sql-common/client.cc +@@ -7752,6 +7752,7 @@ int STDCALL mysql_options(MYSQL *mysql, enum mysql_opt + return 1; + break; + case MYSQL_OPT_SSL_FIPS_MODE: { ++#if !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); +@@ -7763,6 +7764,7 @@ int STDCALL mysql_options(MYSQL *mysql, enum mysql_opt + "Set Fips mode ON/STRICT failed, detail: '%s'.", ssl_err_string); + return 1; + } ++#endif + } break; + case MYSQL_OPT_SSL_MODE: + ENSURE_EXTENSIONS_PRESENT(&mysql->options); diff --git a/databases/mysqlwsrep80-server/files/patch-sql_auth_sha2__password__common.cc b/databases/mysqlwsrep80-server/files/patch-sql_auth_sha2__password__common.cc new file mode 100644 index 0000000..56f6dfb --- /dev/null +++ b/databases/mysqlwsrep80-server/files/patch-sql_auth_sha2__password__common.cc @@ -0,0 +1,11 @@ +--- sql/auth/sha2_password_common.cc.orig 2019-09-20 08:30:51 UTC ++++ sql/auth/sha2_password_common.cc +@@ -101,7 +101,7 @@ bool SHA256_digest::retrieve_digest(unsigned char *dig + return true; + } + m_ok = EVP_DigestFinal_ex(md_context, m_digest, nullptr); +-#if OPENSSL_VERSION_NUMBER < 0x10100000L ++#if defined(LIBRESSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER < 0x10100000L + EVP_MD_CTX_cleanup(md_context); + #else /* OPENSSL_VERSION_NUMBER < 0x10100000L */ + EVP_MD_CTX_reset(md_context); diff --git a/databases/mysqlwsrep80-server/files/patch-sql_conn__handler_socket__connection.cc b/databases/mysqlwsrep80-server/files/patch-sql_conn__handler_socket__connection.cc new file mode 100644 index 0000000..edcba63 --- /dev/null +++ b/databases/mysqlwsrep80-server/files/patch-sql_conn__handler_socket__connection.cc @@ -0,0 +1,32 @@ +--- sql/conn_handler/socket_connection.cc.orig 2019-09-20 08:30:51 UTC ++++ sql/conn_handler/socket_connection.cc +@@ -950,9 +950,11 @@ bool check_connection_refused_by_tcp_wrapper(MYSQL_SOC + signal(SIGCHLD, SIG_DFL); + request_init(&req, RQ_DAEMON, libwrap_name, RQ_FILE, + mysql_socket_getfd(connect_sock), NULL); +- fromhost(&req); ++ void (*my_fromhost) (void *) = (void (*)(void *)) fromhost; ++ my_fromhost(&req); + +- if (!hosts_access(&req)) { ++ int (*my_hosts_access) (void *) = (int (*) (void *)) hosts_access; ++ if (!my_hosts_access(&req)) { + /* + This may be stupid but refuse() includes an exit(0) + which we surely don't want... +@@ -964,12 +966,13 @@ bool check_connection_refused_by_tcp_wrapper(MYSQL_SOC + This is unproblematic as TCP-wrapper is unix specific, + anyway. + */ ++ char *(*my_eval_client) (void *) = (char *(*) (void *)) eval_client; + syslog(LOG_AUTH | LOG_WARNING, "refused connect from %s", +- eval_client(&req)); ++ my_eval_client(&req)); + + #ifdef HAVE_LIBWRAP_PROTOTYPES + // Some distros have patched tcpd.h to have proper prototypes +- if (req.sink) (req.sink)(req.fd); ++ if (req.sink) ((void (*)(int)) (req.sink))(req.fd); + #else + // Some distros have not patched tcpd.h + if (req.sink) ((void (*)(int))req.sink)(req.fd); diff --git a/databases/mysqlwsrep80-server/files/patch-sql_mysqld.cc b/databases/mysqlwsrep80-server/files/patch-sql_mysqld.cc new file mode 100644 index 0000000..39a7fb8 --- /dev/null +++ b/databases/mysqlwsrep80-server/files/patch-sql_mysqld.cc @@ -0,0 +1,26 @@ +--- sql/mysqld.cc.orig 2019-09-20 08:30:51 UTC ++++ sql/mysqld.cc +@@ -5109,7 +5109,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 +@@ -5143,12 +5143,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 /* LIBRESSL_VERSION_NUMBER */ + if (TLS_channel::singleton_init(&mysql_main, mysql_main_channel, opt_use_ssl, + &server_main_callback, opt_initialize)) + return 1; diff --git a/databases/mysqlwsrep80-server/files/patch-sql_sys__vars.cc b/databases/mysqlwsrep80-server/files/patch-sql_sys__vars.cc new file mode 100644 index 0000000..9c12715 --- /dev/null +++ b/databases/mysqlwsrep80-server/files/patch-sql_sys__vars.cc @@ -0,0 +1,70 @@ +--- sql/sys_vars.cc.orig 2019-09-20 08:30:51 UTC ++++ sql/sys_vars.cc +@@ -1875,7 +1875,7 @@ static Sys_var_ulong Sys_connect_timeout( + "The number of seconds the mysqld server is waiting for a connect " + "packet before responding with 'Bad handshake'", + GLOBAL_VAR(connect_timeout), CMD_LINE(REQUIRED_ARG), +- VALID_RANGE(2, LONG_TIMEOUT), DEFAULT(CONNECT_TIMEOUT), BLOCK_SIZE(1)); ++ VALID_RANGE(2, INT_MAX32 / 1000), DEFAULT(CONNECT_TIMEOUT), BLOCK_SIZE(1)); + + static Sys_var_ulong Sys_information_schema_stats_expiry( + "information_schema_stats_expiry", +@@ -2929,7 +2929,7 @@ static Sys_var_ulong Sys_net_read_timeout( + "Number of seconds to wait for more data from a connection before " + "aborting the read", + SESSION_VAR(net_read_timeout), CMD_LINE(REQUIRED_ARG), +- VALID_RANGE(1, LONG_TIMEOUT), DEFAULT(NET_READ_TIMEOUT), BLOCK_SIZE(1), ++ VALID_RANGE(1, INT_MAX32 / 1000), DEFAULT(NET_READ_TIMEOUT), BLOCK_SIZE(1), + NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(nullptr), + ON_UPDATE(fix_net_read_timeout)); + +@@ -2950,7 +2950,7 @@ static Sys_var_ulong Sys_net_write_timeout( + "Number of seconds to wait for a block to be written to a connection " + "before aborting the write", + SESSION_VAR(net_write_timeout), CMD_LINE(REQUIRED_ARG), +- VALID_RANGE(1, LONG_TIMEOUT), DEFAULT(NET_WRITE_TIMEOUT), BLOCK_SIZE(1), ++ VALID_RANGE(1, INT_MAX32 / 1000), DEFAULT(NET_WRITE_TIMEOUT), BLOCK_SIZE(1), + NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(nullptr), + ON_UPDATE(fix_net_write_timeout)); + +@@ -4459,6 +4459,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) { +@@ -4470,14 +4471,30 @@ static bool update_fips_mode(sys_var *, THD *, enum_va + } + } + ++#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", nullptr}; ++#endif + static Sys_var_enum Sys_ssl_fips_mode( + "ssl_fips_mode", + "SSL FIPS mode (applies only for OpenSSL); " +- "permitted values are: OFF, ON, STRICT", ++#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(nullptr), ON_UPDATE(update_fips_mode), nullptr); ++ ON_CHECK(NULL), ++#ifndef LIBRESSL_VERSION_NUMBER ++ ON_UPDATE(update_fips_mode), ++#else ++ ON_UPDATE(NULL), ++#endif ++ NULL); + + static Sys_var_bool Sys_auto_generate_certs( + "auto_generate_certs", diff --git a/databases/mysqlwsrep80-server/files/patch-storage_innobase_include_srv0mon.h b/databases/mysqlwsrep80-server/files/patch-storage_innobase_include_srv0mon.h new file mode 100644 index 0000000..ee591ad --- /dev/null +++ b/databases/mysqlwsrep80-server/files/patch-storage_innobase_include_srv0mon.h @@ -0,0 +1,13 @@ +--- storage/innobase/include/srv0mon.h.orig 2019-09-20 08:30:51 UTC ++++ storage/innobase/include/srv0mon.h +@@ -40,6 +40,10 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, + /* Required for FreeBSD so that INT64_MAX is defined. */ + #define __STDC_LIMIT_MACROS + #endif /* __STDC_LIMIT_MACROS */ ++#ifdef __DragonFly__ ++/* The hack above doen't work for dragonfly, stdint.h already imported */ ++#include ++#endif + + #include + diff --git a/databases/mysqlwsrep80-server/files/patch-storage_myisam_mi__dynrec.cc b/databases/mysqlwsrep80-server/files/patch-storage_myisam_mi__dynrec.cc new file mode 100644 index 0000000..4daceef --- /dev/null +++ b/databases/mysqlwsrep80-server/files/patch-storage_myisam_mi__dynrec.cc @@ -0,0 +1,22 @@ +--- storage/myisam/mi_dynrec.cc.orig 2019-09-20 08:30:51 UTC ++++ storage/myisam/mi_dynrec.cc +@@ -85,17 +85,12 @@ bool mi_dynmap_file(MI_INFO *info, my_off_t size) { + return true; + } + /* +- I wonder if it is good to use MAP_NORESERVE. From the Linux man page: +- MAP_NORESERVE +- Do not reserve swap space for this mapping. When swap space is +- reserved, one has the guarantee that it is possible to modify the +- mapping. When swap space is not reserved one might get SIGSEGV +- upon a write if no physical memory is available. ++ MAP_NORESERVE is unimplemented in FreeBSD + */ + info->s->file_map = (uchar *)my_mmap( + nullptr, (size_t)size, + info->s->mode == O_RDONLY ? PROT_READ : PROT_READ | PROT_WRITE, +- MAP_SHARED | MAP_NORESERVE, info->dfile, 0L); ++ MAP_SHARED, info->dfile, 0L); + if (info->s->file_map == (uchar *)MAP_FAILED) { + info->s->file_map = nullptr; + return true; diff --git a/databases/mysqlwsrep80-server/files/patch-storage_temptable_include_temptable_lock_free_type.h b/databases/mysqlwsrep80-server/files/patch-storage_temptable_include_temptable_lock_free_type.h new file mode 100644 index 0000000..a229da5 --- /dev/null +++ b/databases/mysqlwsrep80-server/files/patch-storage_temptable_include_temptable_lock_free_type.h @@ -0,0 +1,17 @@ +--- storage/temptable/include/temptable/lock_free_type.h.orig 2020-06-16 16:31:03 UTC ++++ storage/temptable/include/temptable/lock_free_type.h +@@ -31,6 +31,14 @@ Lock-free type (selection) implementation. */ + + #include "storage/temptable/include/temptable/constants.h" + ++#if defined(__i386__) //&& defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8) ++/* Fix for clang setting __GCC_ATOMIC_LLONG_LOCK_FREE incorrectly for x86 ++ * https://llvm.org/bugs/show_bug.cgi?id=19355 ++ */ ++#undef ATOMIC_LLONG_LOCK_FREE ++#define ATOMIC_LLONG_LOCK_FREE 2 ++#endif ++ + namespace temptable { + + /** Enum class describing alignment-requirements. */ diff --git a/databases/mysqlwsrep80-server/files/patch-support-files_CMakeLists.txt b/databases/mysqlwsrep80-server/files/patch-support-files_CMakeLists.txt new file mode 100644 index 0000000..282a844 --- /dev/null +++ b/databases/mysqlwsrep80-server/files/patch-support-files_CMakeLists.txt @@ -0,0 +1,39 @@ +--- support-files/CMakeLists.txt.orig 2020-09-23 12:37:48 UTC ++++ support-files/CMakeLists.txt +@@ -24,8 +24,9 @@ IF(NOT UNIX) + RETURN() + ENDIF() + +-INSTALL(FILES mysql.m4 +- DESTINATION ${INSTALL_SHAREDIR}/aclocal COMPONENT Development) ++IF(NOT WITHOUT_CLIENTLIBS) ++ INSTALL(FILES mysql.m4 DESTINATION ${INSTALL_SHAREDIR}/aclocal COMPONENT Development) ++ENDIF(NOT WITHOUT_CLIENTLIBS) + + SET(localstatedir "${MYSQL_DATADIR}") + +@@ -43,7 +44,7 @@ ENDIF() + CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/mysql-log-rotate.in + ${CMAKE_CURRENT_BINARY_DIR}/mysql-log-rotate @ONLY) + +-IF(NOT WITH_SYSTEMD) ++IF(NOT WITHOUT_SERVER) + CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/mysql.server.sh + ${CMAKE_CURRENT_BINARY_DIR}/mysql.server @ONLY + ) +@@ -59,6 +60,7 @@ IF(NOT WITH_SYSTEMD) + ) + ENDIF() + ++IF(NOT WITHOUT_SERVER) + INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/mysql-log-rotate + COMPONENT Server_Scripts + DESTINATION ${INSTALL_SUPPORTFILESDIR} +@@ -66,6 +68,7 @@ INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/mysql-log-ro + OWNER_READ OWNER_WRITE + GROUP_READ WORLD_READ + ) ++ENDIF() + + IF(WITH_ROUTER) + CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/mysqlrouter-log-rotate.in diff --git a/databases/mysqlwsrep80-server/files/patch-utilities_CMakeLists.txt b/databases/mysqlwsrep80-server/files/patch-utilities_CMakeLists.txt new file mode 100644 index 0000000..29c120a --- /dev/null +++ b/databases/mysqlwsrep80-server/files/patch-utilities_CMakeLists.txt @@ -0,0 +1,79 @@ +--- utilities/CMakeLists.txt.orig 2020-09-23 12:37:48 UTC ++++ utilities/CMakeLists.txt +@@ -23,13 +23,19 @@ + ADD_WSHADOW_WARNING() + DISABLE_MISSING_PROFILE_WARNING() + +-IF(NOT CMAKE_CROSSCOMPILING) ++IF(WITHOUT_CLIENTLIBS) + MYSQL_ADD_EXECUTABLE(comp_err + comp_err.cc + COMPONENT Test + LINK_LIBRARIES mysys ++ SKIP_INSTALL) ++ELSE(WITHOUT_CLIENTLIBS) ++ MYSQL_ADD_EXECUTABLE(comp_err ++ comp_err.cc ++ COMPONENT Test ++ LINK_LIBRARIES mysys + ) +-ENDIF() ++ENDIF(WITHOUT_CLIENTLIBS) + + MYSQL_ADD_EXECUTABLE(comp_client_err + comp_client_err.cc +@@ -112,10 +118,30 @@ MYSQL_ADD_EXECUTABLE(static_thread_local_test + EXCLUDE_FROM_ALL + ) + ++IF(WITHOUT_CLIENTLIBS) + MYSQL_ADD_EXECUTABLE(my_print_defaults + my_print_defaults.cc + COMPONENT Server + LINK_LIBRARIES mysys ++ SKIP_INSTALL ) ++MYSQL_ADD_EXECUTABLE(perror ++ perror.cc ++ COMPONENT Server ++ DEPENDENCIES GenError ++ LINK_LIBRARIES mysys ++ SKIP_INSTALL ) ++IF(BUILD_BUNDLED_LZ4) ++ MYSQL_ADD_EXECUTABLE(lz4_decompress ++ lz4_decompress.cc ++ COMPONENT Server ++ LINK_LIBRARIES ${LZ4_LIBRARY} mysys ++ SKIP_INSTALL ) ++ENDIF() ++ELSE(WITHOUT_CLIENTLIBS) ++MYSQL_ADD_EXECUTABLE(my_print_defaults ++ my_print_defaults.cc ++ COMPONENT Server ++ LINK_LIBRARIES mysys + ) + MYSQL_ADD_EXECUTABLE(perror + perror.cc +@@ -130,12 +156,23 @@ IF(BUILD_BUNDLED_LZ4) + LINK_LIBRARIES ${LZ4_LIBRARY} mysys + ) + ENDIF() ++ENDIF(WITHOUT_CLIENTLIBS) + ++IF(WITHOUT_CLIENTLIBS) + MYSQL_ADD_EXECUTABLE(zlib_decompress + zlib_decompress.cc + COMPONENT Server + LINK_LIBRARIES ${ZLIB_LIBRARY} mysys ++ SKIP_INSTALL ) ++ELSE(WITHOUT_CLIENTLIBS) ++IF(BUILD_BUNDLED_ZLIB OR NOT OPENSSL_EXECUTABLE_HAS_ZLIB) ++ MYSQL_ADD_EXECUTABLE(zlib_decompress ++ zlib_decompress.cc ++ COMPONENT Server ++ LINK_LIBRARIES ${ZLIB_LIBRARY} mysys + ) ++ENDIF() ++ENDIF(WITHOUT_CLIENTLIBS) + + # All targets below belong to COMPONENT Server and depend on InnoDB. + IF(WITHOUT_SERVER) diff --git a/databases/mysqlwsrep80-server/files/patch-vio_viossl.cc b/databases/mysqlwsrep80-server/files/patch-vio_viossl.cc new file mode 100644 index 0000000..e7f2a2a --- /dev/null +++ b/databases/mysqlwsrep80-server/files/patch-vio_viossl.cc @@ -0,0 +1,30 @@ +--- vio/viossl.cc.orig 2019-09-20 08:30:51 UTC ++++ vio/viossl.cc +@@ -45,7 +45,8 @@ + 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 + +@@ -635,7 +636,7 @@ static int ssl_do(struct st_VioSSLFd *ptr, Vio *vio, l + #if !defined(DBUG_OFF) + { + STACK_OF(SSL_COMP) *ssl_comp_methods = nullptr; +- 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) +@@ -643,7 +644,7 @@ static int ssl_do(struct st_VioSSLFd *ptr, Vio *vio, l + 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", diff --git a/databases/mysqlwsrep80-server/files/patch-vio_viosslfactories.cc b/databases/mysqlwsrep80-server/files/patch-vio_viosslfactories.cc new file mode 100644 index 0000000..8ed6e65 --- /dev/null +++ b/databases/mysqlwsrep80-server/files/patch-vio_viosslfactories.cc @@ -0,0 +1,26 @@ +--- vio/viosslfactories.cc.orig 2019-09-20 08:30:51 UTC ++++ vio/viosslfactories.cc +@@ -38,6 +38,7 @@ + + #ifdef HAVE_OPENSSL + #include ++#include + + #define TLS_VERSION_OPTION_SIZE 256 + #define SSL_CIPHER_LIST_SIZE 4096 +@@ -420,6 +421,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 +475,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/databases/mysqlwsrep80-server/files/pkg-message.in b/databases/mysqlwsrep80-server/files/pkg-message.in new file mode 100644 index 0000000..efe29e7 --- /dev/null +++ b/databases/mysqlwsrep80-server/files/pkg-message.in @@ -0,0 +1,21 @@ +[ +{ type: install + message: <