summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexey Bychko <alexey.bychko@mariadb.com>2021-10-21 15:51:35 +0700
committerAlexey Bychko <alexey.bychko@mariadb.com>2021-11-16 21:52:38 -0800
commit57c68068a771e338ccb456da55e8974fd38fa07d (patch)
tree3613e3d1a3823064047d07bdb7768c36f2fc9e3d
parentc5e09bf81a6b5c9c117611f81371a1d6393c45ae (diff)
downloadmariadb-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.txt1
-rw-r--r--cmake/galera_external.cmake62
-rw-r--r--cmake/package_name.cmake13
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}")