Source: galera-4 Version: 26.4.7-1 Tags: patch upstream User: debian-cr...@lists.debian.org Usertags: ftcbfs
galera-4 fails to cross build from source, because it runs the build architecture objdump on a host architecture ELF object. This is due to hard coding the build architecture objdump in galera/src/CMakeLists.txt. The solution here is to use ${CMAKE_OBJDUMP}, which refers to the correctly detected objdump for the host architecture. Beyond this, it also uses ldd, which is bound to fail during cross compilation. Almost the same effect can be achieved with objdump -x though, so I propose using it here as well. Please consider applying the attached patch as it makes galera-4 cross buildable. Helmut
--- galera-4-26.4.7.orig/galera/src/CMakeLists.txt +++ galera-4-26.4.7/galera/src/CMakeLists.txt @@ -116,14 +116,14 @@ -Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/galera-sym.map) add_custom_command(TARGET galera_smm POST_BUILD COMMAND - sh -c "! objdump -T ${CMAKE_BINARY_DIR}/libgalera_smm.so | grep asio 1> /dev/null" + sh -c "! ${CMAKE_OBJDUMP} -T ${CMAKE_BINARY_DIR}/libgalera_smm.so | grep asio 1> /dev/null" COMMENT "Checking library symbol visibility (hidden)" VERBATIM) else() set(GALERA_LINK_OPTIONS "") add_custom_command(TARGET galera_smm POST_BUILD COMMAND - sh -c "objdump -T ${CMAKE_BINARY_DIR}/libgalera_smm.so | grep asio 1> /dev/null" + sh -c "${CMAKE_OBJDUMP} -T ${CMAKE_BINARY_DIR}/libgalera_smm.so | grep asio 1> /dev/null" COMMENT "Checking library symbol visibility (not hidden)" VERBATIM) endif() @@ -132,7 +132,7 @@ message(STATUS "Building Galera without SSL") add_custom_command(TARGET galera_smm POST_BUILD COMMAND - sh -c "! (ldd ${CMAKE_BINARY_DIR}/libgalera_smm.so | grep crypto 1> /dev/null) && ! (ldd ${CMAKE_BINARY_DIR}/libgalera_smm.so | grep ssl 1> /dev/null)" + sh -c "! (${CMAKE_OBJDUMP} -x ${CMAKE_BINARY_DIR}/libgalera_smm.so | grep NEEDED.*crypto 1> /dev/null) && ! (${CMAKE_OBJDUMP} -x ${CMAKE_BINARY_DIR}/libgalera_smm.so | grep NEEDED.*ssl 1> /dev/null)" COMMENT "Verifying that library is not linked with SSL" VERBATIM) else() @@ -140,14 +140,14 @@ message(STATUS "Building Galera with static SSL") add_custom_command(TARGET galera_smm POST_BUILD COMMAND - sh -c "(objdump -t ${CMAKE_BINARY_DIR}/libgalera_smm.so | grep OPENSSL 1> /dev/null) && (objdump -t ${CMAKE_BINARY_DIR}/libgalera_smm.so | grep CRYPTO 1> /dev/null)" + sh -c "(${CMAKE_OBJDUMP} -t ${CMAKE_BINARY_DIR}/libgalera_smm.so | grep OPENSSL 1> /dev/null) && (${CMAKE_OBJDUMP} -t ${CMAKE_BINARY_DIR}/libgalera_smm.so | grep CRYPTO 1> /dev/null)" COMMENT "Verifying that library has OpenSSL linked statically" VERBATIM) else() message(STATUS "Building Galera with SSL") add_custom_command(TARGET galera_smm POST_BUILD COMMAND - sh -c "(ldd ${CMAKE_BINARY_DIR}/libgalera_smm.so | grep crypto 1> /dev/null) && (ldd ${CMAKE_BINARY_DIR}/libgalera_smm.so | grep ssl 1> /dev/null)" + sh -c "(${CMAKE_OBJDUMP} -x ${CMAKE_BINARY_DIR}/libgalera_smm.so | grep NEEDED.*crypto 1> /dev/null) && (${CMAKE_OBJDUMP} -x ${CMAKE_BINARY_DIR}/libgalera_smm.so | grep NEEDED.*ssl 1> /dev/null)" COMMENT "Verifying that library is linked with SSL" VERBATIM) endif()