GetGALERA.cmake 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. # Configure Galera build
  2. cmake_minimum_required ( VERSION 3.17 FATAL_ERROR )
  3. set ( GALERA_REPO "https://github.com/manticoresoftware/galera" )
  4. set ( GALERA_REV "dfce7662" )
  5. set ( GALERA_SRC_MD5 "c4afea2ccd88a53acb23261b71421958" ) # To update this, download the commit's zip from GitHub and calculate md5sum. If it doesn't work, take the one the CI build job returns when it fails
  6. set ( WSREP_REPO "https://github.com/percona/wsrep-API" )
  7. set ( WSREP_REV "2c211e1" ) # or "percona-3.x-5.7-v31"
  8. set ( WSREP_SRC_MD5 "da31c60185c0fb4a35cf5e092db82059" ) # or "cc77ccec1a8144a6d9009ac603400406" when use "percona..."
  9. set ( GALERA_GITHUB "${GALERA_REPO}/archive/${GALERA_REV}.zip" )
  10. set ( GALERA_BUNDLE "${LIBS_BUNDLE}/galera-${GALERA_REV}.zip" )
  11. set ( WSREP_GITHUB "${WSREP_REPO}/archive/${WSREP_REV}.zip" )
  12. set ( WSREP_BUNDLE "${LIBS_BUNDLE}/wsrep-${WSREP_REV}.zip" )
  13. if (DEFINED WITH_GALERA AND NOT WITH_GALERA) # already defined and required NOT to be used
  14. return ()
  15. endif ()
  16. # here WITH_GALERA is not defined, or explicitly required.
  17. set ( WITH_GALERA ON CACHE BOOL "Build and use Galera replication library" FORCE )
  18. add_feature_info ( Galera WITH_GALERA "replication of indexes" )
  19. # that will read galera location from the target and install it to final destination
  20. include ( printers ) # for diag
  21. function ( cache_galera_module_name )
  22. SET ( GALERA_SONAME "libgalera_manticore.so" CACHE STRING "Filename of galera replication library" )
  23. endfunction ()
  24. # that will find prebuilt, if any
  25. include ( update_bundle ) # that would actualize CMAKE_PREFIX_PATH with our cache
  26. if (PACK)
  27. set ( PACK_GALERA "$ENV{PACK_GALERA}" )
  28. endif ()
  29. if (PACK_GALERA)
  30. select_nearest_url ( GALERA_PLACE "galera" ${GALERA_BUNDLE} ${GALERA_GITHUB} )
  31. select_nearest_url ( WSREP_PLACE "wsrep" ${WSREP_BUNDLE} ${WSREP_GITHUB} ) # WSREP_PATH provides path to galera-imported for build
  32. configure_file ( ${MANTICORE_SOURCE_DIR}/cmake/galera-package.cmake.in galera-build/CMakeLists.txt @ONLY ) # consumes WSREP_PLACE, WSREP_SRC_MD5, GALERA_PLACE, GALERA_SRC_MD5, GALERA_REV
  33. configure_file ( ${MANTICORE_SOURCE_DIR}/cmake/galera-copy-package.sh.in galera-build/galera-copy-package.sh @ONLY )
  34. execute_process ( COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" . WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/galera-build )
  35. execute_process ( COMMAND ${CMAKE_COMMAND} --build . WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/galera-build )
  36. return ()
  37. endif ()
  38. find_package ( galera QUIET )
  39. set_package_properties ( galera PROPERTIES TYPE RUNTIME
  40. DESCRIPTION "provides support for replication"
  41. URL "${GALERA_REPO}"
  42. )
  43. if (TARGET galera::galera)
  44. diagst ( galera::galera "library found ready (no need to build)" )
  45. return ()
  46. endif ()
  47. # not found. Populate and build cache package for now and future usage.
  48. select_nearest_url ( GALERA_PLACE "galera" ${GALERA_BUNDLE} ${GALERA_GITHUB} )
  49. select_nearest_url ( WSREP_PLACE "wsrep" ${WSREP_BUNDLE} ${WSREP_GITHUB} ) # WSREP_PATH provides path to galera-imported for build
  50. get_build ( GALERA_BUILD galera )
  51. configure_file ( ${MANTICORE_SOURCE_DIR}/cmake/galera-imported.cmake.in galera-build/CMakeLists.txt @ONLY ) # consumes WSREP_PLACE, WSREP_SRC_MD5, GALERA_PLACE, GALERA_SRC_MD5, GALERA_REV, GALERA_BUILD
  52. execute_process ( COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" . WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/galera-build )
  53. execute_process ( COMMAND ${CMAKE_COMMAND} --build . WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/galera-build )
  54. find_package ( galera REQUIRED )
  55. diagst ( galera::galera "library was built and saved" )
  56. # tmp line to trigger CI - v2