mirror of
https://github.com/MariaDB/server.git
synced 2026-05-14 19:07:15 +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_thread.cc
|
||||||
tokudb_dir_cmd.cc)
|
tokudb_dir_cmd.cc)
|
||||||
MYSQL_ADD_PLUGIN(tokudb ${TOKUDB_SOURCES} STORAGE_ENGINE MODULE_ONLY
|
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)
|
IF(NOT TARGET tokudb)
|
||||||
RETURN()
|
RETURN()
|
||||||
|
|
@ -46,6 +46,33 @@ CHECK_JEMALLOC()
|
||||||
|
|
||||||
IF(NOT LIBJEMALLOC)
|
IF(NOT LIBJEMALLOC)
|
||||||
MESSAGE(WARNING "TokuDB is enabled, but jemalloc is not. This configuration is not supported")
|
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()
|
ENDIF()
|
||||||
|
|
||||||
MY_CHECK_AND_SET_COMPILER_FLAG("-Wno-vla" DEBUG)
|
MY_CHECK_AND_SET_COMPILER_FLAG("-Wno-vla" DEBUG)
|
||||||
|
|
|
||||||
|
|
@ -4,3 +4,6 @@
|
||||||
|
|
||||||
plugin-load-add=ha_tokudb.so
|
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