aboutsummaryrefslogtreecommitdiff
path: root/databases
diff options
context:
space:
mode:
authorNikolai Lifanov <lifanov@FreeBSD.org>2017-01-07 20:34:46 +0000
committerNikolai Lifanov <lifanov@FreeBSD.org>2017-01-07 20:34:46 +0000
commitc93ab7fefa27cc2640ad10481f106ecc089d83d5 (patch)
tree317be9105acc04fa055523ebb9f20f1cc249c71f /databases
parent762deaa84770083e4961228f69acee8cc8b54293 (diff)
downloadports-c93ab7fefa27cc2640ad10481f106ecc089d83d5.tar.gz
ports-c93ab7fefa27cc2640ad10481f106ecc089d83d5.zip
add databases/mysql80-server and databases/mysql80-client
This is a development snapshot of upcoming MySQL 8.0. PR: 215738 Submitted by: Mahdi Mokhtari <mokhi64@gmail.com> Reviewed by: matthew, feld Approved by: matthew (mentor), feld Differential Revision: https://reviews.freebsd.org/D9031
Notes
Notes: svn path=/head/; revision=430827
Diffstat (limited to 'databases')
-rw-r--r--databases/Makefile2
-rw-r--r--databases/mysql80-client/Makefile42
-rw-r--r--databases/mysql80-client/files/patch-CMakeLists.txt36
-rw-r--r--databases/mysql80-client/files/patch-client_CMakeLists.txt36
-rw-r--r--databases/mysql80-client/files/patch-cmake_os_DragonFly.cmake27
-rw-r--r--databases/mysql80-client/files/patch-cmake_ssl.cmake15
-rw-r--r--databases/mysql80-client/files/patch-cmd-line-utils_libedit_chartype.h11
-rw-r--r--databases/mysql80-client/files/patch-cmd-line-utils_libedit_vi.c20
-rw-r--r--databases/mysql80-client/files/patch-extra_CMakeLists.txt33
-rw-r--r--databases/mysql80-client/files/patch-include_CMakeLists.txt10
-rw-r--r--databases/mysql80-client/files/patch-include_my__compare.h11
-rw-r--r--databases/mysql80-client/files/patch-include_myisam.h11
-rw-r--r--databases/mysql80-client/files/patch-libmysql_CMakeLists.txt11
-rw-r--r--databases/mysql80-client/files/patch-man_CMakeLists.txt13
-rw-r--r--databases/mysql80-client/files/patch-mysys__ssl_my__default.cc61
-rw-r--r--databases/mysql80-client/files/patch-scripts_CMakeLists.txt64
-rw-r--r--databases/mysql80-client/files/patch-storage_myisam_mi__dynrec.c23
-rw-r--r--databases/mysql80-client/files/patch-support-files_CMakeLists.txt37
-rw-r--r--databases/mysql80-client/pkg-message12
-rw-r--r--databases/mysql80-client/pkg-plist163
-rw-r--r--databases/mysql80-server/Makefile167
-rw-r--r--databases/mysql80-server/distinfo3
-rw-r--r--databases/mysql80-server/files/extra-patch-config.h.cmake12
-rw-r--r--databases/mysql80-server/files/my.cnf.sample.in64
-rw-r--r--databases/mysql80-server/files/mysql-server.in96
-rw-r--r--databases/mysql80-server/files/patch-CMakeLists.txt40
-rw-r--r--databases/mysql80-server/files/patch-client_CMakeLists.txt60
-rw-r--r--databases/mysql80-server/files/patch-cmake_plugin.cmake12
-rw-r--r--databases/mysql80-server/files/patch-cmake_ssl.cmake15
-rw-r--r--databases/mysql80-server/files/patch-cmd-line-utils_libedit_chartype.h11
-rw-r--r--databases/mysql80-server/files/patch-cmd-line-utils_libedit_vi.c20
-rw-r--r--databases/mysql80-server/files/patch-include_CMakeLists.txt19
-rw-r--r--databases/mysql80-server/files/patch-include_my__compare.h11
-rw-r--r--databases/mysql80-server/files/patch-include_my__thread__os__id.h15
-rw-r--r--databases/mysql80-server/files/patch-include_myisam.h11
-rw-r--r--databases/mysql80-server/files/patch-libmysql_CMakeLists.txt29
-rw-r--r--databases/mysql80-server/files/patch-libservices_CMakeLists.txt9
-rw-r--r--databases/mysql80-server/files/patch-man_CMakeLists.txt11
-rw-r--r--databases/mysql80-server/files/patch-mysys__ssl_my__default.cc61
-rw-r--r--databases/mysql80-server/files/patch-plugin_password__validation_validate__password.cc11
-rw-r--r--databases/mysql80-server/files/patch-rapid_plugin_x_CMakeLists.txt20
-rw-r--r--databases/mysql80-server/files/patch-rapid_plugin_x_mysqlx__configure.cmake15
-rw-r--r--databases/mysql80-server/files/patch-rapid_unittest_gunit_xplugin_CMakeLists.txt18
-rw-r--r--databases/mysql80-server/files/patch-scripts_CMakeLists.txt36
-rw-r--r--databases/mysql80-server/files/patch-sql_CMakeLists.txt11
-rw-r--r--databases/mysql80-server/files/patch-sql_conn__handler_socket__connection.cc30
-rw-r--r--databases/mysql80-server/files/patch-sql_histograms_histogram.h11
-rw-r--r--databases/mysql80-server/files/patch-sql_histograms_singleton.cc11
-rw-r--r--databases/mysql80-server/files/patch-sql_histograms_singleton.h20
-rw-r--r--databases/mysql80-server/files/patch-sql_json__dom.h11
-rw-r--r--databases/mysql80-server/files/patch-sql_sys__vars.cc38
-rw-r--r--databases/mysql80-server/files/patch-storage_innobase_buf_buf0buf.cc11
-rw-r--r--databases/mysql80-server/files/patch-storage_innobase_dict_dict0stats.cc11
-rw-r--r--databases/mysql80-server/files/patch-storage_innobase_include_srv0mon.h13
-rw-r--r--databases/mysql80-server/files/patch-storage_innobase_sync_sync0debug.cc11
-rw-r--r--databases/mysql80-server/files/patch-storage_innobase_trx_trx0purge.cc11
-rw-r--r--databases/mysql80-server/files/patch-storage_innobase_trx_trx0trx.cc11
-rw-r--r--databases/mysql80-server/files/patch-storage_myisam_mi__dynrec.c23
-rw-r--r--databases/mysql80-server/files/patch-support-files_CMakeLists.txt12
-rw-r--r--databases/mysql80-server/files/rapid_plugin-patch-_x_mysqlxtest__src_mysqlxtest.cc12
-rw-r--r--databases/mysql80-server/pkg-descr15
-rw-r--r--databases/mysql80-server/pkg-message16
-rw-r--r--databases/mysql80-server/pkg-plist160
63 files changed, 1842 insertions, 0 deletions
diff --git a/databases/Makefile b/databases/Makefile
index e5098119dca3..156e488d8881 100644
--- a/databases/Makefile
+++ b/databases/Makefile
@@ -223,6 +223,8 @@
SUBDIR += mysql56-server
SUBDIR += mysql57-client
SUBDIR += mysql57-server
+ SUBDIR += mysql80-client
+ SUBDIR += mysql80-server
SUBDIR += mysqlbackup
SUBDIR += mysqlbigram
SUBDIR += mysqldump-secure
diff --git a/databases/mysql80-client/Makefile b/databases/mysql80-client/Makefile
new file mode 100644
index 000000000000..072b480c56a5
--- /dev/null
+++ b/databases/mysql80-client/Makefile
@@ -0,0 +1,42 @@
+# Created by: "Mahdi Mokhtari <mokhi64@gmail.com>"
+# $FreeBSD$
+
+PORTNAME= mysql
+PORTREVISION?= 0
+PKGNAMESUFFIX= 80-client
+
+COMMENT= Multithreaded SQL database (client)
+
+LICENSE+= LGPL21
+
+BROKEN_powerpc64= Does not build
+BROKEN_sparc64= Does not build: reports unsupported compiler
+
+MASTERDIR= ${.CURDIR}/../mysql80-server
+
+PKGMESSAGE= ${.CURDIR}/pkg-message
+PATCHDIR= ${.CURDIR}/files
+PLIST= ${.CURDIR}/pkg-plist
+
+CONFLICTS_INSTALL= mysql8[1-9]-client-* \
+ mysql[0-79][0-9]-client-* \
+ mariadb[0-9][0-9]-client-* \
+ percona[0-9][0-9]-client-*
+
+CMAKE_ARGS+= -DWITHOUT_SERVER=1
+
+USE_LDCONFIG+= ${PREFIX}/lib/mysql
+
+MMAN1= comp_err.1 msql2mysql.1 mysql.1 mysql_config.1 mysql_config_editor.1 mysql_find_rows.1 \
+ mysql_waitpid.1 mysqlaccess.1 mysqladmin.1 mysqlbinlog.1 \
+ mysqlcheck.1 mysqldump.1 mysqlimport.1 mysqlshow.1 mysqlslap.1
+
+CLIENT_ONLY= yes
+
+# issue 166367: adding symlinks for back-compatibility with ${lib}_r
+post-install:
+ @${LN} -s libmysqlclient.a ${STAGEDIR}${PREFIX}/lib/mysql/libmysqlclient_r.a
+ @${LN} -s libmysqlclient.so ${STAGEDIR}${PREFIX}/lib/mysql/libmysqlclient_r.so
+ @${LN} -s libmysqlclient.so.21 ${STAGEDIR}${PREFIX}/lib/mysql/libmysqlclient_r.so.21
+
+.include "${MASTERDIR}/Makefile"
diff --git a/databases/mysql80-client/files/patch-CMakeLists.txt b/databases/mysql80-client/files/patch-CMakeLists.txt
new file mode 100644
index 000000000000..4d202eb72f10
--- /dev/null
+++ b/databases/mysql80-client/files/patch-CMakeLists.txt
@@ -0,0 +1,36 @@
+--- CMakeLists.txt.orig 2016-03-28 18:06:12 UTC
++++ CMakeLists.txt
+@@ -606,8 +606,8 @@ ENDIF()
+
+ ADD_SUBDIRECTORY(extra)
+ ADD_SUBDIRECTORY(client)
+-ADD_SUBDIRECTORY(sql/share)
+ ADD_SUBDIRECTORY(libservices)
++ADD_SUBDIRECTORY(support-files)
+
+ IF(UNIX)
+ ADD_SUBDIRECTORY(man)
+@@ -676,14 +676,13 @@ ELSE()
+ SET(CPACK_GENERATOR "TGZ")
+ ENDIF()
+ ADD_SUBDIRECTORY(packaging/WiX)
+-ADD_SUBDIRECTORY(packaging/solaris)
+
+ IF(UNIX)
+- INSTALL(FILES Docs/mysql.info DESTINATION ${INSTALL_INFODIR} OPTIONAL COMPONENT Info)
+ ENDIF()
+ #
+ # RPM installs documentation directly from the source tree
+ #
++IF(FALSE)
+ IF(NOT INSTALL_LAYOUT MATCHES "RPM")
+ INSTALL(FILES COPYING LICENSE.mysql
+ DESTINATION ${INSTALL_DOCREADMEDIR}
+@@ -706,6 +705,7 @@ IF(NOT INSTALL_LAYOUT MATCHES "RPM")
+ PATTERN "sp-imp-spec.txt" EXCLUDE
+ )
+ ENDIF()
++ENDIF()
+
+ INCLUDE(CPack)
+
diff --git a/databases/mysql80-client/files/patch-client_CMakeLists.txt b/databases/mysql80-client/files/patch-client_CMakeLists.txt
new file mode 100644
index 000000000000..35bf110e5346
--- /dev/null
+++ b/databases/mysql80-client/files/patch-client_CMakeLists.txt
@@ -0,0 +1,36 @@
+--- client/CMakeLists.txt.orig 2016-08-25 12:32:09 UTC
++++ client/CMakeLists.txt
+@@ -47,6 +47,7 @@ IF(UNIX)
+ TARGET_LINK_LIBRARIES(mysql ${EDITLINE_LIBRARY})
+ ENDIF(UNIX)
+
++IF(FALSE)
+ IF(NOT WITHOUT_SERVER)
+ 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)
+ ENDIF()
++ENDIF()
+
++IF(FALSE)
+ MYSQL_ADD_EXECUTABLE(mysqltest mysqltest.cc COMPONENT Test)
+ SET_SOURCE_FILES_PROPERTIES(mysqltest.cc PROPERTIES COMPILE_FLAGS "-DTHREADS")
+ 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)
+
++IF(FALSE)
+ MYSQL_ADD_EXECUTABLE(mysql_secure_installation mysql_secure_installation.cc)
+ TARGET_LINK_LIBRARIES(mysql_secure_installation mysqlclient)
++ENDIF()
+
+ MYSQL_ADD_EXECUTABLE(mysql_ssl_rsa_setup mysql_ssl_rsa_setup.cc path.cc logger.cc)
+ TARGET_LINK_LIBRARIES(mysql_ssl_rsa_setup mysys mysys_ssl)
diff --git a/databases/mysql80-client/files/patch-cmake_os_DragonFly.cmake b/databases/mysql80-client/files/patch-cmake_os_DragonFly.cmake
new file mode 100644
index 000000000000..83c154ee3bcf
--- /dev/null
+++ b/databases/mysql80-client/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/mysql80-client/files/patch-cmake_ssl.cmake b/databases/mysql80-client/files/patch-cmake_ssl.cmake
new file mode 100644
index 000000000000..c9a66c421b23
--- /dev/null
+++ b/databases/mysql80-client/files/patch-cmake_ssl.cmake
@@ -0,0 +1,15 @@
+--- cmake/ssl.cmake.orig 2016-08-12 10:55:07 UTC
++++ cmake/ssl.cmake
+@@ -179,6 +179,12 @@ MACRO (MYSQL_CHECK_SSL)
+ OPENSSL_MAJOR_VERSION STREQUAL "1"
+ )
+ SET(OPENSSL_FOUND TRUE)
++ ELSEIF(OPENSSL_INCLUDE_DIR AND
++ OPENSSL_LIBRARY AND
++ CRYPTO_LIBRARY AND
++ OPENSSL_MAJOR_VERSION STREQUAL "2"
++ )
++ SET(OPENSSL_FOUND TRUE)
+ ELSE()
+ SET(OPENSSL_FOUND FALSE)
+ ENDIF()
diff --git a/databases/mysql80-client/files/patch-cmd-line-utils_libedit_chartype.h b/databases/mysql80-client/files/patch-cmd-line-utils_libedit_chartype.h
new file mode 100644
index 000000000000..34fbf5a45509
--- /dev/null
+++ b/databases/mysql80-client/files/patch-cmd-line-utils_libedit_chartype.h
@@ -0,0 +1,11 @@
+--- cmd-line-utils/libedit/chartype.h.orig 2016-03-28 18:06:12 UTC
++++ cmd-line-utils/libedit/chartype.h
+@@ -49,7 +49,7 @@
+ TODO : Verify if FreeBSD & AIX stores ISO 10646 in wchar_t. */
+ #if !defined(__NetBSD__) && !defined(__sun) \
+ && !(defined(__APPLE__) && defined(__MACH__)) \
+- && !defined(__FreeBSD__) && !defined(_AIX)
++ && !defined(__FreeBSD__) && !defined(_AIX) && !defined(__DragonFly__)
+ #ifndef __STDC_ISO_10646__
+ /* In many places it is assumed that the first 127 code points are ASCII
+ * compatible, so ensure wchar_t indeed does ISO 10646 and not some other
diff --git a/databases/mysql80-client/files/patch-cmd-line-utils_libedit_vi.c b/databases/mysql80-client/files/patch-cmd-line-utils_libedit_vi.c
new file mode 100644
index 000000000000..cb3e255991ab
--- /dev/null
+++ b/databases/mysql80-client/files/patch-cmd-line-utils_libedit_vi.c
@@ -0,0 +1,20 @@
+--- cmd-line-utils/libedit/vi.c.orig 2016-03-28 18:06:12 UTC
++++ cmd-line-utils/libedit/vi.c
+@@ -919,7 +919,7 @@ vi_comment_out(EditLine *el, Int c __att
+ * NB: posix implies that we should enter insert mode, however
+ * this is against historical precedent...
+ */
+-#if defined(__weak_reference) && !defined(__FreeBSD__)
++#if defined(__weak_reference) && !defined(__FreeBSD__) && !defined(__DragonFly__)
+ __weakref_visible char *my_get_alias_text(const char *)
+ __weak_reference(get_alias_text);
+ #endif
+@@ -928,7 +928,7 @@ protected el_action_t
+ vi_alias(EditLine *el __attribute__((__unused__)),
+ Int c __attribute__((__unused__)))
+ {
+-#if defined(__weak_reference) && !defined(__FreeBSD__)
++#if defined(__weak_reference) && !defined(__FreeBSD__) && !defined(__DragonFly__)
+ char alias_name[3];
+ char *alias_text;
+
diff --git a/databases/mysql80-client/files/patch-extra_CMakeLists.txt b/databases/mysql80-client/files/patch-extra_CMakeLists.txt
new file mode 100644
index 000000000000..045b98549e41
--- /dev/null
+++ b/databases/mysql80-client/files/patch-extra_CMakeLists.txt
@@ -0,0 +1,33 @@
+--- extra/CMakeLists.txt.orig 2016-03-28 18:06:12 UTC
++++ extra/CMakeLists.txt
+@@ -45,6 +45,7 @@ ENDIF()
+
+ ADD_CUSTOM_COMMAND(OUTPUT ${PROJECT_BINARY_DIR}/include/mysqld_error.h
+ ${PROJECT_BINARY_DIR}/sql/share/english/errmsg.sys
++ COMMAND mkdir -p ${PROJECT_BINARY_DIR}/sql/share/
+ COMMAND comp_err
+ --charset=${PROJECT_SOURCE_DIR}/sql/share/charsets
+ --out-dir=${PROJECT_BINARY_DIR}/sql/share/
+@@ -73,6 +74,7 @@ IF (WIN32 AND WITH_SSL_PATH AND HAVE_CRY
+ ENDIF()
+
+
++IF(FALSE)
+ MYSQL_ADD_EXECUTABLE(my_print_defaults my_print_defaults.c)
+ TARGET_LINK_LIBRARIES(my_print_defaults mysys mysys_ssl)
+ SET_TARGET_PROPERTIES(my_print_defaults PROPERTIES LINKER_LANGUAGE CXX)
+@@ -142,11 +144,14 @@ IF(WITH_INNOBASE_STORAGE_ENGINE)
+ TARGET_LINK_LIBRARIES(innochecksum mysys mysys_ssl ${LZ4_LIBRARY})
+ ADD_DEPENDENCIES(innochecksum GenError)
+ ENDIF()
++ENDIF()
+
++IF(FALSE)
+ IF(UNIX)
+ MYSQL_ADD_EXECUTABLE(resolve_stack_dump resolve_stack_dump.cc)
+ TARGET_LINK_LIBRARIES(resolve_stack_dump mysys mysys_ssl)
+ ENDIF()
++ENDIF()
+
+ # In published release builds on Solaris, we need to bundle gcc source.
+ # PB2 will take care of putting it in extra/ when needed
diff --git a/databases/mysql80-client/files/patch-include_CMakeLists.txt b/databases/mysql80-client/files/patch-include_CMakeLists.txt
new file mode 100644
index 000000000000..1fc41ad15601
--- /dev/null
+++ b/databases/mysql80-client/files/patch-include_CMakeLists.txt
@@ -0,0 +1,10 @@
+--- include/CMakeLists.txt.orig 2016-03-28 18:06:12 UTC
++++ include/CMakeLists.txt
+@@ -38,6 +38,7 @@ SET(HEADERS_ABI
+
+ SET(HEADERS
+ ${HEADERS_ABI}
++ hash.h
+ my_dbug.h
+ m_string.h
+ my_sys.h
diff --git a/databases/mysql80-client/files/patch-include_my__compare.h b/databases/mysql80-client/files/patch-include_my__compare.h
new file mode 100644
index 000000000000..1a64142bb658
--- /dev/null
+++ b/databases/mysql80-client/files/patch-include_my__compare.h
@@ -0,0 +1,11 @@
+--- include/my_compare.h.orig 2016-03-28 18:06:12 UTC
++++ include/my_compare.h
+@@ -40,7 +40,7 @@ extern "C" {
+ 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/mysql80-client/files/patch-include_myisam.h b/databases/mysql80-client/files/patch-include_myisam.h
new file mode 100644
index 000000000000..0a4b795e9426
--- /dev/null
+++ b/databases/mysql80-client/files/patch-include_myisam.h
@@ -0,0 +1,11 @@
+--- include/myisam.h.orig 2016-03-28 18:06:12 UTC
++++ include/myisam.h
+@@ -45,7 +45,7 @@ extern "C" {
+ 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/mysql80-client/files/patch-libmysql_CMakeLists.txt b/databases/mysql80-client/files/patch-libmysql_CMakeLists.txt
new file mode 100644
index 000000000000..b90821a7f767
--- /dev/null
+++ b/databases/mysql80-client/files/patch-libmysql_CMakeLists.txt
@@ -0,0 +1,11 @@
+--- libmysql/CMakeLists.txt.orig 2016-03-28 18:06:12 UTC
++++ libmysql/CMakeLists.txt
+@@ -260,7 +260,7 @@ IF(NOT DISABLE_SHARED)
+ COMPONENT SharedLibraries)
+ IF(UNIX)
+ # libtool compatability
+- IF(CMAKE_SYSTEM_NAME MATCHES "FreeBSD" OR APPLE)
++ IF(CMAKE_SYSTEM_NAME MATCHES "FreeBSD|DragonFly" OR APPLE)
+ SET(OS_SHARED_LIB_VERSION "${SHARED_LIB_MAJOR_VERSION}")
+ ELSE()
+ SET(OS_SHARED_LIB_VERSION
diff --git a/databases/mysql80-client/files/patch-man_CMakeLists.txt b/databases/mysql80-client/files/patch-man_CMakeLists.txt
new file mode 100644
index 000000000000..e02a804949d8
--- /dev/null
+++ b/databases/mysql80-client/files/patch-man_CMakeLists.txt
@@ -0,0 +1,13 @@
+--- man/CMakeLists.txt.orig 2015-11-29 19:16:24 UTC
++++ man/CMakeLists.txt
+@@ -15,10 +15,6 @@
+
+ # Copy man pages
+ FILE(GLOB MAN1_FILES *.1)
+-FILE(GLOB MAN1_EXCLUDE make_win_bin_dist.1)
+-FILE(GLOB MAN1_NDB ndb*.1)
+-FILE(GLOB MAN8_FILES *.8)
+-FILE(GLOB MAN8_NDB ndb*.8)
+ IF(MAN1_FILES)
+ IF(MAN1_EXCLUDE)
+ LIST(REMOVE_ITEM MAN1_FILES ${MAN1_EXCLUDE})
diff --git a/databases/mysql80-client/files/patch-mysys__ssl_my__default.cc b/databases/mysql80-client/files/patch-mysys__ssl_my__default.cc
new file mode 100644
index 000000000000..ea05679341fa
--- /dev/null
+++ b/databases/mysql80-client/files/patch-mysys__ssl_my__default.cc
@@ -0,0 +1,61 @@
+--- mysys_ssl/my_default.cc.orig 2016-08-25 11:52:06 UTC
++++ mysys_ssl/my_default.cc
+@@ -114,7 +114,7 @@ static my_bool defaults_already_read= FA
+
+ /* 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;
+
+@@ -914,6 +914,14 @@ static int search_default_file_with_ext(
+ 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++;
+@@ -1252,7 +1260,8 @@ void my_print_default_files(const char *
+ end[(strlen(end)-1)] = ' ';
+ else
+ strxmov(end, conf_file, *ext , " ", NullS);
+- fputs(name, stdout);
++ if (strstr(name, "/etc") != name)
++ fputs(name, stdout);
+ }
+ }
+ }
+@@ -1411,13 +1420,8 @@ static const char **init_default_directo
+
+ #else
+
+- errors += add_directory(alloc, "/etc/", dirs);
+- errors += add_directory(alloc, "/etc/mysql/", dirs);
+-
+-#if defined(DEFAULT_SYSCONFDIR)
+- if (DEFAULT_SYSCONFDIR[0])
+- errors += add_directory(alloc, DEFAULT_SYSCONFDIR, dirs);
+-#endif /* DEFAULT_SYSCONFDIR */
++ errors += add_directory(alloc, "/usr/local/etc/", dirs);
++ errors += add_directory(alloc, "/usr/local/etc/mysql/", dirs);
+
+ #endif
+
+@@ -1488,7 +1492,7 @@ int check_file_permissions(const char *f
+ MY_STAT stat_info;
+
+ if (!my_stat(file_name,&stat_info,MYF(0)))
+- return 1;
++ return 0;
+ /*
+ Ignore .mylogin.cnf file if not exclusively readable/writable
+ by current user.
diff --git a/databases/mysql80-client/files/patch-scripts_CMakeLists.txt b/databases/mysql80-client/files/patch-scripts_CMakeLists.txt
new file mode 100644
index 000000000000..3e59f3170ddd
--- /dev/null
+++ b/databases/mysql80-client/files/patch-scripts_CMakeLists.txt
@@ -0,0 +1,64 @@
+--- scripts/CMakeLists.txt.orig 2016-03-28 18:06:12 UTC
++++ scripts/CMakeLists.txt
+@@ -43,6 +43,7 @@ ELSE()
+ MESSAGE(FATAL_ERROR "Cannot concatenate files")
+ ENDIF()
+
++IF(FALSE)
+ # 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
+ DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/mysql_fix_privilege_tables_sql.c
+ ${CMAKE_CURRENT_BINARY_DIR}/sql_commands_sys_schema.h
+ )
++ENDIF()
+
+ # 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)
+ )
+ ENDIF()
+
++IF(FALSE)
+ IF(UNIX)
+ 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)
+ 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)
+ 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()
+@@ -430,19 +436,7 @@ ELSE()
+ # On Unix, most of the files end up in the bin directory
+ SET(mysql_config_COMPONENT COMPONENT Development)
+
+- IF(WITH_SYSTEMD)
+- SET(BIN_SCRIPTS
+- mysql_config
+- mysqldumpslow
+- )
+- ELSE()
+- SET(BIN_SCRIPTS
+- mysql_config
+- mysqldumpslow
+- mysqld_multi
+- mysqld_safe
+- )
+- ENDIF()
++ SET(BIN_SCRIPTS mysql_config)
+
+ SET(PKGCONFIG_FILE ${LIBMYSQL_OS_OUTPUT_NAME}.pc)
+ STRING(REGEX REPLACE "/mysql$" "" PKGCONFIG_DIR "${INSTALL_LIBDIR}")
diff --git a/databases/mysql80-client/files/patch-storage_myisam_mi__dynrec.c b/databases/mysql80-client/files/patch-storage_myisam_mi__dynrec.c
new file mode 100644
index 000000000000..282cffdbcbc5
--- /dev/null
+++ b/databases/mysql80-client/files/patch-storage_myisam_mi__dynrec.c
@@ -0,0 +1,23 @@
+--- storage/myisam/mi_dynrec.c.orig 2016-03-28 18:06:12 UTC
++++ storage/myisam/mi_dynrec.c
+@@ -65,18 +65,13 @@ my_bool mi_dynmap_file(MI_INFO *info, my
+ DBUG_RETURN(1);
+ }
+ /*
+- 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(0, (size_t) size,
+ info->s->mode==O_RDONLY ? PROT_READ :
+ PROT_READ | PROT_WRITE,
+- MAP_SHARED | MAP_NORESERVE,
++ MAP_SHARED,
+ info->dfile, 0L);
+ if (info->s->file_map == (uchar*) MAP_FAILED)
+ {
diff --git a/databases/mysql80-client/files/patch-support-files_CMakeLists.txt b/databases/mysql80-client/files/patch-support-files_CMakeLists.txt
new file mode 100644
index 000000000000..218a1e701b67
--- /dev/null
+++ b/databases/mysql80-client/files/patch-support-files_CMakeLists.txt
@@ -0,0 +1,37 @@
+--- support-files/CMakeLists.txt.orig 2016-03-28 18:06:12 UTC
++++ support-files/CMakeLists.txt
+@@ -44,14 +44,17 @@ ELSE()
+ SET(inst_location ${INSTALL_SUPPORTFILESDIR})
+ ENDIF()
+
++IF(FALSE)
+ SET(inifile my-default)
+ CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${inifile}.cnf.sh
+ ${CMAKE_CURRENT_BINARY_DIR}/${inifile}.${ini_file_extension} @ONLY)
+ INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${inifile}.${ini_file_extension}
+ DESTINATION ${inst_location} COMPONENT IniFiles)
++ENDIF()
+
+ IF(UNIX)
+ SET(prefix ${CMAKE_INSTALL_PREFIX})
++IF(FALSE)
+ FOREACH(script mysqld_multi.server mysql-log-rotate)
+ CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${script}.sh
+ ${CMAKE_CURRENT_BINARY_DIR}/${script} @ONLY )
+@@ -68,9 +71,11 @@ IF(UNIX)
+ IF(INSTALL_SUPPORTFILESDIR)
+ INSTALL(FILES magic DESTINATION ${inst_location} COMPONENT SupportFiles)
+ ENDIF()
++ENDIF()
+
+ INSTALL(FILES mysql.m4 DESTINATION ${INSTALL_SHAREDIR}/aclocal COMPONENT Development)
+
++IF(FALSE)
+ SET(bindir ${prefix}/${INSTALL_BINDIR})
+ SET(sbindir ${prefix}/${INSTALL_SBINDIR})
+ SET(scriptdir ${prefix}/${INSTALL_SCRIPTDIR})
+@@ -83,3 +88,4 @@ IF(UNIX)
+ PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ
+ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
+ ENDIF()
++ENDIF()
diff --git a/databases/mysql80-client/pkg-message b/databases/mysql80-client/pkg-message
new file mode 100644
index 000000000000..f94e2e7223fd
--- /dev/null
+++ b/databases/mysql80-client/pkg-message
@@ -0,0 +1,12 @@
+* * * * * * * * * * * * * * * * * * * * * * * *
+
+This is the mysql CLIENT without the server.
+for complete server and client, please install databases/mysql80-server
+
+* * * * * * * * * * * * * * * * * * * * * * * *
+
+* * * * * * * * * * * * * * * * * * * * * * * *
+
+WARNING: THIS IS STILL-IN-DEV PROJECT! USE WITH CAUTION ON PRODUCTION ENVS!
+
+* * * * * * * * * * * * * * * * * * * * * * * *
diff --git a/databases/mysql80-client/pkg-plist b/databases/mysql80-client/pkg-plist
new file mode 100644
index 000000000000..5ddbca8c8fe9
--- /dev/null
+++ b/databases/mysql80-client/pkg-plist
@@ -0,0 +1,163 @@
+bin/mysql
+bin/mysql_config
+bin/mysql_config_editor
+bin/mysql_ssl_rsa_setup
+bin/mysqladmin
+bin/mysqlbinlog
+bin/mysqlcheck
+bin/mysqldump
+bin/mysqlimport
+bin/mysqlpump
+bin/mysqlshow
+bin/mysqlslap
+include/mysql/binary_log_types.h
+include/mysql/big_endian.h
+include/mysql/byte_order_generic.h
+include/mysql/byte_order_generic_x86.h
+include/mysql/decimal.h
+include/mysql/errmsg.h
+include/mysql/hash.h
+include/mysql/keycache.h
+include/mysql/little_endian.h
+include/mysql/m_ctype.h
+include/mysql/m_string.h
+include/mysql/my_alloc.h
+include/mysql/my_byteorder.h
+include/mysql/my_command.h
+include/mysql/my_compiler.h
+include/mysql/my_config.h
+include/mysql/my_dbug.h
+include/mysql/my_dir.h
+include/mysql/my_getopt.h
+include/mysql/my_global.h
+include/mysql/my_list.h
+include/mysql/my_sys.h
+include/mysql/my_thread.h
+include/mysql/my_thread_local.h
+include/mysql/my_xml.h
+include/mysql/mysql.h
+include/mysql/mysql/client_authentication.h
+include/mysql/mysql/client_plugin.h
+include/mysql/mysql/client_plugin.h.pp
+include/mysql/mysql/com_data.h
+include/mysql/mysql/get_password.h
+include/mysql/mysql/group_replication_priv.h
+include/mysql/mysql/innodb_priv.h
+include/mysql/mysql/mysql_lex_string.h
+include/mysql/mysql/plugin.h
+include/mysql/mysql/plugin_audit.h
+include/mysql/mysql/plugin_audit.h.pp
+include/mysql/mysql/plugin_auth.h
+include/mysql/mysql/plugin_auth.h.pp
+include/mysql/mysql/plugin_auth_common.h
+include/mysql/mysql/plugin_ftparser.h
+include/mysql/mysql/plugin_ftparser.h.pp
+include/mysql/mysql/plugin_group_replication.h
+include/mysql/mysql/plugin_keyring.h
+include/mysql/mysql/plugin_keyring.h.pp
+include/mysql/mysql/plugin_query_rewrite.h
+include/mysql/mysql/plugin_trace.h
+include/mysql/mysql/plugin_validate_password.h
+include/mysql/mysql/components/component_implementation.h
+include/mysql/mysql/components/my_service.h
+include/mysql/mysql/components/service.h
+include/mysql/mysql/components/service_implementation.h
+include/mysql/mysql/components/services/dynamic_loader.h
+include/mysql/mysql/components/services/dynamic_loader_scheme_file.h
+include/mysql/mysql/components/services/persistent_dynamic_loader.h
+include/mysql/mysql/components/services/registry.h
+include/mysql/mysql/psi/mysql_cond.h
+include/mysql/mysql/psi/mysql_error.h
+include/mysql/mysql/psi/mysql_mutex.h
+include/mysql/mysql/psi/mysql_rwlock.h
+include/mysql/mysql/psi/psi_cond.h
+include/mysql/mysql/psi/psi_error.h
+include/mysql/mysql/psi/psi_file.h
+include/mysql/mysql/psi/psi_idle.h
+include/mysql/mysql/psi/psi_mdl.h
+include/mysql/mysql/psi/psi_mutex.h
+include/mysql/mysql/psi/psi_rwlock.h
+include/mysql/mysql/psi/psi_socket.h
+include/mysql/mysql/psi/psi_stage.h
+include/mysql/mysql/psi/psi_statement.h
+include/mysql/mysql/psi/psi_table.h
+include/mysql/mysql/psi/psi_thread.h
+include/mysql/mysql/psi/psi_transaction.h
+include/mysql/mysql/psi/mysql_file.h
+include/mysql/mysql/psi/mysql_idle.h
+include/mysql/mysql/psi/mysql_mdl.h
+include/mysql/mysql/psi/mysql_memory.h
+include/mysql/mysql/psi/mysql_ps.h
+include/mysql/mysql/psi/mysql_socket.h
+include/mysql/mysql/psi/mysql_sp.h
+include/mysql/mysql/psi/mysql_stage.h
+include/mysql/mysql/psi/mysql_statement.h
+include/mysql/mysql/psi/mysql_table.h
+include/mysql/mysql/psi/mysql_thread.h
+include/mysql/mysql/psi/mysql_transaction.h
+include/mysql/mysql/psi/psi_base.h
+include/mysql/mysql/psi/psi_memory.h
+include/mysql/mysql/service_command.h
+include/mysql/mysql/service_locking.h
+include/mysql/mysql/service_my_plugin_log.h
+include/mysql/mysql/service_my_snprintf.h
+include/mysql/mysql/service_mysql_alloc.h
+include/mysql/mysql/service_mysql_keyring.h
+include/mysql/mysql/service_mysql_password_policy.h
+include/mysql/mysql/service_mysql_string.h
+include/mysql/mysql/service_parser.h
+include/mysql/mysql/service_rpl_transaction_ctx.h
+include/mysql/mysql/service_rpl_transaction_write_set.h
+include/mysql/mysql/service_rules_table.h
+include/mysql/mysql/service_security_context.h
+include/mysql/mysql/service_srv_session.h
+include/mysql/mysql/service_srv_session_info.h
+include/mysql/mysql/service_ssl_wrapper.h
+include/mysql/mysql/service_thd_alloc.h
+include/mysql/mysql/service_thd_engine_lock.h
+include/mysql/mysql/service_thd_wait.h
+include/mysql/mysql/service_thread_scheduler.h
+include/mysql/mysql/services.h
+include/mysql/mysql/services.h.pp
+include/mysql/mysql/thread_pool_priv.h
+include/mysql/mysql/thread_type.h
+include/mysql/mysql_com.h
+include/mysql/mysql_com_server.h
+include/mysql/mysql_time.h
+include/mysql/mysql_version.h
+include/mysql/mysqld_ername.h
+include/mysql/mysqld_error.h
+include/mysql/plugin.h
+include/mysql/plugin_audit.h
+include/mysql/plugin_ftparser.h
+include/mysql/plugin_group_replication.h
+include/mysql/plugin_keyring.h
+include/mysql/plugin_validate_password.h
+include/mysql/sql_common.h
+include/mysql/sslopt-case.h
+include/mysql/sslopt-longopts.h
+include/mysql/sslopt-vars.h
+include/mysql/thr_cond.h
+include/mysql/thr_mutex.h
+include/mysql/thr_rwlock.h
+include/mysql/typelib.h
+lib/mysql/libmysqlclient.a
+lib/mysql/libmysqlclient.so
+lib/mysql/libmysqlclient.so.21
+lib/mysql/libmysqlservices.a
+lib/mysql/libmysqlclient_r.a
+lib/mysql/libmysqlclient_r.so
+lib/mysql/libmysqlclient_r.so.21
+libdata/pkgconfig/mysqlclient.pc
+man/man1/comp_err.1.gz
+man/man1/mysql.1.gz
+man/man1/mysql_config.1.gz
+man/man1/mysql_config_editor.1.gz
+man/man1/mysqladmin.1.gz
+man/man1/mysqlbinlog.1.gz
+man/man1/mysqlcheck.1.gz
+man/man1/mysqldump.1.gz
+man/man1/mysqlimport.1.gz
+man/man1/mysqlshow.1.gz
+man/man1/mysqlslap.1.gz
+share/aclocal/mysql.m4
diff --git a/databases/mysql80-server/Makefile b/databases/mysql80-server/Makefile
new file mode 100644
index 000000000000..43006ffd2c86
--- /dev/null
+++ b/databases/mysql80-server/Makefile
@@ -0,0 +1,167 @@
+# Created by: Mahdi Mokhtari <mokhi64@gmail.com>
+# $FreeBSD$
+
+PORTNAME?= mysql
+PORTVERSION= 8.0.0
+DISTVERSIONSUFFIX?= -dmr
+PORTREVISION?= 0
+CATEGORIES= databases ipv6
+MASTER_SITES= MYSQL/MySQL-8.0
+PKGNAMESUFFIX?= 80-server
+DISTNAME= ${PORTNAME}-boost-${PORTVERSION}${DISTVERSIONSUFFIX}
+
+MAINTAINER= mokhi64@gmail.com
+COMMENT?= Multithreaded SQL database (server)
+
+LICENSE= GPLv2
+
+WRKSRC= ${WRKDIR}/${PORTNAME}-${PORTVERSION}${DISTVERSIONSUFFIX}
+
+SLAVEDIRS= databases/mysql80-client
+USES= bison:build cmake:outsource compiler:c11 compiler:c++11-lib \
+ cpe libedit localbase perl5 shebangfix ssl
+
+USE_PERL5= run
+
+MY_DBDIR= /var/db/mysql
+MY_SECDIR= /var/db/mysql_secure
+MY_TMPDIR= /var/db/mysql_tmpdir
+
+LIB_DEPENDS+= libevent.so:devel/libevent2 \
+ liblz4.so:archivers/liblz4
+
+CMAKE_BUILD_TYPE= Release
+
+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" \
+ -DINSTALL_LIBDIR="lib/mysql" \
+ -DINSTALL_MANDIR="man" \
+ -DINSTALL_MYSQLDATADIR="${MY_DBDIR}" \
+ -DINSTALL_MYSQLKEYRINGDIR="etc/mysql/keyring" \
+ -DINSTALL_MYSQLSHAREDIR="share/mysql" \
+ -DINSTALL_MYSQLTESTDIR="share/mysql/tests" \
+ -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_EDITLINE=system \
+ -DWITH_LIBEVENT=system \
+ -DWITH_LZ4=system \
+ -DWITH_ZLIB=system \
+ -DINSTALL_MYSQLTESTDIR=0
+
+SHEBANG_FILES= scripts/*.pl* scripts/*.sh
+
+.ifdef USE_MYSQL
+.error 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-* \
+ mariadb[0-9][0-9]-server-* \
+ percona[0-9][0-9]-server-*
+
+USE_RC_SUBR= mysql-server
+
+SUB_FILES= my.cnf.sample
+
+USERS= mysql
+GROUPS= mysql
+
+USE_LDCONFIG+= ${PREFIX}/lib/mysql/plugin
+
+MMAN1= my_print_defaults.1 myisam_ftdump.1 myisamchk.1 myisamlog.1 myisampack.1 \
+ mysql.server.1 mysql_convert_table_format.1 mysql_fix_extensions.1 \
+ mysql_install_db.1 mysql_plugin.1 mysql_secure_installation.1 mysql_setpermission.1 \
+ mysql_tzinfo_to_sql.1 mysql_upgrade.1 mysql_zap.1 mysqlbug.1 \
+ mysqld_multi.1 mysqld_safe.1 mysqldumpslow.1 mysqlhotcopy.1 mysqlman.1 \
+ mysqltest.1 perror.1 replace.1 resolve_stack_dump.1 resolveip.1
+
+CMAKE_ARGS+= -DWITH_EMBEDDED_SERVER="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"
+.endif
+
+.include <bsd.port.options.mk>
+
+### Just for the sake of FreeBSD 9.X ###
+.if ${OPSYS} == FreeBSD && ${OSVERSION} < 1000000
+. if !defined(CLIENT_ONLY)
+EXTRA_PATCHES+= ${PATCHDIR}/rapid_plugin-patch-_x_mysqlxtest__src_mysqlxtest.cc
+. endif
+.endif
+
+.include <bsd.port.pre.mk>
+
+.if ${SSL_DEFAULT} == base
+BROKEN_FreeBSD_9= FreeBSD 9.x requires SSL from ports
+CMAKE_ARGS+= -DWITH_SSL=system
+.else
+CMAKE_ARGS+= -DWITH_SSL=${OPENSSLBASE}
+.endif
+
+post-extract:
+ @${RM} -rv ${WRKSRC}/sql/sql_hints.yy.cc ${WRKSRC}/sql/sql_hints.yy.h
+
+post-patch:
+ @${REINPLACE_CMD} 's/*.1/${MMAN1}/' ${WRKSRC}/man/CMakeLists.txt
+
+.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 <bsd.port.post.mk>
diff --git a/databases/mysql80-server/distinfo b/databases/mysql80-server/distinfo
new file mode 100644
index 000000000000..cd9b2dd6ff9f
--- /dev/null
+++ b/databases/mysql80-server/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1483372244
+SHA256 (mysql-boost-8.0.0-dmr.tar.gz) = e5b7b77e532c906dc30f12b821950426b8205a64b5a77c26681e2109a3b6a5fc
+SIZE (mysql-boost-8.0.0-dmr.tar.gz) = 65567795
diff --git a/databases/mysql80-server/files/extra-patch-config.h.cmake b/databases/mysql80-server/files/extra-patch-config.h.cmake
new file mode 100644
index 000000000000..3ac1add1b9ce
--- /dev/null
+++ b/databases/mysql80-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/mysql80-server/files/my.cnf.sample.in b/databases/mysql80-server/files/my.cnf.sample.in
new file mode 100644
index 000000000000..7d20c4aa558d
--- /dev/null
+++ b/databases/mysql80-server/files/my.cnf.sample.in
@@ -0,0 +1,64 @@
+# $FreeBSD$
+
+[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
+query_cache_type = 0
+query_cache_size = 0
+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/mysql80-server/files/mysql-server.in b/databases/mysql80-server/files/mysql-server.in
new file mode 100644
index 000000000000..03c57e7d15b8
--- /dev/null
+++ b/databases/mysql80-server/files/mysql-server.in
@@ -0,0 +1,96 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+
+# 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.
+# mysql_limits (bool): Set to "NO" by default.
+# Set it to yes to run `limits -e -U mysql`
+# 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.
+# Default to "${mysql_confdir}/my.cnf".
+# 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"}
+: ${mysql_limits="NO"}
+: ${mysql_dbdir="%%MY_DBDIR%%"}
+: ${mysql_confdir="%%ETCDIR%%"}
+if [ -f "${mysql_dbdir}/my.cnf" ]; then
+: ${mysql_optfile="${mysql_dbdir}/my.cnf"}
+else
+: ${mysql_optfile="${mysql_confdir}/my.cnf"}
+fi
+
+mysql_user="mysql"
+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 --defaults-extra-file=${mysql_optfile} --basedir=%%PREFIX%% --datadir=${mysql_dbdir} --pid-file=${pidfile} --user=${mysql_user} ${mysql_args} %%PERFSCHEMRC%%"
+procname="%%PREFIX%%/libexec/mysqld"
+start_precmd="${name}_prestart"
+start_postcmd="${name}_poststart"
+mysql_install_db="%%PREFIX%%/bin/mysql_install_db"
+mysql_install_db_args="--defaults-extra-file=${mysql_optfile} --basedir=%%PREFIX%% --datadir=${mysql_dbdir} --mysqld-file=${procname} --user=${mysql_user}"
+
+mysql_create_auth_tables()
+{
+ eval $mysql_install_db $mysql_install_db_args >/dev/null 2>/dev/null
+}
+
+mysql_prestart()
+{
+ if [ -f "${mysql_dbdir}/my.cnf" ]; then
+ echo ""
+ echo "Please keep in mind that the default location for my.cnf has changed"
+ echo "from \"%%MY_DBDIR%%/my.cnf\" to \"%%ETCDIR%%/my.cnf\". "
+ echo "Please merge your existing my.cnf with the new default and move"
+ echo "it to \"%%ETCDIR%%/my.cnf\"."
+ echo "If you do not want to move your my.cnf to the new location then"
+ echo "you must set \"mysql_optfile\" in /etc/rc.conf to \"/var/db/mysql/my.cnf\"."
+ echo ""
+ fi
+
+ if [ ! -d "${mysql_dbdir}/mysql" ]; then
+ mysql_create_auth_tables || return 1
+ fi
+ if checkyesno mysql_limits; then
+ eval `/usr/bin/limits ${mysql_limits_args}` 2>/dev/null
+ else
+ return 0
+ fi
+}
+
+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/mysql80-server/files/patch-CMakeLists.txt b/databases/mysql80-server/files/patch-CMakeLists.txt
new file mode 100644
index 000000000000..fe05a9c83935
--- /dev/null
+++ b/databases/mysql80-server/files/patch-CMakeLists.txt
@@ -0,0 +1,40 @@
+--- CMakeLists.txt.orig 2016-03-28 18:06:12 UTC
++++ CMakeLists.txt
+@@ -614,12 +614,10 @@ IF(UNIX)
+ ENDIF()
+
+ IF(NOT WITHOUT_SERVER)
+- ADD_SUBDIRECTORY(testclients)
+ ADD_SUBDIRECTORY(sql)
+ OPTION (WITH_EMBEDDED_SERVER "Compile MySQL with embedded server" OFF)
+ IF(WITH_EMBEDDED_SERVER)
+ ADD_SUBDIRECTORY(libmysqld)
+- ADD_SUBDIRECTORY(libmysqld/examples)
+ ENDIF(WITH_EMBEDDED_SERVER)
+ ENDIF()
+
+@@ -628,8 +626,6 @@ ENDIF()
+ ADD_SUBDIRECTORY(scripts)
+
+ IF(NOT WITHOUT_SERVER)
+- ADD_SUBDIRECTORY(mysql-test)
+- ADD_SUBDIRECTORY(mysql-test/lib/My/SafeProcess)
+ ADD_SUBDIRECTORY(support-files)
+ IF(EXISTS ${CMAKE_SOURCE_DIR}/internal/CMakeLists.txt)
+ ADD_SUBDIRECTORY(internal)
+@@ -684,6 +680,7 @@ ENDIF()
+ #
+ # RPM installs documentation directly from the source tree
+ #
++IF(FALSE)
+ IF(NOT INSTALL_LAYOUT MATCHES "RPM")
+ INSTALL(FILES COPYING LICENSE.mysql
+ DESTINATION ${INSTALL_DOCREADMEDIR}
+@@ -706,6 +703,7 @@ IF(NOT INSTALL_LAYOUT MATCHES "RPM")
+ PATTERN "sp-imp-spec.txt" EXCLUDE
+ )
+ ENDIF()
++ENDIF()
+
+ INCLUDE(CPack)
+
diff --git a/databases/mysql80-server/files/patch-client_CMakeLists.txt b/databases/mysql80-server/files/patch-client_CMakeLists.txt
new file mode 100644
index 000000000000..9ee6c19aff7a
--- /dev/null
+++ b/databases/mysql80-server/files/patch-client_CMakeLists.txt
@@ -0,0 +1,60 @@
+--- client/CMakeLists.txt.orig 2016-08-25 12:32:09 UTC
++++ client/CMakeLists.txt
+@@ -32,8 +32,6 @@ INCLUDE(${MYSQL_CMAKE_SCRIPT_DIR}/compil
+
+ ## Subdirectory with common client code.
+ ADD_SUBDIRECTORY(base)
+-## Subdirectory for mysqlpump code.
+-ADD_SUBDIRECTORY(dump)
+
+ ## We will need libeay32.dll and ssleay32.dll when running client executables.
+ COPY_OPENSSL_DLLS(copy_openssl_client)
+@@ -41,11 +39,13 @@ COPY_OPENSSL_DLLS(copy_openssl_client)
+ INCLUDE(${MYSQL_CMAKE_SCRIPT_DIR}/compile_flags.cmake)
+
+ ADD_DEFINITIONS(${SSL_DEFINES})
++IF(FALSE)
+ MYSQL_ADD_EXECUTABLE(mysql completion_hash.cc mysql.cc readline.cc ../sql-common/sql_string.cc)
+ TARGET_LINK_LIBRARIES(mysql mysqlclient)
+ IF(UNIX)
+ TARGET_LINK_LIBRARIES(mysql ${EDITLINE_LIBRARY})
+ ENDIF(UNIX)
++ENDIF()
+
+ IF(NOT WITHOUT_SERVER)
+ MYSQL_ADD_EXECUTABLE(mysql_upgrade
+@@ -66,6 +66,7 @@ ADD_DEPENDENCIES(mysqltest GenError GenC
+ ADD_CONVENIENCE_LIBRARY(mysqlcheck_core check/mysqlcheck_core.cc)
+ TARGET_LINK_LIBRARIES(mysqlcheck_core mysqlclient)
+
++IF(FALSE)
+ MYSQL_ADD_EXECUTABLE(mysqlcheck check/mysqlcheck.cc)
+ TARGET_LINK_LIBRARIES(mysqlcheck mysqlcheck_core)
+
+@@ -78,7 +79,9 @@ TARGET_LINK_LIBRARIES(mysqlimport mysqlc
+
+ MYSQL_ADD_EXECUTABLE(mysqlshow mysqlshow.cc)
+ TARGET_LINK_LIBRARIES(mysqlshow mysqlclient)
++ENDIF()
+
++IF(FALSE)
+ MYSQL_ADD_EXECUTABLE(mysqlbinlog mysqlbinlog.cc)
+ SET(MYSQLBINLOG_LIB_SOURCES
+ ${CMAKE_SOURCE_DIR}/strings/decimal.cc
+@@ -112,13 +115,16 @@ TARGET_LINK_LIBRARIES(mysqlslap mysqlcli
+
+ MYSQL_ADD_EXECUTABLE(mysql_config_editor mysql_config_editor.cc)
+ TARGET_LINK_LIBRARIES(mysql_config_editor mysqlclient)
++ENDIF()
+
+ MYSQL_ADD_EXECUTABLE(mysql_secure_installation mysql_secure_installation.cc)
+ TARGET_LINK_LIBRARIES(mysql_secure_installation mysqlclient)
+
++IF(FALSE)
+ MYSQL_ADD_EXECUTABLE(mysql_ssl_rsa_setup mysql_ssl_rsa_setup.cc path.cc logger.cc)
+ TARGET_LINK_LIBRARIES(mysql_ssl_rsa_setup mysys mysys_ssl)
+ SET_TARGET_PROPERTIES(mysql_ssl_rsa_setup PROPERTIES LINKER_LANGUAGE CXX)
++ENDIF()
+
+ # "WIN32" also covers 64 bit. "echo" is used in some files below "mysql-test/".
+ IF(WIN32)
diff --git a/databases/mysql80-server/files/patch-cmake_plugin.cmake b/databases/mysql80-server/files/patch-cmake_plugin.cmake
new file mode 100644
index 000000000000..65d4bc2b4d31
--- /dev/null
+++ b/databases/mysql80-server/files/patch-cmake_plugin.cmake
@@ -0,0 +1,12 @@
+--- cmake/plugin.cmake.orig 2016-03-28 18:06:12 UTC
++++ cmake/plugin.cmake
+@@ -237,9 +237,6 @@ MACRO(MYSQL_ADD_PLUGIN)
+ MYSQL_INSTALL_TARGETS(${target}
+ DESTINATION ${INSTALL_PLUGINDIR}
+ COMPONENT ${INSTALL_COMPONENT})
+- INSTALL_DEBUG_TARGET(${target}
+- DESTINATION ${INSTALL_PLUGINDIR}/debug
+- COMPONENT ${INSTALL_COMPONENT})
+ # Add installed files to list for RPMs
+ FILE(APPEND ${CMAKE_BINARY_DIR}/support-files/plugins.files
+ "%attr(755, root, root) %{_prefix}/${INSTALL_PLUGINDIR}/${ARG_MODULE_OUTPUT_NAME}.so\n"
diff --git a/databases/mysql80-server/files/patch-cmake_ssl.cmake b/databases/mysql80-server/files/patch-cmake_ssl.cmake
new file mode 100644
index 000000000000..c9a66c421b23
--- /dev/null
+++ b/databases/mysql80-server/files/patch-cmake_ssl.cmake
@@ -0,0 +1,15 @@
+--- cmake/ssl.cmake.orig 2016-08-12 10:55:07 UTC
++++ cmake/ssl.cmake
+@@ -179,6 +179,12 @@ MACRO (MYSQL_CHECK_SSL)
+ OPENSSL_MAJOR_VERSION STREQUAL "1"
+ )
+ SET(OPENSSL_FOUND TRUE)
++ ELSEIF(OPENSSL_INCLUDE_DIR AND
++ OPENSSL_LIBRARY AND
++ CRYPTO_LIBRARY AND
++ OPENSSL_MAJOR_VERSION STREQUAL "2"
++ )
++ SET(OPENSSL_FOUND TRUE)
+ ELSE()
+ SET(OPENSSL_FOUND FALSE)
+ ENDIF()
diff --git a/databases/mysql80-server/files/patch-cmd-line-utils_libedit_chartype.h b/databases/mysql80-server/files/patch-cmd-line-utils_libedit_chartype.h
new file mode 100644
index 000000000000..34fbf5a45509
--- /dev/null
+++ b/databases/mysql80-server/files/patch-cmd-line-utils_libedit_chartype.h
@@ -0,0 +1,11 @@
+--- cmd-line-utils/libedit/chartype.h.orig 2016-03-28 18:06:12 UTC
++++ cmd-line-utils/libedit/chartype.h
+@@ -49,7 +49,7 @@
+ TODO : Verify if FreeBSD & AIX stores ISO 10646 in wchar_t. */
+ #if !defined(__NetBSD__) && !defined(__sun) \
+ && !(defined(__APPLE__) && defined(__MACH__)) \
+- && !defined(__FreeBSD__) && !defined(_AIX)
++ && !defined(__FreeBSD__) && !defined(_AIX) && !defined(__DragonFly__)
+ #ifndef __STDC_ISO_10646__
+ /* In many places it is assumed that the first 127 code points are ASCII
+ * compatible, so ensure wchar_t indeed does ISO 10646 and not some other
diff --git a/databases/mysql80-server/files/patch-cmd-line-utils_libedit_vi.c b/databases/mysql80-server/files/patch-cmd-line-utils_libedit_vi.c
new file mode 100644
index 000000000000..cb3e255991ab
--- /dev/null
+++ b/databases/mysql80-server/files/patch-cmd-line-utils_libedit_vi.c
@@ -0,0 +1,20 @@
+--- cmd-line-utils/libedit/vi.c.orig 2016-03-28 18:06:12 UTC
++++ cmd-line-utils/libedit/vi.c
+@@ -919,7 +919,7 @@ vi_comment_out(EditLine *el, Int c __att
+ * NB: posix implies that we should enter insert mode, however
+ * this is against historical precedent...
+ */
+-#if defined(__weak_reference) && !defined(__FreeBSD__)
++#if defined(__weak_reference) && !defined(__FreeBSD__) && !defined(__DragonFly__)
+ __weakref_visible char *my_get_alias_text(const char *)
+ __weak_reference(get_alias_text);
+ #endif
+@@ -928,7 +928,7 @@ protected el_action_t
+ vi_alias(EditLine *el __attribute__((__unused__)),
+ Int c __attribute__((__unused__)))
+ {
+-#if defined(__weak_reference) && !defined(__FreeBSD__)
++#if defined(__weak_reference) && !defined(__FreeBSD__) && !defined(__DragonFly__)
+ char alias_name[3];
+ char *alias_text;
+
diff --git a/databases/mysql80-server/files/patch-include_CMakeLists.txt b/databases/mysql80-server/files/patch-include_CMakeLists.txt
new file mode 100644
index 000000000000..cb451ddc6ac4
--- /dev/null
+++ b/databases/mysql80-server/files/patch-include_CMakeLists.txt
@@ -0,0 +1,19 @@
+--- include/CMakeLists.txt.orig 2016-03-28 18:06:12 UTC
++++ include/CMakeLists.txt
+@@ -69,14 +69,13 @@ SET(HEADERS
+ ${HEADERS_GEN_CONFIGURE}
+ )
+
++IF(FALSE)
+ INSTALL(FILES
+ ../libbinlogevents/export/binary_log_types.h
+ DESTINATION ${INSTALL_INCLUDEDIR}
+- COMPONENT Development)
+-INSTALL(FILES ${HEADERS} DESTINATION ${INSTALL_INCLUDEDIR} COMPONENT Development)
+-INSTALL(DIRECTORY mysql/ DESTINATION ${INSTALL_INCLUDEDIR}/mysql COMPONENT Development
+ PATTERN "*.h"
+ PATTERN "psi_abi*" EXCLUDE
+ )
++ENDIF()
+
+
diff --git a/databases/mysql80-server/files/patch-include_my__compare.h b/databases/mysql80-server/files/patch-include_my__compare.h
new file mode 100644
index 000000000000..1a64142bb658
--- /dev/null
+++ b/databases/mysql80-server/files/patch-include_my__compare.h
@@ -0,0 +1,11 @@
+--- include/my_compare.h.orig 2016-03-28 18:06:12 UTC
++++ include/my_compare.h
+@@ -40,7 +40,7 @@ extern "C" {
+ 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/mysql80-server/files/patch-include_my__thread__os__id.h b/databases/mysql80-server/files/patch-include_my__thread__os__id.h
new file mode 100644
index 000000000000..60b111b88a10
--- /dev/null
+++ b/databases/mysql80-server/files/patch-include_my__thread__os__id.h
@@ -0,0 +1,15 @@
+--- include/my_thread_os_id.h.orig 2016-03-28 18:06:12 UTC
++++ include/my_thread_os_id.h
+@@ -75,8 +75,12 @@ static inline my_thread_os_id_t my_threa
+ 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/mysql80-server/files/patch-include_myisam.h b/databases/mysql80-server/files/patch-include_myisam.h
new file mode 100644
index 000000000000..0a4b795e9426
--- /dev/null
+++ b/databases/mysql80-server/files/patch-include_myisam.h
@@ -0,0 +1,11 @@
+--- include/myisam.h.orig 2016-03-28 18:06:12 UTC
++++ include/myisam.h
+@@ -45,7 +45,7 @@ extern "C" {
+ 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/mysql80-server/files/patch-libmysql_CMakeLists.txt b/databases/mysql80-server/files/patch-libmysql_CMakeLists.txt
new file mode 100644
index 000000000000..dd39fc7d8977
--- /dev/null
+++ b/databases/mysql80-server/files/patch-libmysql_CMakeLists.txt
@@ -0,0 +1,29 @@
+--- libmysql/CMakeLists.txt.orig 2016-03-28 18:06:12 UTC
++++ libmysql/CMakeLists.txt
+@@ -215,7 +215,7 @@ IF(WIN32)
+ ENDIF()
+
+ # Merge several convenience libraries into one big mysqlclient
+-MERGE_LIBRARIES(mysqlclient STATIC ${LIBS} COMPONENT Development)
++MERGE_LIBRARIES(mysqlclient STATIC ${LIBS} COMPONENT Development NOINSTALL)
+
+ # 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}
+ EXPORTS ${CLIENT_API_FUNCTIONS} ${CLIENT_API_FUNCTIONS_UNDOCUMENTED}
+- COMPONENT SharedLibraries)
++ COMPONENT SharedLibraries NOINSTALL)
++IF(FALSE)
+ IF(UNIX)
+ # libtool compatability
+ IF(CMAKE_SYSTEM_NAME MATCHES "FreeBSD" OR APPLE)
+@@ -313,6 +314,7 @@ ENDIF()
+ # to initialize api_calls[] array in api_test.c
+ #
+ SET(CLIENT_API_FUNCTION_LIST "")
++ ENDIF()
+ FOREACH(api ${CLIENT_API_FUNCTIONS})
+ SET(CLIENT_API_FUNCTION_LIST "${CLIENT_API_FUNCTION_LIST} ${api},")
+ ENDFOREACH()
diff --git a/databases/mysql80-server/files/patch-libservices_CMakeLists.txt b/databases/mysql80-server/files/patch-libservices_CMakeLists.txt
new file mode 100644
index 000000000000..bfd6118b5648
--- /dev/null
+++ b/databases/mysql80-server/files/patch-libservices_CMakeLists.txt
@@ -0,0 +1,9 @@
+--- libservices/CMakeLists.txt.orig 2016-03-28 18:06:12 UTC
++++ libservices/CMakeLists.txt
+@@ -35,4 +35,6 @@ SET(MYSQLSERVICES_SOURCES
+ mysql_keyring_service.c)
+
+ ADD_CONVENIENCE_LIBRARY(mysqlservices ${MYSQLSERVICES_SOURCES})
++IF(FALSE)
+ INSTALL(TARGETS mysqlservices DESTINATION ${INSTALL_LIBDIR} COMPONENT Development)
++ENDIF()
diff --git a/databases/mysql80-server/files/patch-man_CMakeLists.txt b/databases/mysql80-server/files/patch-man_CMakeLists.txt
new file mode 100644
index 000000000000..b771ae6214f0
--- /dev/null
+++ b/databases/mysql80-server/files/patch-man_CMakeLists.txt
@@ -0,0 +1,11 @@
+--- man/CMakeLists.txt.orig 2015-11-29 19:16:24 UTC
++++ man/CMakeLists.txt
+@@ -15,8 +15,6 @@
+
+ # Copy man pages
+ FILE(GLOB MAN1_FILES *.1)
+-FILE(GLOB MAN1_EXCLUDE make_win_bin_dist.1)
+-FILE(GLOB MAN1_NDB ndb*.1)
+ FILE(GLOB MAN8_FILES *.8)
+ FILE(GLOB MAN8_NDB ndb*.8)
+ IF(MAN1_FILES)
diff --git a/databases/mysql80-server/files/patch-mysys__ssl_my__default.cc b/databases/mysql80-server/files/patch-mysys__ssl_my__default.cc
new file mode 100644
index 000000000000..ea05679341fa
--- /dev/null
+++ b/databases/mysql80-server/files/patch-mysys__ssl_my__default.cc
@@ -0,0 +1,61 @@
+--- mysys_ssl/my_default.cc.orig 2016-08-25 11:52:06 UTC
++++ mysys_ssl/my_default.cc
+@@ -114,7 +114,7 @@ static my_bool defaults_already_read= FA
+
+ /* 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;
+
+@@ -914,6 +914,14 @@ static int search_default_file_with_ext(
+ 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++;
+@@ -1252,7 +1260,8 @@ void my_print_default_files(const char *
+ end[(strlen(end)-1)] = ' ';
+ else
+ strxmov(end, conf_file, *ext , " ", NullS);
+- fputs(name, stdout);
++ if (strstr(name, "/etc") != name)
++ fputs(name, stdout);
+ }
+ }
+ }
+@@ -1411,13 +1420,8 @@ static const char **init_default_directo
+
+ #else
+
+- errors += add_directory(alloc, "/etc/", dirs);
+- errors += add_directory(alloc, "/etc/mysql/", dirs);
+-
+-#if defined(DEFAULT_SYSCONFDIR)
+- if (DEFAULT_SYSCONFDIR[0])
+- errors += add_directory(alloc, DEFAULT_SYSCONFDIR, dirs);
+-#endif /* DEFAULT_SYSCONFDIR */
++ errors += add_directory(alloc, "/usr/local/etc/", dirs);
++ errors += add_directory(alloc, "/usr/local/etc/mysql/", dirs);
+
+ #endif
+
+@@ -1488,7 +1492,7 @@ int check_file_permissions(const char *f
+ MY_STAT stat_info;
+
+ if (!my_stat(file_name,&stat_info,MYF(0)))
+- return 1;
++ return 0;
+ /*
+ Ignore .mylogin.cnf file if not exclusively readable/writable
+ by current user.
diff --git a/databases/mysql80-server/files/patch-plugin_password__validation_validate__password.cc b/databases/mysql80-server/files/patch-plugin_password__validation_validate__password.cc
new file mode 100644
index 000000000000..47fc0dc6b7e5
--- /dev/null
+++ b/databases/mysql80-server/files/patch-plugin_password__validation_validate__password.cc
@@ -0,0 +1,11 @@
+--- plugin/password_validation/validate_password.cc.orig 2016-03-28 18:06:12 UTC
++++ plugin/password_validation/validate_password.cc
+@@ -18,6 +18,8 @@
+ #include <mysql/plugin_validate_password.h>
+ #include <mysql/service_my_plugin_log.h>
+ #include <mysql/service_mysql_string.h>
++/* solve clash between libc++ bitset::test() and test macro from my_global.h */
++#undef test
+ #include <set>
+ #include <iostream>
+ #include <fstream>
diff --git a/databases/mysql80-server/files/patch-rapid_plugin_x_CMakeLists.txt b/databases/mysql80-server/files/patch-rapid_plugin_x_CMakeLists.txt
new file mode 100644
index 000000000000..7dddb54da652
--- /dev/null
+++ b/databases/mysql80-server/files/patch-rapid_plugin_x_CMakeLists.txt
@@ -0,0 +1,20 @@
+--- rapid/plugin/x/CMakeLists.txt.orig 2016-03-28 18:06:12 UTC
++++ rapid/plugin/x/CMakeLists.txt
+@@ -91,14 +91,14 @@ ELSE()
+ ${CMAKE_CURRENT_SOURCE_DIR}/ngs/include
+ ${CMAKE_SOURCE_DIR}/include #temporary
+ ${CMAKE_CURRENT_SOURCE_DIR}/include/mysql
+- ${SSL_INCLUDE_DIRS}
+- ${ZLIB_INCLUDE_DIR}
++ ${BOOST_INCLUDE_DIR}
+ )
+
+ INCLUDE_DIRECTORIES(SYSTEM
+- ${BOOST_INCLUDE_DIR}
+ ${PROTOBUF_INCLUDE_DIRS}
+ ${LIBEVENT_INCLUDE_DIR}
++ ${SSL_INCLUDE_DIRS}
++ ${ZLIB_INCLUDE_DIR}
+ )
+
+ IF(XPLUGIN_NO_LITE_PROTOBUF)
diff --git a/databases/mysql80-server/files/patch-rapid_plugin_x_mysqlx__configure.cmake b/databases/mysql80-server/files/patch-rapid_plugin_x_mysqlx__configure.cmake
new file mode 100644
index 000000000000..52828f00f631
--- /dev/null
+++ b/databases/mysql80-server/files/patch-rapid_plugin_x_mysqlx__configure.cmake
@@ -0,0 +1,15 @@
+--- rapid/plugin/x/mysqlx_configure.cmake.orig 2016-09-14 15:25:26 UTC
++++ rapid/plugin/x/mysqlx_configure.cmake
+@@ -29,6 +29,7 @@ CONFIGURE_FILE(${MYSQLX_PROJECT_DIR}/src
+ CONFIGURE_FILE(${MYSQLX_PROJECT_DIR}/src/mysqlx_version.h.in
+ ${CMAKE_CURRENT_BINARY_DIR}/generated/mysqlx_version.h )
+
++IF(FALSE)
+ INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/generated/mysqlx_error.h
+ DESTINATION ${INSTALL_INCLUDEDIR}
+ COMPONENT Developement)
+@@ -36,3 +37,4 @@ INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR
+ INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/generated/mysqlx_version.h
+ DESTINATION ${INSTALL_INCLUDEDIR}
+ COMPONENT Developement)
++ENDIF()
diff --git a/databases/mysql80-server/files/patch-rapid_unittest_gunit_xplugin_CMakeLists.txt b/databases/mysql80-server/files/patch-rapid_unittest_gunit_xplugin_CMakeLists.txt
new file mode 100644
index 000000000000..d968a7daa022
--- /dev/null
+++ b/databases/mysql80-server/files/patch-rapid_unittest_gunit_xplugin_CMakeLists.txt
@@ -0,0 +1,18 @@
+--- rapid/unittest/gunit/xplugin/CMakeLists.txt.orig 2016-03-28 18:06:12 UTC
++++ rapid/unittest/gunit/xplugin/CMakeLists.txt
+@@ -65,7 +65,6 @@ ENDIF()
+ ADD_DEFINITIONS(${GMOCK_CFLAGS} -DBOOST_ALL_NO_LIB -DBOOST_NO_AUTO_PTR -DUSE_MYSQLX_FULL_PROTO)
+
+ INCLUDE_DIRECTORIES(SYSTEM
+- ${BOOST_INCLUDE_DIR}
+ ${PROTOBUF_INCLUDE_DIRS}
+ ${SSL_INCLUDE_DIRS}
+ ${LIBEVENT_INCLUDE_DIR}
+@@ -75,6 +74,7 @@ INCLUDE_DIRECTORIES(SYSTEM
+ )
+
+ INCLUDE_DIRECTORIES(
++ ${BOOST_INCLUDE_DIR}
+ ${CMAKE_SOURCE_DIR}/testing/include
+ ${PROJECT_SOURCE_DIR}/rapid/plugin/x/ngs/include
+ ${PROJECT_SOURCE_DIR}/rapid/plugin/x/ngs/include/ngs
diff --git a/databases/mysql80-server/files/patch-scripts_CMakeLists.txt b/databases/mysql80-server/files/patch-scripts_CMakeLists.txt
new file mode 100644
index 000000000000..b8481a0aed4e
--- /dev/null
+++ b/databases/mysql80-server/files/patch-scripts_CMakeLists.txt
@@ -0,0 +1,36 @@
+--- scripts/CMakeLists.txt.orig 2016-03-28 18:06:12 UTC
++++ scripts/CMakeLists.txt
+@@ -347,6 +347,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()
+@@ -430,14 +432,13 @@ ELSE()
+ # On Unix, most of the files end up in the bin directory
+ SET(mysql_config_COMPONENT COMPONENT Development)
+
++
+ IF(WITH_SYSTEMD)
+ SET(BIN_SCRIPTS
+- mysql_config
+ mysqldumpslow
+ )
+ ELSE()
+ SET(BIN_SCRIPTS
+- mysql_config
+ mysqldumpslow
+ mysqld_multi
+ mysqld_safe
+@@ -471,7 +472,7 @@ ELSE()
+ 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})
+ CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${file}
+ ${CMAKE_CURRENT_BINARY_DIR}/${file} COPYONLY)
diff --git a/databases/mysql80-server/files/patch-sql_CMakeLists.txt b/databases/mysql80-server/files/patch-sql_CMakeLists.txt
new file mode 100644
index 000000000000..033958f32efb
--- /dev/null
+++ b/databases/mysql80-server/files/patch-sql_CMakeLists.txt
@@ -0,0 +1,11 @@
+--- sql/CMakeLists.txt.orig 2016-08-25 11:52:06 UTC
++++ sql/CMakeLists.txt
+@@ -24,6 +24,8 @@ INCLUDE_DIRECTORIES(
+ ${ZLIB_INCLUDE_DIR}
+ ${SSL_INCLUDE_DIRS}
+ ${CMAKE_BINARY_DIR}/sql
++ ${CMAKE_BINARY_DIR}/include
++ ${CMAKE_BINARY_DIR}
+ ${LZ4_INCLUDE_DIR}
+ )
+
diff --git a/databases/mysql80-server/files/patch-sql_conn__handler_socket__connection.cc b/databases/mysql80-server/files/patch-sql_conn__handler_socket__connection.cc
new file mode 100644
index 000000000000..c33d355fcf0a
--- /dev/null
+++ b/databases/mysql80-server/files/patch-sql_conn__handler_socket__connection.cc
@@ -0,0 +1,30 @@
+--- sql/conn_handler/socket_connection.cc.orig 2016-03-28 18:06:12 UTC
++++ sql/conn_handler/socket_connection.cc
+@@ -939,20 +939,23 @@ Channel_info* Mysqld_socket_listener::li
+ signal(SIGCHLD, SIG_DFL);
+ request_init(&req, RQ_DAEMON, m_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...
+ clean_exit() - same stupid thing ...
+ */
++ char *(*my_eval_client) (void *) = (char *(*) (void *)) eval_client;
+ syslog(LOG_AUTH | m_deny_severity,
+- "refused connect from %s", eval_client(&req));
++ "refused connect from %s", my_eval_client(&req));
+
+ if (req.sink)
+- (req.sink)(req.fd);
++ ((void (*)(int)) (req.sink))(req.fd);
+
+ mysql_socket_shutdown(listen_sock, SHUT_RDWR);
+ mysql_socket_close(listen_sock);
diff --git a/databases/mysql80-server/files/patch-sql_histograms_histogram.h b/databases/mysql80-server/files/patch-sql_histograms_histogram.h
new file mode 100644
index 000000000000..73256070a0a6
--- /dev/null
+++ b/databases/mysql80-server/files/patch-sql_histograms_histogram.h
@@ -0,0 +1,11 @@
+--- sql/histograms/histogram.h.orig 2017-01-05 16:18:44 UTC
++++ sql/histograms/histogram.h
+@@ -111,7 +111,7 @@ public:
+
+ // Typedefs.
+ template<typename T>
+-using value_map_allocator = Memroot_allocator<std::pair<T, ha_rows> >;
++using value_map_allocator = Memroot_allocator<std::pair<const T, ha_rows> >;
+
+ template<typename T>
+ using value_map_type = std::map<T, ha_rows, Histogram_comparator,
diff --git a/databases/mysql80-server/files/patch-sql_histograms_singleton.cc b/databases/mysql80-server/files/patch-sql_histograms_singleton.cc
new file mode 100644
index 000000000000..2682a96b1086
--- /dev/null
+++ b/databases/mysql80-server/files/patch-sql_histograms_singleton.cc
@@ -0,0 +1,11 @@
+--- sql/histograms/singleton.cc.orig 2017-01-05 16:22:30 UTC
++++ sql/histograms/singleton.cc
+@@ -126,7 +126,7 @@ bool Singleton<T>::histogram_to_json(Jso
+
+
+ template <class T>
+-bool Singleton<T>::create_json_bucket(const std::pair<T, double> &bucket,
++bool Singleton<T>::create_json_bucket(const std::pair<const T, double> &bucket,
+ Json_array *json_bucket)
+ {
+ // Value
diff --git a/databases/mysql80-server/files/patch-sql_histograms_singleton.h b/databases/mysql80-server/files/patch-sql_histograms_singleton.h
new file mode 100644
index 000000000000..ab5aae1f0edc
--- /dev/null
+++ b/databases/mysql80-server/files/patch-sql_histograms_singleton.h
@@ -0,0 +1,20 @@
+--- sql/histograms/singleton.h.orig 2017-01-05 16:21:18 UTC
++++ sql/histograms/singleton.h
+@@ -89,7 +89,7 @@ private:
+
+ /// The buckets for this histogram [key, cumulative frequency].
+ std::map<const T, double, Histogram_comparator,
+- Memroot_allocator<std::pair<T, double> > > m_buckets;
++ Memroot_allocator<std::pair<const T, double> > > m_buckets;
+ public:
+ /**
+ Singleton constructor.
+@@ -162,7 +162,7 @@ private:
+
+ @return true on error, false otherwise
+ */
+- static bool create_json_bucket(const std::pair<T, double> &bucket,
++ static bool create_json_bucket(const std::pair<const T, double> &bucket,
+ Json_array *json_bucket);
+ };
+
diff --git a/databases/mysql80-server/files/patch-sql_json__dom.h b/databases/mysql80-server/files/patch-sql_json__dom.h
new file mode 100644
index 000000000000..54718af16065
--- /dev/null
+++ b/databases/mysql80-server/files/patch-sql_json__dom.h
@@ -0,0 +1,11 @@
+--- sql/json_dom.h.orig 2017-01-05 16:09:35 UTC
++++ sql/json_dom.h
+@@ -337,7 +337,7 @@ struct Json_key_comparator
+ Json_object class.
+ */
+ typedef std::map<std::string, Json_dom *, Json_key_comparator,
+- Malloc_allocator<std::pair<std::string, Json_dom *> > > Json_object_map;
++ Malloc_allocator<std::pair<const std::string, Json_dom *> > > Json_object_map;
+
+ /**
+ Represents a JSON container value of type "object" (ECMA), type
diff --git a/databases/mysql80-server/files/patch-sql_sys__vars.cc b/databases/mysql80-server/files/patch-sql_sys__vars.cc
new file mode 100644
index 000000000000..e21d62430970
--- /dev/null
+++ b/databases/mysql80-server/files/patch-sql_sys__vars.cc
@@ -0,0 +1,38 @@
+--- sql/sys_vars.cc.orig 2016-03-28 18:06:12 UTC
++++ sql/sys_vars.cc
+@@ -1734,7 +1734,7 @@ static Sys_var_ulong Sys_interactive_tim
+ "connection before closing it",
+ SESSION_VAR(net_interactive_timeout),
+ CMD_LINE(REQUIRED_ARG),
+- VALID_RANGE(1, LONG_TIMEOUT), DEFAULT(NET_WAIT_TIMEOUT), BLOCK_SIZE(1));
++ VALID_RANGE(1, INT_MAX32/1000), DEFAULT(NET_WAIT_TIMEOUT), BLOCK_SIZE(1));
+
+ static Sys_var_ulong Sys_join_buffer_size(
+ "join_buffer_size",
+@@ -2552,7 +2552,7 @@ static Sys_var_ulong Sys_net_read_timeou
+ "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(0),
+ ON_UPDATE(fix_net_read_timeout));
+
+@@ -2568,7 +2568,7 @@ static Sys_var_ulong Sys_net_write_timeo
+ "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(0),
+ ON_UPDATE(fix_net_write_timeout));
+
+@@ -4083,7 +4083,7 @@ static Sys_var_ulong Sys_net_wait_timeou
+ "The number of seconds the server waits for activity on a "
+ "connection before closing it",
+ SESSION_VAR(net_wait_timeout), CMD_LINE(REQUIRED_ARG),
+- VALID_RANGE(1, IF_WIN(INT_MAX32/1000, LONG_TIMEOUT)),
++ VALID_RANGE(1, INT_MAX32/1000),
+ DEFAULT(NET_WAIT_TIMEOUT), BLOCK_SIZE(1));
+
+ static Sys_var_plugin Sys_default_storage_engine(
diff --git a/databases/mysql80-server/files/patch-storage_innobase_buf_buf0buf.cc b/databases/mysql80-server/files/patch-storage_innobase_buf_buf0buf.cc
new file mode 100644
index 000000000000..0a3b1944f50e
--- /dev/null
+++ b/databases/mysql80-server/files/patch-storage_innobase_buf_buf0buf.cc
@@ -0,0 +1,11 @@
+--- storage/innobase/buf/buf0buf.cc.orig 2016-03-28 18:06:12 UTC
++++ storage/innobase/buf/buf0buf.cc
+@@ -338,7 +338,7 @@ typedef std::map<
+ const byte*,
+ buf_chunk_t*,
+ std::less<const byte*>,
+- ut_allocator<std::pair<const byte*, buf_chunk_t*> > >
++ ut_allocator<std::pair<const byte* const, buf_chunk_t*> > >
+ buf_pool_chunk_map_t;
+
+ static buf_pool_chunk_map_t* buf_chunk_map_reg;
diff --git a/databases/mysql80-server/files/patch-storage_innobase_dict_dict0stats.cc b/databases/mysql80-server/files/patch-storage_innobase_dict_dict0stats.cc
new file mode 100644
index 000000000000..879e91a116fb
--- /dev/null
+++ b/databases/mysql80-server/files/patch-storage_innobase_dict_dict0stats.cc
@@ -0,0 +1,11 @@
+--- storage/innobase/dict/dict0stats.cc.orig 2016-03-28 18:06:12 UTC
++++ storage/innobase/dict/dict0stats.cc
+@@ -139,7 +139,7 @@ then we would store 5,7,10,11,12 in the
+ typedef std::vector<ib_uint64_t, ut_allocator<ib_uint64_t> > boundaries_t;
+
+ /** Allocator type used for index_map_t. */
+-typedef ut_allocator<std::pair<const char*, dict_index_t*> >
++typedef ut_allocator<std::pair<const char* const, dict_index_t*> >
+ index_map_t_allocator;
+
+ /** Auxiliary map used for sorting indexes by name in dict_stats_save(). */
diff --git a/databases/mysql80-server/files/patch-storage_innobase_include_srv0mon.h b/databases/mysql80-server/files/patch-storage_innobase_include_srv0mon.h
new file mode 100644
index 000000000000..8abbfcb04a31
--- /dev/null
+++ b/databases/mysql80-server/files/patch-storage_innobase_include_srv0mon.h
@@ -0,0 +1,13 @@
+--- storage/innobase/include/srv0mon.h.orig 2016-03-28 18:06:12 UTC
++++ storage/innobase/include/srv0mon.h
+@@ -34,6 +34,10 @@ Created 12/15/2009 Jimmy Yang
+ /* 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 <machine/int_limits.h>
++#endif
+
+ #include <stdint.h>
+
diff --git a/databases/mysql80-server/files/patch-storage_innobase_sync_sync0debug.cc b/databases/mysql80-server/files/patch-storage_innobase_sync_sync0debug.cc
new file mode 100644
index 000000000000..b9dbdedf057f
--- /dev/null
+++ b/databases/mysql80-server/files/patch-storage_innobase_sync_sync0debug.cc
@@ -0,0 +1,11 @@
+--- storage/innobase/sync/sync0debug.cc.orig 2016-03-28 18:06:12 UTC
++++ storage/innobase/sync/sync0debug.cc
+@@ -1702,7 +1702,7 @@ private:
+ const void*,
+ File,
+ std::less<const void*>,
+- ut_allocator<std::pair<const void*, File> > >
++ ut_allocator<std::pair<const void* const, File> > >
+ Files;
+
+ typedef OSMutex Mutex;
diff --git a/databases/mysql80-server/files/patch-storage_innobase_trx_trx0purge.cc b/databases/mysql80-server/files/patch-storage_innobase_trx_trx0purge.cc
new file mode 100644
index 000000000000..5b062e2fad03
--- /dev/null
+++ b/databases/mysql80-server/files/patch-storage_innobase_trx_trx0purge.cc
@@ -0,0 +1,11 @@
+--- storage/innobase/trx/trx0purge.cc.orig 2017-01-05 13:57:29 UTC
++++ storage/innobase/trx/trx0purge.cc
+@@ -1668,7 +1668,7 @@ trx_purge_attach_undo_recs(
+ using GroupBy = std::map<
+ table_id_t, purge_node_t::Recs*,
+ std::less<table_id_t>,
+- mem_heap_allocator<std::pair<table_id_t, purge_node_t::Recs*>>>;
++ mem_heap_allocator<std::pair<const table_id_t, purge_node_t::Recs*>>>;
+
+ GroupBy group_by{
+ GroupBy::key_compare{},
diff --git a/databases/mysql80-server/files/patch-storage_innobase_trx_trx0trx.cc b/databases/mysql80-server/files/patch-storage_innobase_trx_trx0trx.cc
new file mode 100644
index 000000000000..e6ec64cb5e1f
--- /dev/null
+++ b/databases/mysql80-server/files/patch-storage_innobase_trx_trx0trx.cc
@@ -0,0 +1,11 @@
+--- storage/innobase/trx/trx0trx.cc.orig 2017-01-05 15:43:29 UTC
++++ storage/innobase/trx/trx0trx.cc
+@@ -63,7 +63,7 @@ typedef std::set<
+ typedef std::map<
+ trx_t*, table_id_set,
+ std::less<trx_t*>,
+- ut_allocator<table_id_set> > trx_table_map;
++ ut_allocator<std::pair<trx_t* const, table_id_set>> > trx_table_map;
+
+ /** Map of resurrected transactions to affected table_id */
+ static trx_table_map resurrected_trx_tables;
diff --git a/databases/mysql80-server/files/patch-storage_myisam_mi__dynrec.c b/databases/mysql80-server/files/patch-storage_myisam_mi__dynrec.c
new file mode 100644
index 000000000000..282cffdbcbc5
--- /dev/null
+++ b/databases/mysql80-server/files/patch-storage_myisam_mi__dynrec.c
@@ -0,0 +1,23 @@
+--- storage/myisam/mi_dynrec.c.orig 2016-03-28 18:06:12 UTC
++++ storage/myisam/mi_dynrec.c
+@@ -65,18 +65,13 @@ my_bool mi_dynmap_file(MI_INFO *info, my
+ DBUG_RETURN(1);
+ }
+ /*
+- 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(0, (size_t) size,
+ info->s->mode==O_RDONLY ? PROT_READ :
+ PROT_READ | PROT_WRITE,
+- MAP_SHARED | MAP_NORESERVE,
++ MAP_SHARED,
+ info->dfile, 0L);
+ if (info->s->file_map == (uchar*) MAP_FAILED)
+ {
diff --git a/databases/mysql80-server/files/patch-support-files_CMakeLists.txt b/databases/mysql80-server/files/patch-support-files_CMakeLists.txt
new file mode 100644
index 000000000000..1d1999212ed5
--- /dev/null
+++ b/databases/mysql80-server/files/patch-support-files_CMakeLists.txt
@@ -0,0 +1,12 @@
+--- support-files/CMakeLists.txt.orig 2016-03-28 18:06:12 UTC
++++ support-files/CMakeLists.txt
+@@ -69,7 +69,9 @@ IF(UNIX)
+ INSTALL(FILES magic DESTINATION ${inst_location} COMPONENT SupportFiles)
+ ENDIF()
+
++IF(FALSE)
+ INSTALL(FILES mysql.m4 DESTINATION ${INSTALL_SHAREDIR}/aclocal COMPONENT Development)
++ENDIF()
+
+ SET(bindir ${prefix}/${INSTALL_BINDIR})
+ SET(sbindir ${prefix}/${INSTALL_SBINDIR})
diff --git a/databases/mysql80-server/files/rapid_plugin-patch-_x_mysqlxtest__src_mysqlxtest.cc b/databases/mysql80-server/files/rapid_plugin-patch-_x_mysqlxtest__src_mysqlxtest.cc
new file mode 100644
index 000000000000..078f3106848b
--- /dev/null
+++ b/databases/mysql80-server/files/rapid_plugin-patch-_x_mysqlxtest__src_mysqlxtest.cc
@@ -0,0 +1,12 @@
+--- rapid/plugin/x/mysqlxtest_src/mysqlxtest.cc.orig 2016-03-28 18:06:12 UTC
++++ rapid/plugin/x/mysqlxtest_src/mysqlxtest.cc
+@@ -1661,7 +1661,8 @@ private:
+ if (2 == argl.size())
+ tolerance = atoi(argl[1].c_str());
+
+- if (abs(expected_msec - msec) > tolerance)
++#define my_abs_64(x) ((x) < 0 ? (-x) : (x))
++ if (my_abs_64((expected_msec - msec)) > tolerance)
+ {
+ std::cerr << "Timeout should occur after " << expected_msec << "ms, but it was " << msec <<"ms. \n";
+ return Stop_with_failure;
diff --git a/databases/mysql80-server/pkg-descr b/databases/mysql80-server/pkg-descr
new file mode 100644
index 000000000000..872bbdcaf778
--- /dev/null
+++ b/databases/mysql80-server/pkg-descr
@@ -0,0 +1,15 @@
+MySQL is a very fast, multi-threaded, multi-user and robust SQL
+(Structured Query Language) database server.
+The new features in MySQL 8.0. In addition to Data Dictionnary and CTEs are:
+ Move to utf8(mb4) as MySQL's default character set
+ Language specific case insensitive collation for 21 languages (utf8)
+ Invisible index
+ Descending indexes
+ Improve usability of UUID and IPV6 manipulations
+ SQL roles - SET PERSIST for global variable values
+ Performance Schema, instrumenting data locks
+ Performance Schema, instrumenting error messages
+ Improved cost model with histograms
+
+
+WWW: http://www.mysql.com/
diff --git a/databases/mysql80-server/pkg-message b/databases/mysql80-server/pkg-message
new file mode 100644
index 000000000000..02103edffd0d
--- /dev/null
+++ b/databases/mysql80-server/pkg-message
@@ -0,0 +1,16 @@
+*****************************************************************************
+
+Remember to run mysql_upgrade the first time you start the MySQL server
+after an upgrade from an earlier version.
+
+Initial password for first time use of MySQL is saved in $HOME/.mysql_secret
+ie. when you want to use "mysql -u root -p" first you should see password
+in /root/.mysql_secret
+
+*****************************************************************************
+
+*****************************************************************************
+
+WARNING: THIS IS STILL-IN-DEV PROJECT! USE WITH CAUTION ON PRODUCTION ENVS!
+
+*****************************************************************************
diff --git a/databases/mysql80-server/pkg-plist b/databases/mysql80-server/pkg-plist
new file mode 100644
index 000000000000..bbb6b12c50cb
--- /dev/null
+++ b/databases/mysql80-server/pkg-plist
@@ -0,0 +1,160 @@
+bin/ibd2sdi
+bin/innochecksum
+bin/my_print_defaults
+bin/myisam_ftdump
+bin/myisamchk
+bin/myisamlog
+bin/myisampack
+bin/mysql_secure_installation
+bin/mysql_tzinfo_to_sql
+bin/mysql_upgrade
+bin/mysqld_multi
+bin/mysqld_safe
+bin/mysqldumpslow
+bin/mysqltest
+bin/mysqlxtest
+bin/perror
+bin/replace
+bin/resolve_stack_dump
+bin/resolveip
+lib/mysql/libmysqld.a
+lib/mysql/plugin/adt_null.so
+lib/mysql/plugin/auth.so
+lib/mysql/plugin/auth_test_plugin.so
+lib/mysql/plugin/component_example_component1.so
+lib/mysql/plugin/component_example_component2.so
+lib/mysql/plugin/component_example_component3.so
+lib/mysql/plugin/daemon_example.ini
+%%NO_EXAMPLE%%lib/mysql/plugin/ha_example.so
+lib/mysql/plugin/keyring_file.so
+lib/mysql/plugin/libdaemon_example.so
+lib/mysql/plugin/libtest_framework.so
+lib/mysql/plugin/libtest_services.so
+lib/mysql/plugin/libtest_services_threaded.so
+lib/mysql/plugin/libtest_session_detach.so
+lib/mysql/plugin/libtest_session_in_thd.so
+lib/mysql/plugin/libtest_session_info.so
+lib/mysql/plugin/libtest_sql_2_sessions.so
+lib/mysql/plugin/libtest_sql_all_col_types.so
+lib/mysql/plugin/libtest_sql_cmds_1.so
+lib/mysql/plugin/libtest_sql_commit.so
+lib/mysql/plugin/libtest_sql_complex.so
+lib/mysql/plugin/libtest_sql_errors.so
+lib/mysql/plugin/libtest_sql_lock.so
+lib/mysql/plugin/libtest_sql_processlist.so
+lib/mysql/plugin/libtest_sql_replication.so
+lib/mysql/plugin/libtest_sql_shutdown.so
+lib/mysql/plugin/libtest_sql_sqlmode.so
+lib/mysql/plugin/libtest_sql_stored_procedures_functions.so
+lib/mysql/plugin/libtest_sql_views_triggers.so
+lib/mysql/plugin/libtest_x_sessions_deinit.so
+lib/mysql/plugin/libtest_x_sessions_init.so
+lib/mysql/plugin/locking_service.so
+lib/mysql/plugin/mypluglib.so
+lib/mysql/plugin/mysql_no_login.so
+lib/mysql/plugin/mysqlx.so
+lib/mysql/plugin/qa_auth_client.so
+lib/mysql/plugin/qa_auth_interface.so
+lib/mysql/plugin/qa_auth_server.so
+lib/mysql/plugin/replication_observers_example_plugin.so
+lib/mysql/plugin/rewrite_example.so
+lib/mysql/plugin/rewriter.so
+lib/mysql/plugin/semisync_master.so
+lib/mysql/plugin/semisync_slave.so
+lib/mysql/plugin/test_security_context.so
+lib/mysql/plugin/keyring_udf.so
+lib/mysql/plugin/test_udf_services.so
+lib/mysql/plugin/validate_password.so
+lib/mysql/plugin/version_token.so
+libdata/pkgconfig/LIBMYSQL_OS_OUTPUT_NAME-NOTFOUND.pc
+libexec/mysqld
+man/man1/my_print_defaults.1.gz
+man/man1/myisam_ftdump.1.gz
+man/man1/myisamchk.1.gz
+man/man1/myisamlog.1.gz
+man/man1/myisampack.1.gz
+man/man1/mysql.server.1.gz
+man/man1/mysql_secure_installation.1.gz
+man/man1/mysql_tzinfo_to_sql.1.gz
+man/man1/mysql_upgrade.1.gz
+man/man1/mysqld_multi.1.gz
+man/man1/mysqld_safe.1.gz
+man/man1/mysqldumpslow.1.gz
+man/man1/mysqlman.1.gz
+man/man1/mysqltest.1.gz
+man/man1/perror.1.gz
+man/man1/replace.1.gz
+man/man1/resolve_stack_dump.1.gz
+man/man1/resolveip.1.gz
+man/man8/mysqld.8.gz
+%%DATADIR%%/bulgarian/errmsg.sys
+%%DATADIR%%/charsets/Index.xml
+%%DATADIR%%/charsets/README
+%%DATADIR%%/charsets/armscii8.xml
+%%DATADIR%%/charsets/ascii.xml
+%%DATADIR%%/charsets/cp1250.xml
+%%DATADIR%%/charsets/cp1251.xml
+%%DATADIR%%/charsets/cp1256.xml
+%%DATADIR%%/charsets/cp1257.xml
+%%DATADIR%%/charsets/cp850.xml
+%%DATADIR%%/charsets/cp852.xml
+%%DATADIR%%/charsets/cp866.xml
+%%DATADIR%%/charsets/dec8.xml
+%%DATADIR%%/charsets/geostd8.xml
+%%DATADIR%%/charsets/greek.xml
+%%DATADIR%%/charsets/hebrew.xml
+%%DATADIR%%/charsets/hp8.xml
+%%DATADIR%%/charsets/keybcs2.xml
+%%DATADIR%%/charsets/koi8r.xml
+%%DATADIR%%/charsets/koi8u.xml
+%%DATADIR%%/charsets/latin1.xml
+%%DATADIR%%/charsets/latin2.xml
+%%DATADIR%%/charsets/latin5.xml
+%%DATADIR%%/charsets/latin7.xml
+%%DATADIR%%/charsets/macce.xml
+%%DATADIR%%/charsets/macroman.xml
+%%DATADIR%%/charsets/swe7.xml
+%%DATADIR%%/czech/errmsg.sys
+%%DATADIR%%/danish/errmsg.sys
+%%DATADIR%%/dictionary.txt
+%%DATADIR%%/dutch/errmsg.sys
+%%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
+%%DATADIR%%/hungarian/errmsg.sys
+%%DATADIR%%/innodb_memcached_config.sql
+%%DATADIR%%/install_rewriter.sql
+%%DATADIR%%/italian/errmsg.sys
+%%DATADIR%%/japanese/errmsg.sys
+%%DATADIR%%/korean/errmsg.sys
+%%DATADIR%%/magic
+%%DATADIR%%/my-default.cnf
+%%DATADIR%%/mysql-log-rotate
+%%DATADIR%%/mysql.server
+%%DATADIR%%/mysql_security_commands.sql
+%%DATADIR%%/mysql_sys_schema.sql
+%%DATADIR%%/mysql_system_tables.sql
+%%DATADIR%%/mysql_system_tables_data.sql
+%%DATADIR%%/mysql_test_data_timezone.sql
+%%DATADIR%%/mysqld_multi.server
+%%DATADIR%%/norwegian-ny/errmsg.sys
+%%DATADIR%%/norwegian/errmsg.sys
+%%DATADIR%%/polish/errmsg.sys
+%%DATADIR%%/portuguese/errmsg.sys
+%%DATADIR%%/romanian/errmsg.sys
+%%DATADIR%%/russian/errmsg.sys
+%%DATADIR%%/serbian/errmsg.sys
+%%DATADIR%%/slovak/errmsg.sys
+%%DATADIR%%/spanish/errmsg.sys
+%%DATADIR%%/swedish/errmsg.sys
+%%DATADIR%%/ukrainian/errmsg.sys
+%%DATADIR%%/uninstall_rewriter.sql
+@dir lib/mysql/plugin/debug
+@sample(root,wheel,0644) %%ETCDIR%%/my.cnf.sample
+@dir(mysql,mysql,0750) %%ETCDIR%%/keyring
+@dir(mysql,mysql,0750) %%MY_SECDIR%%
+@dir(mysql,mysql,0750) %%MY_TMPDIR%%