mirror of
https://github.com/MariaDB/server.git
synced 2026-05-09 08:34:28 +02:00
MDEV-16183 TokuDB tests fail on Fedora 28
jemalloc > 5.0.0 doesn't like to be linked with a dlopen-ed module. Don't link tokudb with jemalloc on Fedora 28, LD_PRELOAD it instead with mysqld_safe and with systemd.
This commit is contained in:
parent
cb21e117ba
commit
bb045e7931
3 changed files with 34 additions and 1 deletions
|
|
@ -35,7 +35,7 @@ SET(TOKUDB_SOURCES
|
|||
tokudb_thread.cc
|
||||
tokudb_dir_cmd.cc)
|
||||
MYSQL_ADD_PLUGIN(tokudb ${TOKUDB_SOURCES} STORAGE_ENGINE MODULE_ONLY
|
||||
COMPONENT tokudb-engine CONFIG tokudb.cnf)
|
||||
COMPONENT tokudb-engine CONFIG ${CMAKE_CURRENT_BINARY_DIR}/tokudb.cnf)
|
||||
|
||||
IF(NOT TARGET tokudb)
|
||||
RETURN()
|
||||
|
|
@ -46,6 +46,33 @@ CHECK_JEMALLOC()
|
|||
|
||||
IF(NOT LIBJEMALLOC)
|
||||
MESSAGE(WARNING "TokuDB is enabled, but jemalloc is not. This configuration is not supported")
|
||||
ELSEIF(LIBJEMALLOC STREQUAL jemalloc)
|
||||
FIND_LIBRARY(LIBJEMALLOC_SO jemalloc)
|
||||
IF(NOT LIBJEMALLOC_SO)
|
||||
MESSAGE(FATAL_ERROR "jemalloc is present, but cannot be found?")
|
||||
ENDIF()
|
||||
GET_FILENAME_COMPONENT(LIBJEMALLOC_PATH ${LIBJEMALLOC_SO} REALPATH CACHE)
|
||||
ENDIF()
|
||||
|
||||
IF(LIBJEMALLOC_PATH AND RPM MATCHES fedora28) # TODO check for jemalloc version
|
||||
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-vla" DEBUG)
|
||||
|
|
|
|||
|
|
@ -4,3 +4,6 @@
|
|||
|
||||
plugin-load-add=ha_tokudb.so
|
||||
|
||||
[mysqld_safe]
|
||||
# it might be necessary to uncomment the following line if jemalloc >= 5.0.0
|
||||
@cnf_malloc_lib@
|
||||
3
storage/tokudb/tokudb.conf.in
Normal file
3
storage/tokudb/tokudb.conf.in
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
[Service]
|
||||
# it might be necessary to uncomment the following line if jemalloc >= 5.0.0
|
||||
@systemd_env@
|
||||
Loading…
Add table
Add a link
Reference in a new issue