diff options
author | Alexey Bychko <alexey.bychko@mariadb.com> | 2021-10-21 15:51:35 +0700 |
---|---|---|
committer | Alexey Bychko <alexey.bychko@mariadb.com> | 2021-11-16 21:52:38 -0800 |
commit | 57c68068a771e338ccb456da55e8974fd38fa07d (patch) | |
tree | 3613e3d1a3823064047d07bdb7768c36f2fc9e3d | |
parent | c5e09bf81a6b5c9c117611f81371a1d6393c45ae (diff) | |
download | mariadb-git-57c68068a771e338ccb456da55e8974fd38fa07d.tar.gz |
MDEV-14938 make buildbot to include galera into bintarsbb-10.2-MDEV-14938
this commit adds cmake module to process external directory with
galera binaries to include galera library and binaries into server
bintar.
it introduces new cmake variable EXT_GALERA_PATH representing relative
or absolute path to galera which can be either just files in directory,
compiled tree or unpacked tarball.
if EXT_GALERA_PATH is used, bintar name will include glibc version, for
example mariadb-10.2.42-linux-glibc_224-x86_64.tar.gz
-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}") |