diff options
-rw-r--r-- | CMakeLists.txt | 1 | ||||
-rw-r--r-- | cmake/galera_external.cmake | 62 | ||||
-rw-r--r-- | cmake/package_name.cmake | 13 |
3 files changed, 75 insertions, 1 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 67216e0e443..1107013860c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -153,6 +153,7 @@ INCLUDE(mysql_version) INCLUDE(cpack_source_ignore_files) INCLUDE(install_layout) INCLUDE(wsrep) +INCLUDE(galera_external) # Add macros INCLUDE(character_sets) diff --git a/cmake/galera_external.cmake b/cmake/galera_external.cmake new file mode 100644 index 00000000000..27fc17b166b --- /dev/null +++ b/cmake/galera_external.cmake @@ -0,0 +1,62 @@ +# EXT_GALERA_PATH +# a path to built galera git tree +# or a path to unpacked binary tarball + +IF(NOT EXT_GALERA_PATH) + RETURN() +ENDIF() + +IF(NOT EXISTS ${EXT_GALERA_PATH}) + MESSAGE(FATAL_ERROR "Galera dir ${EXT_GALERA_PATH} does not exist!") +ENDIF() + +SET(GALERA_PATH ${CMAKE_SOURCE_DIR}/GALERASYM) +IF(EXISTS ${GALERA_PATH}) + FILE(REMOVE ${GALERA_PATH}) +ENDIF() +EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E create_symlink ${EXT_GALERA_PATH} ${GALERA_PATH}) + +FIND_LIBRARY(GALERA_LIB + NAMES galera_smm galera_enterprise_smm + PATHS ${GALERA_PATH} + NO_DEFAULT_PATH + PATH_SUFFIXES lib/galera + ) + +FIND_PROGRAM(GARBD + NAME garbd + PATHS ${GALERA_PATH} + NO_DEFAULT_PATH + PATH_SUFFIXES garb bin + ) + +IF(NOT GALERA_LIB) + MESSAGE(FATAL_ERROR "Galera library not found in ${GALERA_PATH}") +ENDIF() + +INSTALL(FILES + ${GALERA_LIB} + DESTINATION lib/galera + COMPONENT Server + ) + +GET_FILENAME_COMPONENT(LIBNAME ${GALERA_LIB} NAME) +INSTALL(CODE "EXECUTE_PROCESS(COMMAND + ${CMAKE_COMMAND} -E create_symlink + galera/${LIBNAME} libgalera_smm.so + )" + COMPONENT Server + ) + +INSTALL(FILES + libgalera_smm.so + DESTINATION lib + COMPONENT Server + ) + +INSTALL(PROGRAMS + ${GARBD} + DESTINATION bin + COMPONENT Server + ) + diff --git a/cmake/package_name.cmake b/cmake/package_name.cmake index b93641109c3..5bbb7160ceb 100644 --- a/cmake/package_name.cmake +++ b/cmake/package_name.cmake @@ -137,7 +137,18 @@ IF(NOT VERSION) SET(PRODUCT_TAG) ENDIF() - SET(package_name "mariadb${PRODUCT_TAG}-${VERSION}-${SYSTEM_NAME_AND_PROCESSOR}") + IF(EXT_GALERA_PATH) + EXECUTE_PROCESS (COMMAND ${CMAKE_C_COMPILER} -print-file-name=libc.so.6 + OUTPUT_VARIABLE GLIBC OUTPUT_STRIP_TRAILING_WHITESPACE) + GET_FILENAME_COMPONENT (GLIBC ${GLIBC} REALPATH) + GET_FILENAME_COMPONENT (GLIBC_VERSION ${GLIBC} NAME) + STRING (REPLACE "libc-" "" GLIBC_VERSION ${GLIBC_VERSION}) + STRING (REPLACE ".so" "" GLIBC_VERSION ${GLIBC_VERSION}) + STRING (REPLACE "." "" GLIBC_VERSION ${GLIBC_VERSION}) + SET(package_name "mariadb${PRODUCT_TAG}-${VERSION}-${CMAKE_SYSTEM_NAME}-glibc_${GLIBC_VERSION}-${CMAKE_SYSTEM_PROCESSOR}") + ELSE() + SET(package_name "mariadb${PRODUCT_TAG}-${VERSION}-${SYSTEM_NAME_AND_PROCESSOR}") + ENDIF() MESSAGE(STATUS "Packaging as: ${package_name}") |