commit:     a033f9e0dc35edad0a3d5f02b1caa0855aefadaf
Author:     Brian Evans <grknight <AT> gentoo <DOT> org>
AuthorDate: Tue Dec 11 17:33:44 2018 +0000
Commit:     Brian Evans <grknight <AT> gentoo <DOT> org>
CommitDate: Tue Dec 11 17:33:44 2018 +0000
URL:        https://gitweb.gentoo.org/proj/mysql-extras.git/commit/?id=a033f9e0

Restore jemalloc support on the server for 10.2 and 10.3 MariaDB

Signed-off-by: Brian Evans <grknight <AT> gentoo.org>

 20037_all_mariadb-10.2-restore-jemalloc.patch | 155 ++++++++++++++++++++++++++
 20037_all_mariadb-10.3-restore-jemalloc.patch | 130 +++++++++++++++++++++
 2 files changed, 285 insertions(+)

diff --git a/20037_all_mariadb-10.2-restore-jemalloc.patch 
b/20037_all_mariadb-10.2-restore-jemalloc.patch
new file mode 100644
index 0000000..0cf1fbb
--- /dev/null
+++ b/20037_all_mariadb-10.2-restore-jemalloc.patch
@@ -0,0 +1,155 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index be86adbf67b8..59dc149410f1 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -154,6 +154,7 @@ INCLUDE(ssl)
+ INCLUDE(readline)
+ INCLUDE(libutils)
+ INCLUDE(dtrace)
++INCLUDE(jemalloc)
+ INCLUDE(pcre)
+ INCLUDE(ctest)
+ INCLUDE(plugin)
+@@ -329,6 +328,7 @@ MYSQL_CHECK_SSL()
+ MYSQL_CHECK_READLINE()
+ 
+ SET(MALLOC_LIBRARY "system")
++CHECK_JEMALLOC()
+ 
+ CHECK_PCRE()
+ 
+diff --git a/include/my_global.h b/include/my_global.h
+index e4ca562772e0..30db38ce35b5 100644
+--- a/include/my_global.h
++++ b/include/my_global.h
+@@ -1071,7 +1071,6 @@ typedef ulong            myf;    /* Type of MyFlags in 
my_funcs */
+ #ifdef _WIN32
+ #define dlsym(lib, name) (void*)GetProcAddress((HMODULE)lib, name)
+ #define dlopen(libname, unused) LoadLibraryEx(libname, NULL, 0)
+-#define RTLD_DEFAULT GetModuleHandle(NULL)
+ #define dlclose(lib) FreeLibrary((HMODULE)lib)
+ static inline char *dlerror(void)
+ {
+diff --git a/sql/CMakeLists.txt b/sql/CMakeLists.txt
+index 814993355b0f..243468e095a3 100644
+--- a/sql/CMakeLists.txt
++++ b/sql/CMakeLists.txt
+@@ -170,7 +170,7 @@ ADD_DEPENDENCIES(sql GenServerSource)
+ ADD_DEPENDENCIES(sql GenDigestServerSource)
+ DTRACE_INSTRUMENT(sql)
+ TARGET_LINK_LIBRARIES(sql ${MYSQLD_STATIC_PLUGIN_LIBS} 
+-  mysys mysys_ssl dbug strings vio pcre
++  mysys mysys_ssl dbug strings vio pcre ${LIBJEMALLOC}
+   ${LIBWRAP} ${LIBCRYPT} ${LIBDL} ${CMAKE_THREAD_LIBS_INIT}
+   ${WSREP_LIB}
+   ${SSL_LIBRARIES}
+diff --git a/sql/sys_vars.cc b/sql/sys_vars.cc
+index d6b1c76ea004..fd724bc7dd16 100644
+--- a/sql/sys_vars.cc
++++ b/sql/sys_vars.cc
+@@ -3489,32 +3489,11 @@ static Sys_var_charptr Sys_version_compile_os(
+        CMD_LINE_HELP_ONLY,
+        IN_SYSTEM_CHARSET, DEFAULT(SYSTEM_TYPE));
+ 
+-static char *guess_malloc_library()
+-{
+-  if (strcmp(MALLOC_LIBRARY, "system") == 0)
+-  {
+-#ifdef HAVE_DLOPEN
+-    typedef int (*mallctl_type)(const char*, void*, size_t*, void*, size_t);
+-    mallctl_type mallctl_func;
+-    mallctl_func= (mallctl_type)dlsym(RTLD_DEFAULT, "mallctl");
+-    if (mallctl_func)
+-    {
+-      static char buf[128];
+-      char *ver;
+-      size_t len = sizeof(ver);
+-      mallctl_func("version", &ver, &len, NULL, 0);
+-      strxnmov(buf, sizeof(buf)-1, "jemalloc ", ver, NULL);
+-      return buf;
+-    }
+-#endif
+-  }
+-  return const_cast<char*>(MALLOC_LIBRARY);
+-}
+ static char *malloc_library;
+ static Sys_var_charptr Sys_malloc_library(
+        "version_malloc_library", "Version of the used malloc library",
+        READ_ONLY GLOBAL_VAR(malloc_library), CMD_LINE_HELP_ONLY,
+-       IN_SYSTEM_CHARSET, DEFAULT(guess_malloc_library()));
++       IN_SYSTEM_CHARSET, DEFAULT(MALLOC_LIBRARY));
+ 
+ #ifdef HAVE_YASSL
+ #include <openssl/ssl.h>
+diff --git a/storage/tokudb/CMakeLists.txt b/storage/tokudb/CMakeLists.txt
+index 4cfb177e495f..fd9a4790a7ea 100644
+--- a/storage/tokudb/CMakeLists.txt
++++ b/storage/tokudb/CMakeLists.txt
+@@ -5,8 +5,6 @@
+   RETURN()
+ ELSEIF(CMAKE_VERSION VERSION_LESS "2.8.9")
+   MESSAGE(STATUS "CMake 2.8.9 or higher is required by TokuDB")
+-ELSEIF(NOT HAVE_DLOPEN)
+-  MESSAGE(STATUS "dlopen is required by TokuDB")
+ ELSEIF(PLUGIN_PERFSCHEMA MATCHES "^NO$")
+   MESSAGE(STATUS "Performance Schema is required by TokuDB")
+   RETURN()
+@@ -37,8 +35,7 @@
+     tokudb_sysvars.cc
+     tokudb_thread.cc
+     tokudb_dir_cmd.cc)
+-MYSQL_ADD_PLUGIN(tokudb ${TOKUDB_SOURCES} STORAGE_ENGINE MODULE_ONLY
+-                 COMPONENT tokudb-engine CONFIG 
${CMAKE_CURRENT_BINARY_DIR}/tokudb.cnf)
++MYSQL_ADD_PLUGIN(tokudb ${TOKUDB_SOURCES} STORAGE_ENGINE MODULE_ONLY 
COMPONENT Server)
+ 
+ IF(NOT TARGET tokudb)
+   RETURN()
+@@ -57,27 +54,6 @@
+   GET_FILENAME_COMPONENT(LIBJEMALLOC_PATH ${LIBJEMALLOC_SO} REALPATH CACHE)
+ ENDIF()
+ 
+-IF(LIBJEMALLOC_PATH AND (RPM OR DEB))
+-  UNSET(LIBJEMALLOC)
+-  GET_DIRECTORY_PROPERTY(V DIRECTORY ${CMAKE_SOURCE_DIR} DEFINITION 
CPACK_RPM_tokudb-engine_PACKAGE_REQUIRES)
+-  SET(CPACK_RPM_tokudb-engine_PACKAGE_REQUIRES "${V} jemalloc" PARENT_SCOPE)
+-  SET(systemd_env "Environment=\"LD_PRELOAD=${LIBJEMALLOC_PATH}\"") #"
+-  SET(cnf_malloc_lib "malloc-lib=${LIBJEMALLOC_PATH}")
+-ELSEIF(LIBJEMALLOC_PATH)
+-  SET(systemd_env "#Environment=\"LD_PRELOAD=${LIBJEMALLOC_PATH}\"") #"
+-  SET(cnf_malloc_lib "#malloc-lib=${LIBJEMALLOC_PATH}")
+-ELSE()
+-  SET(systemd_env "#Environment=\"LD_PRELOAD=/path/to/libjemalloc.so\"") #"
+-  SET(cnf_malloc_lib "#malloc-lib=/path/to/libjemalloc.so")
+-ENDIF()
+-CONFIGURE_FILE(tokudb.cnf.in tokudb.cnf @ONLY)
+-CONFIGURE_FILE(tokudb.conf.in tokudb.conf @ONLY)
+-IF(INSTALL_SYSCONFDIR)
+-  INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/tokudb.conf
+-          DESTINATION ${INSTALL_SYSCONFDIR}/systemd/system/mariadb.service.d/
+-          COMPONENT tokudb-engine)
+-ENDIF()
+-
+ MY_CHECK_AND_SET_COMPILER_FLAG("-Wno-shadow")
+ MY_CHECK_AND_SET_COMPILER_FLAG("-Wno-vla" DEBUG)
+ MY_CHECK_AND_SET_COMPILER_FLAG("-Wno-implicit-fallthrough")
+@@ -154,7 +130,7 @@
+ 
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/${TOKU_FT_DIR_NAME}/portability)
+ 
+ TARGET_LINK_LIBRARIES(tokudb tokufractaltree_static tokuportability_static
+-                      ${ZLIB_LIBRARY} ${LIBJEMALLOC} stdc++)
++                      ${ZLIB_LIBRARY} stdc++)
+ 
+ SET(CMAKE_MODULE_LINKER_FLAGS_RELEASE "${CMAKE_MODULE_LINKER_FLAGS_RELEASE} 
-flto -fuse-linker-plugin")
+ SET(CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO 
"${CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO} -flto -fuse-linker-plugin")
+diff --git a/storage/tokudb/PerconaFT/tools/CMakeLists.txt 
b/storage/tokudb/PerconaFT/tools/CMakeLists.txt
+index f11b9f350d72..e62931524c9d 100644
+--- a/storage/tokudb/PerconaFT/tools/CMakeLists.txt
++++ b/storage/tokudb/PerconaFT/tools/CMakeLists.txt
+@@ -12,5 +12,5 @@ endforeach(tool)
+ # link in math.h library just for this tool.
+ target_link_libraries(ftverify m)
+ 
+-install(TARGETS tokuftdump      DESTINATION ${INSTALL_BINDIR} COMPONENT 
tokudb-engine)
+-install(TARGETS tokuft_logprint DESTINATION ${INSTALL_BINDIR} COMPONENT 
tokudb-engine)
++install(TARGETS tokuftdump      DESTINATION ${INSTALL_BINDIR} COMPONENT 
Server)
++install(TARGETS tokuft_logprint DESTINATION ${INSTALL_BINDIR} COMPONENT 
Server)

diff --git a/20037_all_mariadb-10.3-restore-jemalloc.patch 
b/20037_all_mariadb-10.3-restore-jemalloc.patch
new file mode 100644
index 0000000..e8d239b
--- /dev/null
+++ b/20037_all_mariadb-10.3-restore-jemalloc.patch
@@ -0,0 +1,130 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index be86adbf67b8..59dc149410f1 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -154,6 +154,7 @@ INCLUDE(ssl)
+ INCLUDE(readline)
+ INCLUDE(libutils)
+ INCLUDE(dtrace)
++INCLUDE(jemalloc)
+ INCLUDE(pcre)
+ INCLUDE(ctest)
+ INCLUDE(plugin)
+@@ -329,6 +328,7 @@ MYSQL_CHECK_SSL()
+ MYSQL_CHECK_READLINE()
+ 
+ SET(MALLOC_LIBRARY "system")
++CHECK_JEMALLOC()
+ 
+ CHECK_PCRE()
+ 
+diff --git a/include/my_global.h b/include/my_global.h
+index e4ca562772e0..30db38ce35b5 100644
+--- a/include/my_global.h
++++ b/include/my_global.h
+@@ -1071,7 +1071,6 @@ typedef ulong            myf;    /* Type of MyFlags in 
my_funcs */
+ #ifdef _WIN32
+ #define dlsym(lib, name) (void*)GetProcAddress((HMODULE)lib, name)
+ #define dlopen(libname, unused) LoadLibraryEx(libname, NULL, 0)
+-#define RTLD_DEFAULT GetModuleHandle(NULL)
+ #define dlclose(lib) FreeLibrary((HMODULE)lib)
+ static inline char *dlerror(void)
+ {
+diff --git a/sql/CMakeLists.txt b/sql/CMakeLists.txt
+index 814993355b0f..243468e095a3 100644
+--- a/sql/CMakeLists.txt
++++ b/sql/CMakeLists.txt
+@@ -170,7 +170,7 @@ ADD_DEPENDENCIES(sql GenServerSource)
+ ADD_DEPENDENCIES(sql GenDigestServerSource)
+ DTRACE_INSTRUMENT(sql)
+ TARGET_LINK_LIBRARIES(sql ${MYSQLD_STATIC_PLUGIN_LIBS} 
+-  mysys mysys_ssl dbug strings vio pcre
++  mysys mysys_ssl dbug strings vio pcre ${LIBJEMALLOC}
+   ${LIBWRAP} ${LIBCRYPT} ${LIBDL} ${CMAKE_THREAD_LIBS_INIT}
+   ${WSREP_LIB}
+   ${SSL_LIBRARIES}
+diff --git a/sql/sys_vars.cc b/sql/sys_vars.cc
+index d6b1c76ea004..fd724bc7dd16 100644
+--- a/sql/sys_vars.cc
++++ b/sql/sys_vars.cc
+@@ -3793,7 +3793,7 @@
+ static Sys_var_charptr Sys_malloc_library(
+        "version_malloc_library", "Version of the used malloc library",
+        READ_ONLY GLOBAL_VAR(malloc_library), CMD_LINE_HELP_ONLY,
+-       IN_SYSTEM_CHARSET, DEFAULT(guess_malloc_library()));
++       IN_SYSTEM_CHARSET, DEFAULT(MALLOC_LIBRARY));
+ 
+ static char *ssl_library;
+ static Sys_var_charptr Sys_ssl_library(
+diff --git a/storage/tokudb/CMakeLists.txt b/storage/tokudb/CMakeLists.txt
+index 4cfb177e495f..fd9a4790a7ea 100644
+--- a/storage/tokudb/CMakeLists.txt
++++ b/storage/tokudb/CMakeLists.txt
+@@ -5,8 +5,6 @@
+   RETURN()
+ ELSEIF(CMAKE_VERSION VERSION_LESS "2.8.9")
+   MESSAGE(STATUS "CMake 2.8.9 or higher is required by TokuDB")
+-ELSEIF(NOT HAVE_DLOPEN)
+-  MESSAGE(STATUS "dlopen is required by TokuDB")
+ ELSEIF(PLUGIN_PERFSCHEMA MATCHES "^NO$")
+   MESSAGE(STATUS "Performance Schema is required by TokuDB")
+   RETURN()
+@@ -37,8 +35,7 @@
+     tokudb_sysvars.cc
+     tokudb_thread.cc
+     tokudb_dir_cmd.cc)
+-MYSQL_ADD_PLUGIN(tokudb ${TOKUDB_SOURCES} STORAGE_ENGINE MODULE_ONLY
+-                 COMPONENT tokudb-engine CONFIG 
${CMAKE_CURRENT_BINARY_DIR}/tokudb.cnf)
++MYSQL_ADD_PLUGIN(tokudb ${TOKUDB_SOURCES} STORAGE_ENGINE MODULE_ONLY 
COMPONENT Server)
+ 
+ IF(NOT TARGET tokudb)
+   RETURN()
+@@ -57,27 +54,6 @@
+   GET_FILENAME_COMPONENT(LIBJEMALLOC_PATH ${LIBJEMALLOC_SO} REALPATH CACHE)
+ ENDIF()
+ 
+-IF(LIBJEMALLOC_PATH AND (RPM OR DEB))
+-  UNSET(LIBJEMALLOC)
+-  GET_DIRECTORY_PROPERTY(V DIRECTORY ${CMAKE_SOURCE_DIR} DEFINITION 
CPACK_RPM_tokudb-engine_PACKAGE_REQUIRES)
+-  SET(CPACK_RPM_tokudb-engine_PACKAGE_REQUIRES "${V} jemalloc" PARENT_SCOPE)
+-  SET(systemd_env "Environment=\"LD_PRELOAD=${LIBJEMALLOC_PATH}\"") #"
+-  SET(cnf_malloc_lib "malloc-lib=${LIBJEMALLOC_PATH}")
+-ELSEIF(LIBJEMALLOC_PATH)
+-  SET(systemd_env "#Environment=\"LD_PRELOAD=${LIBJEMALLOC_PATH}\"") #"
+-  SET(cnf_malloc_lib "#malloc-lib=${LIBJEMALLOC_PATH}")
+-ELSE()
+-  SET(systemd_env "#Environment=\"LD_PRELOAD=/path/to/libjemalloc.so\"") #"
+-  SET(cnf_malloc_lib "#malloc-lib=/path/to/libjemalloc.so")
+-ENDIF()
+-CONFIGURE_FILE(tokudb.cnf.in tokudb.cnf @ONLY)
+-CONFIGURE_FILE(tokudb.conf.in tokudb.conf @ONLY)
+-IF(INSTALL_SYSCONFDIR)
+-  INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/tokudb.conf
+-          DESTINATION ${INSTALL_SYSCONFDIR}/systemd/system/mariadb.service.d/
+-          COMPONENT tokudb-engine)
+-ENDIF()
+-
+ MY_CHECK_AND_SET_COMPILER_FLAG("-Wno-shadow")
+ MY_CHECK_AND_SET_COMPILER_FLAG("-Wno-vla" DEBUG)
+ MY_CHECK_AND_SET_COMPILER_FLAG("-Wno-implicit-fallthrough")
+@@ -154,7 +130,7 @@
+ 
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}/${TOKU_FT_DIR_NAME}/portability)
+ 
+ TARGET_LINK_LIBRARIES(tokudb tokufractaltree_static tokuportability_static
+-                      ${ZLIB_LIBRARY} ${LIBJEMALLOC} stdc++)
++                      ${ZLIB_LIBRARY} stdc++)
+ 
+ SET(CMAKE_MODULE_LINKER_FLAGS_RELEASE "${CMAKE_MODULE_LINKER_FLAGS_RELEASE} 
-flto -fuse-linker-plugin")
+ SET(CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO 
"${CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO} -flto -fuse-linker-plugin")
+diff --git a/storage/tokudb/PerconaFT/tools/CMakeLists.txt 
b/storage/tokudb/PerconaFT/tools/CMakeLists.txt
+index f11b9f350d72..e62931524c9d 100644
+--- a/storage/tokudb/PerconaFT/tools/CMakeLists.txt
++++ b/storage/tokudb/PerconaFT/tools/CMakeLists.txt
+@@ -12,5 +12,5 @@ endforeach(tool)
+ # link in math.h library just for this tool.
+ target_link_libraries(ftverify m)
+ 
+-install(TARGETS tokuftdump      DESTINATION ${INSTALL_BINDIR} COMPONENT 
tokudb-engine)
+-install(TARGETS tokuft_logprint DESTINATION ${INSTALL_BINDIR} COMPONENT 
tokudb-engine)
++install(TARGETS tokuftdump      DESTINATION ${INSTALL_BINDIR} COMPONENT 
Server)
++install(TARGETS tokuft_logprint DESTINATION ${INSTALL_BINDIR} COMPONENT 
Server)

Reply via email to