Hi, Alexey! On Nov 05, Alexey Bychko wrote:
revision-id: 50f43d46299 (mariadb-10.2.40-106-g50f43d46299) parent(s): 05c3dced861 author: Alexey Bychko committer: Alexey Bychko timestamp: 2021-10-22 16:30:56 +0700 message:
MDEV-14938 make buildbot to include galera into bintars
this commit adds cmake module to process external directory with built galera to include galera library and binaries into server build. it introduces new cmake variable EXT_GALERA_PATH representing relative or absolute path to compiled galera tree.
No compiled galera tree. This is useless. MDEV description says Currently bintars that buildbot produces don't contain libgalera_smm.so. Publishing scripts repackage bintars to add it. We want to produce correct packages in buildbot and release exactly what buildbot builds. It means, buildbot need to produce *exactly* what `prep` script was generating. `prep` script does not build galera. This is a completely separate step, `prep` only packages pre-existing galera files. It's enough to assume that there's ${EXT_GALERA_PATH}/garbd and ${EXT_GALERA_PATH}/libgalera_smm.so. Or if you want it to be really universal, make two different variables, cmake -DBINTAR_GARBD=/path/to/garbd -DBINTAR_LIBGALERA=/path/to/libgalera_smm.so This will work with a compiled galera tree, with installed galera package, with just garbd and libgalera_smm.so in $HOME, with everything.
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..64ddfc9c498 --- /dev/null +++ b/cmake/galera_external.cmake @@ -0,0 +1,75 @@ +# EXT_GALERA_PATH +# a path to built galera git tree +# or a path to unpacked binary tarball + +IF(WIN32 OR NOT EXT_GALERA_PATH)
why do you need WIN32 check here?
+ 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})
Why do you need this symlink?
+ +FIND_LIBRARY(GALERA_LIB + NAMES galera_smm galera_enterprise_smm + PATHS ${GALERA_PATH} + NO_DEFAULT_PATH + ) + +IF(NOT GALERA_LIB) + MESSAGE(FATAL_ERROR "Galera library not found in ${GALERA_PATH}") +ENDIF() + +INSTALL(PROGRAMS + ${GALERA_LIB} + DESTINATION lib + RENAME libgalera_smm.so + COMPONENT Server + ) + +INSTALL(PROGRAMS + ${GALERA_PATH}/garb/garbd + DESTINATION bin + COMPONENT Server + ) + +INSTALL(PROGRAMS + ${GALERA_PATH}/garb/files/garb-systemd + DESTINATION bin + COMPONENT Server + ) + +INSTALL(FILES + ${GALERA_PATH}/garb/files/garb.cnf + DESTINATION docs/galera + COMPONENT Server + )
MDEV description says Currently bintars that buildbot produces don't contain libgalera_smm.so. Publishing scripts repackage bintars to add it. We want to produce correct packages in buildbot and release exactly what buildbot builds. It means, buildbot need to produce *exactly* what `prep` script was generating. Meaning three galera files. Like: -rwxr-xr-x mariadb-10.2.40-linux-glibc_214-x86_64/bin/garbd -rw-r--r-- mariadb-10.2.40-linux-glibc_214-x86_64/lib/libgalera_smm.so lrwxrwxrwx mariadb-10.2.40-linux-glibc_214-x86_64/lib/galera/libgalera_smm.so -> ../libgalera_smm.so Nothing else. Also, please, verify that the generated directory inside the tarball matches the pattern above. And that the tarbal name does too.
+ +INSTALL(FILES + ${GALERA_PATH}/AUTHORS + ${GALERA_PATH}/COPYING + ${GALERA_PATH}/README + DESTINATION docs/galera/doc + COMPONENT Server + ) + +INSTALL(FILES + ${GALERA_PATH}/asio/LICENSE_1_0.txt + DESTINATION docs/galera/doc + RENAME LICENSE.asio + COMPONENT Server + ) + +INSTALL(FILES + ${GALERA_PATH}/chromium/LICENSE + DESTINATION docs/galera/doc + RENAME LICENSE.chromium + COMPONENT Server + ) +
Regards, Sergei VP of MariaDB Server Engineering and security@mariadb.org