maria-developers team mailing list archive
-
maria-developers team
-
Mailing list archive
-
Message #12975
Re: 50f43d46299: MDEV-14938 make buildbot to include galera into bintars
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@xxxxxxxxxxx