← Back to team overview

maria-developers team mailing list archive

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